diff --git a/java/java-impl/src/com/intellij/refactoring/extractMethod/ParametrizedDuplicates.java b/java/java-impl/src/com/intellij/refactoring/extractMethod/ParametrizedDuplicates.java index 153257c7b31d..382082cf7f6c 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractMethod/ParametrizedDuplicates.java +++ b/java/java-impl/src/com/intellij/refactoring/extractMethod/ParametrizedDuplicates.java @@ -57,8 +57,8 @@ public class ParametrizedDuplicates { private ParametrizedDuplicates(@NotNull PsiElement[] pattern, @NotNull ExtractMethodProcessor originalProcessor) { - pattern = getFilteredElements(pattern); - PsiElement firstElement = pattern.length != 0 ? pattern[0] : null; + PsiElement[] filteredPattern = getFilteredElements(pattern); + PsiElement firstElement = filteredPattern.length != 0 ? filteredPattern[0] : null; if (firstElement instanceof PsiStatement) { PsiElement[] copy = copyElements(pattern); myElements = wrapWithCodeBlock(copy, originalProcessor.getInputVariables()); diff --git a/java/java-tests/testData/refactoring/extractMethod/DuplicatePreserveComments.java b/java/java-tests/testData/refactoring/extractMethod/DuplicatePreserveComments.java new file mode 100644 index 000000000000..9e490316aed5 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethod/DuplicatePreserveComments.java @@ -0,0 +1,13 @@ +class C { + void foo() { + /*a*/ // b + System.out.println(1); + /*c*/ // d + } + + void bar() { + /*x*/ + System.out.println(1); + /*z*/ + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethod/DuplicatePreserveComments_after.java b/java/java-tests/testData/refactoring/extractMethod/DuplicatePreserveComments_after.java new file mode 100644 index 000000000000..d1657300d5dc --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethod/DuplicatePreserveComments_after.java @@ -0,0 +1,17 @@ +class C { + void foo() { + newMethod(); + } + + private void newMethod() { + /*a*/ // b + System.out.println(1); + /*c*/ // d + } + + void bar() { + /*x*/ + newMethod(); + /*z*/ + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/ExtractMethodTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/ExtractMethodTest.java index e23854f8944d..c4f512d268a7 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/ExtractMethodTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/ExtractMethodTest.java @@ -1287,6 +1287,10 @@ public class ExtractMethodTest extends LightCodeInsightTestCase { doDuplicatesTest(); } + public void testDuplicatePreserveComments() throws Exception { + doDuplicatesTest(); + } + public void testBeforeCommentAfterSelectedFragment() throws Exception { doTest(); }