extract method with folding: more precise unique name check

do not depend on the order of found references when search for name conflicts

GitOrigin-RevId: 2b18f253bf28fbc9ae6423a0cc38336ef33fb7fa
This commit is contained in:
Anna Kozlova
2019-10-10 20:02:12 +00:00
committed by intellij-monorepo-bot
parent 301a4b6ab7
commit 795fe39b6b
2 changed files with 10 additions and 12 deletions
@@ -147,7 +147,7 @@ class ParametersFolder {
!Comparing.equal(nameInfo.names[0], data.name) &&
!Comparing.equal(nameInfo.names[0], defaultName)) {
data.name = nameInfo.names[0];
setUniqueName(data, nameGenerator, scope, mostRanked);
setUniqueName(data, nameGenerator, mostRanked, codeStyleManager);
}
}
@@ -176,17 +176,15 @@ class ParametersFolder {
}
private static void setUniqueName(@NotNull VariableData data, @NotNull UniqueNameGenerator nameGenerator,
@NotNull LocalSearchScope scope, @NotNull PsiExpression expr) {
@NotNull PsiExpression expr, @NotNull JavaCodeStyleManager codeStyleManager) {
String name = data.name;
int idx = 1;
while (true) {
if (nameGenerator.isUnique(name, "", "")) {
final PsiVariable definedVariable = PsiResolveHelper.SERVICE.getInstance(expr.getProject()).resolveReferencedVariable(name, expr);
if (definedVariable == null || !scope.containsRange(expr.getContainingFile(), definedVariable.getTextRange())) {
data.name = name;
nameGenerator.addExistingName(name);
break;
}
if (nameGenerator.isUnique(name, "", "") &&
name.equals(codeStyleManager.suggestUniqueVariableName(name, expr, true))) {
data.name = name;
nameGenerator.addExistingName(name);
break;
}
name = data.name + idx++;
}
@@ -10,9 +10,9 @@ class DeclaredOutputVariable {
}
@Nullable
private String newMethod(String s2, int i, String x) {
if (s2 == null) return null;
String s = s2;
private String newMethod(String s1, int i, String x) {
if (s1 == null) return null;
String s = s1;
System.out.println(s.charAt(i) + x);
return s;
}