From 9e7c4e5568e63ffe375951ea96039fb5cf0d7329 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Fri, 22 Apr 2016 14:44:10 +0200 Subject: [PATCH] combine inline parameter with change signature refactoring EA-80956 - E: BaseRefactoringProcessor.run --- .../InlineParameterExpressionProcessor.java | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/inline/InlineParameterExpressionProcessor.java b/java/java-impl/src/com/intellij/refactoring/inline/InlineParameterExpressionProcessor.java index 5ae0546f216f..f5eb4cc76bb7 100644 --- a/java/java-impl/src/com/intellij/refactoring/inline/InlineParameterExpressionProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/inline/InlineParameterExpressionProcessor.java @@ -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 psiParameters = new ArrayList(); + 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) {