From 02a4914ff40e688ab6098d4b74d49b7f4fc6e3d0 Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 23 Oct 2013 14:23:37 +0200 Subject: [PATCH] inline with flatten array creation: do not loose leading comment (IDEA-112161) --- .../src/com/intellij/refactoring/util/InlineUtil.java | 7 ++++++- .../inlineLocal/CollapseArrayCreation.java | 11 +++++++++++ .../inlineLocal/CollapseArrayCreation.java.after | 7 +++++++ .../intellij/refactoring/inline/InlineLocalTest.java | 4 ++++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/inlineLocal/CollapseArrayCreation.java create mode 100644 java/java-tests/testData/refactoring/inlineLocal/CollapseArrayCreation.java.after diff --git a/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java b/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java index 527c0309c628..2f80b2c651a1 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java @@ -228,7 +228,12 @@ public class InlineUtil { if (lastInitializerSibling.getNode().getElementType() == JavaTokenType.COMMA) { lastInitializerSibling = lastInitializerSibling.getPrevSibling(); } - argumentList.addRange(initializers[0], lastInitializerSibling); + PsiElement firstElement = initializers[0]; + final PsiElement leadingComment = PsiTreeUtil.skipSiblingsBackward(firstElement, PsiWhiteSpace.class); + if (leadingComment instanceof PsiComment) { + firstElement = leadingComment; + } + argumentList.addRange(firstElement, lastInitializerSibling); } args[args.length - 1].delete(); } diff --git a/java/java-tests/testData/refactoring/inlineLocal/CollapseArrayCreation.java b/java/java-tests/testData/refactoring/inlineLocal/CollapseArrayCreation.java new file mode 100644 index 000000000000..8ec2d285d807 --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineLocal/CollapseArrayCreation.java @@ -0,0 +1,11 @@ +import java.util.*; +class Test { + { + String[] a = new String[] { + // workaround for QC CR #80581 + "actioninvocationdata" + + }; + final List foo = Arrays.asList(a); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/inlineLocal/CollapseArrayCreation.java.after b/java/java-tests/testData/refactoring/inlineLocal/CollapseArrayCreation.java.after new file mode 100644 index 000000000000..a5164113d36b --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineLocal/CollapseArrayCreation.java.after @@ -0,0 +1,7 @@ +import java.util.*; +class Test { + { + final List foo = Arrays.asList(// workaround for QC CR #80581 + "actioninvocationdata"); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLocalTest.java b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLocalTest.java index 4cf3229a412c..53bac5bbb64f 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLocalTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLocalTest.java @@ -236,6 +236,10 @@ public class InlineLocalTest extends LightCodeInsightTestCase { doTest(true); } + public void testCollapseArrayCreation() throws Exception { + doTest(true); + } + public void testLocalVarInsideLambdaBodyWriteUsage() throws Exception { doTest(true, "Cannot perform refactoring.\n" + "Variable 'hello' is accessed for writing");