mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
combine inline parameter with change signature refactoring
EA-80956 - E: BaseRefactoringProcessor.run
This commit is contained in:
+33
-2
@@ -16,8 +16,8 @@
|
||||
package com.intellij.refactoring.inline;
|
||||
|
||||
import com.intellij.codeInsight.ExceptionUtil;
|
||||
import com.intellij.codeInspection.sameParameterValue.SameParameterValueInspection;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.psi.*;
|
||||
@@ -26,12 +26,18 @@ import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.refactoring.BaseRefactoringProcessor;
|
||||
import com.intellij.refactoring.changeSignature.ChangeSignatureProcessorBase;
|
||||
import com.intellij.refactoring.changeSignature.JavaChangeInfo;
|
||||
import com.intellij.refactoring.changeSignature.JavaChangeInfoImpl;
|
||||
import com.intellij.refactoring.changeSignature.ParameterInfoImpl;
|
||||
import com.intellij.refactoring.util.CanonicalTypes;
|
||||
import com.intellij.refactoring.util.InlineUtil;
|
||||
import com.intellij.refactoring.util.RefactoringUIUtil;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.usageView.UsageViewDescriptor;
|
||||
import com.intellij.usageView.UsageViewUtil;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -53,6 +59,9 @@ public class InlineParameterExpressionProcessor extends BaseRefactoringProcessor
|
||||
private final PsiCodeBlock myCallingBlock;
|
||||
private final boolean myCreateLocal;
|
||||
|
||||
private JavaChangeInfo myChangeInfo;
|
||||
private UsageInfo[] myChangeSignatureUsages;
|
||||
|
||||
public InlineParameterExpressionProcessor(final PsiCallExpression methodCall,
|
||||
final PsiMethod method,
|
||||
final PsiParameter parameter,
|
||||
@@ -147,6 +156,28 @@ public class InlineParameterExpressionProcessor extends BaseRefactoringProcessor
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
final PsiParameter[] parameters = myMethod.getParameterList().getParameters();
|
||||
final List<ParameterInfoImpl> psiParameters = new ArrayList<ParameterInfoImpl>();
|
||||
int paramIdx = 0;
|
||||
final String paramName = myParameter.getName();
|
||||
for (PsiParameter param : parameters) {
|
||||
if (!Comparing.strEqual(paramName, param.getName())) {
|
||||
psiParameters.add(new ParameterInfoImpl(paramIdx, param.getName(), param.getType()));
|
||||
}
|
||||
paramIdx++;
|
||||
}
|
||||
|
||||
PsiType returnType = myMethod.getReturnType();
|
||||
myChangeInfo = new JavaChangeInfoImpl(VisibilityUtil.getVisibilityModifier(myMethod.getModifierList()), myMethod, myMethod.getName(),
|
||||
returnType != null ? CanonicalTypes.createTypeWrapper(returnType) : null,
|
||||
psiParameters.toArray(new ParameterInfoImpl[psiParameters.size()]),
|
||||
null,
|
||||
false,
|
||||
Collections.emptySet(),
|
||||
Collections.emptySet() );
|
||||
myChangeSignatureUsages = ChangeSignatureProcessorBase.findUsages(myChangeInfo);
|
||||
|
||||
final UsageInfo[] usageInfos = result.toArray(new UsageInfo[result.size()]);
|
||||
return UsageViewUtil.removeDuplicatedUsages(usageInfos);
|
||||
}
|
||||
@@ -267,7 +298,7 @@ public class InlineParameterExpressionProcessor extends BaseRefactoringProcessor
|
||||
}
|
||||
}
|
||||
|
||||
SameParameterValueInspection.InlineParameterValueFix.removeParameter(myMethod, myParameter);
|
||||
ChangeSignatureProcessorBase.doChangeSignature(myChangeInfo, myChangeSignatureUsages);
|
||||
|
||||
if (!thrownExceptions.isEmpty()) {
|
||||
for (PsiClassType exception : thrownExceptions) {
|
||||
|
||||
Reference in New Issue
Block a user