From 360db06c21be334f33249129fbf6b848db79b54b Mon Sep 17 00:00:00 2001 From: Alexandr Suhinin Date: Fri, 10 May 2024 12:16:46 +0300 Subject: [PATCH] [extract method] fix the flaky parameter name suggestion GitOrigin-RevId: 1f278179d51e1dac3cb2992a3ec85c98ac208b31 --- .../refactoring/extractMethod/ParametersFolder.java | 7 +++++-- .../extractMethod/FoldedWithNestedExpressions_after.java | 4 ++-- 2 files changed, 7 insertions(+), 4 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 627faaac6025..6e37637ebd2b 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 @@ -179,8 +179,11 @@ public class ParametersFolder { List expressions = null; Boolean arrayAccess = null; - for (PsiReference reference : ReferencesSearch.search(var, scope)) { - PsiElement expression = reference.getElement(); + List refExpressions = ReferencesSearch.search(var, scope).findAll().stream() + .map(ref -> ref.getElement()) + .sorted(Comparator.comparingInt(element -> element.getTextRange().getStartOffset())) + .toList(); + for (PsiElement expression : refExpressions) { if (expressions == null) { expressions = new ArrayList<>(); while (expression instanceof PsiExpression) { diff --git a/java/java-tests/testData/refactoring/extractMethod/FoldedWithNestedExpressions_after.java b/java/java-tests/testData/refactoring/extractMethod/FoldedWithNestedExpressions_after.java index 9eb8ccd66250..0a71237885bd 100644 --- a/java/java-tests/testData/refactoring/extractMethod/FoldedWithNestedExpressions_after.java +++ b/java/java-tests/testData/refactoring/extractMethod/FoldedWithNestedExpressions_after.java @@ -4,8 +4,8 @@ class Test { System.out.println(s1); } - private String newMethod(String s2, String s11) { - System.out.println(s2); + private String newMethod(String x, String s11) { + System.out.println(x); return s11; } } \ No newline at end of file