From 39ffb68cc65862107f38f5b42b450b31602bfd02 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 12 Jul 2016 10:56:33 +0300 Subject: [PATCH] KT-12942 related: remove braces now does not work for if inside if (cherry picked from commit c1faed5) --- .../kotlin/idea/intentions/RemoveBracesIntention.kt | 3 ++- idea/testData/intentions/removeBraces/ifInsideIf.kt | 11 +++++++++++ .../idea/intentions/IntentionTestGenerated.java | 6 ++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 idea/testData/intentions/removeBraces/ifInsideIf.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveBracesIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveBracesIntention.kt index 0ecadb1919a..0bde8c363d8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveBracesIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveBracesIntention.kt @@ -23,9 +23,10 @@ import org.jetbrains.kotlin.psi.* class RemoveBracesIntention : SelfTargetingIntention(KtBlockExpression::class.java, "Remove braces") { override fun isApplicableTo(element: KtBlockExpression, caretOffset: Int): Boolean { - if (element.statements.size != 1) return false + val singleStatement = element.statements.singleOrNull() ?: return false val containerNode = element.parent as? KtContainerNode ?: return false + if (singleStatement is KtIfExpression && containerNode.parent is KtIfExpression) return false val lBrace = element.lBrace ?: return false val rBrace = element.rBrace ?: return false diff --git a/idea/testData/intentions/removeBraces/ifInsideIf.kt b/idea/testData/intentions/removeBraces/ifInsideIf.kt new file mode 100644 index 00000000000..4cf3afb2a9b --- /dev/null +++ b/idea/testData/intentions/removeBraces/ifInsideIf.kt @@ -0,0 +1,11 @@ +// IS_APPLICABLE: false +fun test(b: Boolean): String { + if (b == true) { + if (true) return "first" + } + else if (b == false) { + if (true) return "second" + } + + return "none" +} \ 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 e8f0832e0d1..65c08891acf 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -7697,6 +7697,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { doTest(fileName); } + @TestMetadata("ifInsideIf.kt") + public void testIfInsideIf() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/removeBraces/ifInsideIf.kt"); + doTest(fileName); + } + @TestMetadata("ifWithComment.kt") public void testIfWithComment() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/removeBraces/ifWithComment.kt");