From 717bf0ddef0ec515e0c2cbfed25d41c9bceaa199 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 1 Dec 2014 20:17:55 +0100 Subject: [PATCH] extract method: warn if range contains variable with name chosen for one of parameters --- .../extractMethod/ExtractMethodProcessor.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java index 196c5323e03a..81f454246a53 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java @@ -71,6 +71,7 @@ import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.Processor; import com.intellij.util.VisibilityUtil; +import com.intellij.util.containers.MultiMap; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -503,6 +504,19 @@ public class ExtractMethodProcessor implements MatchProvider { protected boolean isOutputVariable(PsiVariable var) { return ExtractMethodProcessor.this.isOutputVariable(var); } + + @Override + protected void checkMethodConflicts(MultiMap conflicts) { + super.checkMethodConflicts(conflicts); + final VariableData[] parameters = getChosenParameters(); + final PsiResolveHelper resolveHelper = PsiResolveHelper.SERVICE.getInstance(myProject); + for (VariableData parameter : parameters) { + final PsiVariable variable = resolveHelper.resolveReferencedVariable(parameter.name, myElements[0]); + if (variable != null && isDeclaredInside(variable)) { + conflicts.putValue(variable, "Variable with name " + parameter.name + " is already defined in the selected scope"); + } + } + } }; }