From 777995a3a064ffc10de9ca5b4407151d9b17a0c8 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Tue, 28 Jan 2020 18:37:11 +0900 Subject: [PATCH] Add braces: don't insert extra line break and move the following comment #KT-36194 Fixed --- .../kotlin/idea/intentions/AddBracesIntention.kt | 4 +++- .../intentions/addBraces/hasCommentOnNextLine.kt | 13 +++++++++++++ .../addBraces/hasCommentOnNextLine.kt.after | 15 +++++++++++++++ .../intentions/addBraces/hasCommentOnNextLine2.kt | 13 +++++++++++++ .../addBraces/hasCommentOnNextLine2.kt.after | 15 +++++++++++++++ .../idea/intentions/IntentionTestGenerated.java | 10 ++++++++++ 6 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 idea/testData/intentions/addBraces/hasCommentOnNextLine.kt create mode 100644 idea/testData/intentions/addBraces/hasCommentOnNextLine.kt.after create mode 100644 idea/testData/intentions/addBraces/hasCommentOnNextLine2.kt create mode 100644 idea/testData/intentions/addBraces/hasCommentOnNextLine2.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/AddBracesIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/AddBracesIntention.kt index 17ff0bdb6a0..129ada1a917 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/AddBracesIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/AddBracesIntention.kt @@ -79,7 +79,9 @@ class AddBracesIntention : SelfTargetingIntention(KtElement::class.ja val nextComment = when { element is KtDoWhileExpression -> null // bound to the closing while element is KtIfExpression && expression === element.then && element.`else` != null -> null // bound to else - else -> element.getNextSiblingIgnoringWhitespace().takeIf { it is PsiComment } + else -> element.getNextSiblingIgnoringWhitespace().takeIf { + it is PsiComment && it.getLineNumber() == element.getLineNumber(start = false) + } } val saver = when { diff --git a/idea/testData/intentions/addBraces/hasCommentOnNextLine.kt b/idea/testData/intentions/addBraces/hasCommentOnNextLine.kt new file mode 100644 index 00000000000..ba1e5ff99f9 --- /dev/null +++ b/idea/testData/intentions/addBraces/hasCommentOnNextLine.kt @@ -0,0 +1,13 @@ +fun foo(list: List) { + if (true) println(list) + + // printing... + println("hi") + + for (l in list) println(l) + + // printing... + println("hi") +} + +fun println(a: Any) {} \ No newline at end of file diff --git a/idea/testData/intentions/addBraces/hasCommentOnNextLine.kt.after b/idea/testData/intentions/addBraces/hasCommentOnNextLine.kt.after new file mode 100644 index 00000000000..e6cb77c4ceb --- /dev/null +++ b/idea/testData/intentions/addBraces/hasCommentOnNextLine.kt.after @@ -0,0 +1,15 @@ +fun foo(list: List) { + if (true) { + println(list) + } + + // printing... + println("hi") + + for (l in list) println(l) + + // printing... + println("hi") +} + +fun println(a: Any) {} \ No newline at end of file diff --git a/idea/testData/intentions/addBraces/hasCommentOnNextLine2.kt b/idea/testData/intentions/addBraces/hasCommentOnNextLine2.kt new file mode 100644 index 00000000000..aaee5f42e0a --- /dev/null +++ b/idea/testData/intentions/addBraces/hasCommentOnNextLine2.kt @@ -0,0 +1,13 @@ +fun foo(list: List) { + if (true) println(list) + + // printing... + println("hi") + + for (l in list) println(l) + + // printing... + println("hi") +} + +fun println(a: Any) {} \ No newline at end of file diff --git a/idea/testData/intentions/addBraces/hasCommentOnNextLine2.kt.after b/idea/testData/intentions/addBraces/hasCommentOnNextLine2.kt.after new file mode 100644 index 00000000000..7230c1730fa --- /dev/null +++ b/idea/testData/intentions/addBraces/hasCommentOnNextLine2.kt.after @@ -0,0 +1,15 @@ +fun foo(list: List) { + if (true) println(list) + + // printing... + println("hi") + + for (l in list) { + println(l) + } + + // printing... + println("hi") +} + +fun println(a: Any) {} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index 6c8bc2fd24e..12809045e19 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -764,6 +764,16 @@ public class IntentionTestGenerated extends AbstractIntentionTest { runTest("idea/testData/intentions/addBraces/forWithComment.kt"); } + @TestMetadata("hasCommentOnNextLine.kt") + public void testHasCommentOnNextLine() throws Exception { + runTest("idea/testData/intentions/addBraces/hasCommentOnNextLine.kt"); + } + + @TestMetadata("hasCommentOnNextLine2.kt") + public void testHasCommentOnNextLine2() throws Exception { + runTest("idea/testData/intentions/addBraces/hasCommentOnNextLine2.kt"); + } + @TestMetadata("ifElseWithComment.kt") public void testIfElseWithComment() throws Exception { runTest("idea/testData/intentions/addBraces/ifElseWithComment.kt");