diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/InvertIfConditionIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/InvertIfConditionIntention.kt index 5bcaf56c123..ac6c8e87a9d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/InvertIfConditionIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/InvertIfConditionIntention.kt @@ -184,12 +184,13 @@ class InvertIfConditionIntention : SelfTargetingIntention(KtIfEx } if (thenBranch is KtBlockExpression) { + (thenBranch.statements.lastOrNull() as? KtContinueExpression)?.delete() val range = thenBranch.contentRange() if (!range.isEmpty) { parent.addRangeAfter(range.first, range.last, ifExpression) parent.addAfter(factory.createNewLine(), ifExpression) } - } else { + } else if (thenBranch !is KtContinueExpression) { parent.addAfter(thenBranch, ifExpression) parent.addAfter(factory.createNewLine(), ifExpression) } diff --git a/idea/testData/intentions/invertIfCondition/unnecessaryContinue.kt b/idea/testData/intentions/invertIfCondition/unnecessaryContinue.kt new file mode 100644 index 00000000000..1135975acc5 --- /dev/null +++ b/idea/testData/intentions/invertIfCondition/unnecessaryContinue.kt @@ -0,0 +1,7 @@ +// WITH_RUNTIME +fun test() { + for (x in "abc") { + if (x == 'a') continue + println("else") + } +} \ No newline at end of file diff --git a/idea/testData/intentions/invertIfCondition/unnecessaryContinue.kt.after b/idea/testData/intentions/invertIfCondition/unnecessaryContinue.kt.after new file mode 100644 index 00000000000..ccc8e919786 --- /dev/null +++ b/idea/testData/intentions/invertIfCondition/unnecessaryContinue.kt.after @@ -0,0 +1,8 @@ +// WITH_RUNTIME +fun test() { + for (x in "abc") { + if (x != 'a') { + println("else") + } + } +} \ No newline at end of file diff --git a/idea/testData/intentions/invertIfCondition/unnecessaryContinue2.kt b/idea/testData/intentions/invertIfCondition/unnecessaryContinue2.kt new file mode 100644 index 00000000000..a897dfe1b6e --- /dev/null +++ b/idea/testData/intentions/invertIfCondition/unnecessaryContinue2.kt @@ -0,0 +1,9 @@ +// WITH_RUNTIME +fun test() { + for (x in "abc") { + if (x != 'a') { + if (x == 'b') continue + println("else") + } + } +} \ No newline at end of file diff --git a/idea/testData/intentions/invertIfCondition/unnecessaryContinue2.kt.after b/idea/testData/intentions/invertIfCondition/unnecessaryContinue2.kt.after new file mode 100644 index 00000000000..08e78e9f74b --- /dev/null +++ b/idea/testData/intentions/invertIfCondition/unnecessaryContinue2.kt.after @@ -0,0 +1,10 @@ +// WITH_RUNTIME +fun test() { + for (x in "abc") { + if (x != 'a') { + if (x != 'b') { + println("else") + } + } + } +} \ No newline at end of file diff --git a/idea/testData/intentions/invertIfCondition/unnecessaryContinue3.kt b/idea/testData/intentions/invertIfCondition/unnecessaryContinue3.kt new file mode 100644 index 00000000000..899289365c2 --- /dev/null +++ b/idea/testData/intentions/invertIfCondition/unnecessaryContinue3.kt @@ -0,0 +1,12 @@ +// WITH_RUNTIME +fun test() { + for (x in "abc") { + if (x != 'a') { + if (x == 'b') { + println("foo") + continue + } + println("else") + } + } +} \ No newline at end of file diff --git a/idea/testData/intentions/invertIfCondition/unnecessaryContinue3.kt.after b/idea/testData/intentions/invertIfCondition/unnecessaryContinue3.kt.after new file mode 100644 index 00000000000..51df69bcef8 --- /dev/null +++ b/idea/testData/intentions/invertIfCondition/unnecessaryContinue3.kt.after @@ -0,0 +1,12 @@ +// WITH_RUNTIME +fun test() { + for (x in "abc") { + if (x != 'a') { + if (x != 'b') { + println("else") + continue + } + println("foo") + } + } +} \ 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 9693509d829..875627d5a1a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -9654,6 +9654,21 @@ public class IntentionTestGenerated extends AbstractIntentionTest { runTest("idea/testData/intentions/invertIfCondition/simple.kt"); } + @TestMetadata("unnecessaryContinue.kt") + public void testUnnecessaryContinue() throws Exception { + runTest("idea/testData/intentions/invertIfCondition/unnecessaryContinue.kt"); + } + + @TestMetadata("unnecessaryContinue2.kt") + public void testUnnecessaryContinue2() throws Exception { + runTest("idea/testData/intentions/invertIfCondition/unnecessaryContinue2.kt"); + } + + @TestMetadata("unnecessaryContinue3.kt") + public void testUnnecessaryContinue3() throws Exception { + runTest("idea/testData/intentions/invertIfCondition/unnecessaryContinue3.kt"); + } + @TestMetadata("valueAndReturnBranches.kt") public void testValueAndReturnBranches() throws Exception { runTest("idea/testData/intentions/invertIfCondition/valueAndReturnBranches.kt");