From 8cbf3644575faa8346336f7edf623efc17fc8769 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Mon, 29 Jan 2018 14:29:48 +0300 Subject: [PATCH] Remove braces: add parentheses to if-else in more general case Related to KT-18308 --- .../kotlin/idea/intentions/RemoveBracesIntention.kt | 4 ++-- .../intentions/removeBraces/elseInPlusAssignExpression.kt | 7 +++++++ .../removeBraces/elseInPlusAssignExpression.kt.after | 7 +++++++ .../kotlin/idea/intentions/IntentionTestGenerated.java | 6 ++++++ 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 idea/testData/intentions/removeBraces/elseInPlusAssignExpression.kt create mode 100644 idea/testData/intentions/removeBraces/elseInPlusAssignExpression.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveBracesIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveBracesIntention.kt index 83598da538f..f5230e0de8b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveBracesIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveBracesIntention.kt @@ -22,7 +22,6 @@ import com.intellij.psi.PsiElement import com.intellij.psi.PsiWhiteSpace import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType class RemoveBracesIntention : SelfTargetingIntention(KtElement::class.java, "Remove braces") { @@ -71,7 +70,8 @@ class RemoveBracesIntention : SelfTargetingIntention(KtElement::class if (construct is KtIfExpression && container.node.elementType == KtNodeTypes.ELSE && - construct.getStrictParentOfType() != null) { + construct.parent is KtExpression && + construct.parent !is KtStatementExpression) { construct.replace(factory.createExpressionByPattern("($0)", construct)) } } diff --git a/idea/testData/intentions/removeBraces/elseInPlusAssignExpression.kt b/idea/testData/intentions/removeBraces/elseInPlusAssignExpression.kt new file mode 100644 index 00000000000..54b10a89437 --- /dev/null +++ b/idea/testData/intentions/removeBraces/elseInPlusAssignExpression.kt @@ -0,0 +1,7 @@ +// WITH_RUNTIME +fun test(b: Boolean) { + val list1 = mutableListOf(1) + val list2 = mutableListOf(2) + + if (b) {list1} else {list2} += 3 +} \ No newline at end of file diff --git a/idea/testData/intentions/removeBraces/elseInPlusAssignExpression.kt.after b/idea/testData/intentions/removeBraces/elseInPlusAssignExpression.kt.after new file mode 100644 index 00000000000..3a44a566758 --- /dev/null +++ b/idea/testData/intentions/removeBraces/elseInPlusAssignExpression.kt.after @@ -0,0 +1,7 @@ +// WITH_RUNTIME +fun test(b: Boolean) { + val list1 = mutableListOf(1) + val list2 = mutableListOf(2) + + (if (b) {list1} else list2) += 3 +} \ 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 66508c3106f..cfe11acb873 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -12129,6 +12129,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { doTest(fileName); } + @TestMetadata("elseInPlusAssignExpression.kt") + public void testElseInPlusAssignExpression() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/removeBraces/elseInPlusAssignExpression.kt"); + doTest(fileName); + } + @TestMetadata("for.kt") public void testFor() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/removeBraces/for.kt");