From 795fe39b6b512d99ee1ca5be48618c78134979da Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 10 Oct 2019 21:28:00 +0200 Subject: [PATCH] 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 --- .../extractMethod/ParametersFolder.java | 16 +++++++--------- ...DuplicateFoldArrayElementTwoUsages_after.java | 6 +++--- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/refactoring/extractMethod/ParametersFolder.java b/java/java-analysis-impl/src/com/intellij/refactoring/extractMethod/ParametersFolder.java index 2ba2b7a45a1c..de4893abe842 100644 --- a/java/java-analysis-impl/src/com/intellij/refactoring/extractMethod/ParametersFolder.java +++ b/java/java-analysis-impl/src/com/intellij/refactoring/extractMethod/ParametersFolder.java @@ -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++; } diff --git a/java/java-tests/testData/refactoring/extractMethod/ParametrizedDuplicateFoldArrayElementTwoUsages_after.java b/java/java-tests/testData/refactoring/extractMethod/ParametrizedDuplicateFoldArrayElementTwoUsages_after.java index 2a32eb7983f2..48573fa49951 100644 --- a/java/java-tests/testData/refactoring/extractMethod/ParametrizedDuplicateFoldArrayElementTwoUsages_after.java +++ b/java/java-tests/testData/refactoring/extractMethod/ParametrizedDuplicateFoldArrayElementTwoUsages_after.java @@ -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; }