From ff3d49c50d59ce52517d1335b0cbdc7b29648153 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Mon, 4 Dec 2017 17:45:10 +0700 Subject: [PATCH] UnrollLoopAction: comment handling fixed --- .../codeInsight/intention/impl/UnrollLoopAction.java | 5 ++++- .../quickFix/unrollLoop/afterUnrollCounting.java | 1 + .../quickFix/unrollLoop/beforeUnrollCounting.java | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/UnrollLoopAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/UnrollLoopAction.java index edb0d4d9c3e6..8fd2fa4b9f60 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/UnrollLoopAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/UnrollLoopAction.java @@ -165,7 +165,10 @@ public class UnrollLoopAction extends PsiElementBaseIntentionAction { CommentTracker ct = new CommentTracker(); PsiElement anchor = loop; for (PsiExpression expression : expressions) { - PsiLoopStatement copy = (PsiLoopStatement)factory.createStatementFromText(ct.text(loop), element); + if (loop.getBody() != null) { + ct.markUnchanged(loop.getBody()); + } + PsiLoopStatement copy = (PsiLoopStatement)factory.createStatementFromText(loop.getText(), element); PsiVariable variable = Objects.requireNonNull(getVariable(copy)); for (PsiReference reference : ReferencesSearch.search(variable, new LocalSearchScope(copy))) { final PsiElement referenceElement = reference.getElement(); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/unrollLoop/afterUnrollCounting.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/unrollLoop/afterUnrollCounting.java index 98b337bb296d..587248d812ed 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/unrollLoop/afterUnrollCounting.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/unrollLoop/afterUnrollCounting.java @@ -11,5 +11,6 @@ class Test { System.out.println("Hi!" + 7); System.out.println("Hi!" + 8); System.out.println("Hi!" + 9); + // line comment } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/unrollLoop/beforeUnrollCounting.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/unrollLoop/beforeUnrollCounting.java index dd3570f981e8..a3743984dc8b 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/unrollLoop/beforeUnrollCounting.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/unrollLoop/beforeUnrollCounting.java @@ -1,7 +1,8 @@ // "Unroll loop" "true" class Test { void test() { - for (int i = 0; i < 10; i++) { + for (int i = 0; i < 10; i++ // line comment + ) { System.out.println("Hi!" + i); } }