extract method: warn if range contains variable with name chosen for one of parameters

This commit is contained in:
Anna Kozlova
2014-12-01 20:54:15 +01:00
parent f50575a468
commit 717bf0ddef
@@ -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<PsiElement, String> 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");
}
}
}
};
}