diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/ConstantConditionIfInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/ConstantConditionIfInspection.kt index c8da4fb8674..600496d38c1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/ConstantConditionIfInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/ConstantConditionIfInspection.kt @@ -12,6 +12,7 @@ import com.intellij.openapi.project.Project import com.intellij.psi.PsiElementVisitor import com.intellij.psi.search.LocalSearchScope import com.intellij.psi.search.searches.ReferencesSearch +import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.idea.KotlinBundle import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.core.replaced @@ -116,6 +117,10 @@ class ConstantConditionIfInspection : AbstractKotlinInspection() { } override fun applyFix(ifExpression: KtIfExpression) { + val parent = ifExpression.parent + if (parent.node.elementType == KtNodeTypes.ELSE) { + (parent.parent as? KtIfExpression)?.elseKeyword?.delete() + } ifExpression.delete() } } diff --git a/idea/testData/inspectionsLocal/constantConditionIf/endWithElseIf2.kt b/idea/testData/inspectionsLocal/constantConditionIf/endWithElseIf2.kt new file mode 100644 index 00000000000..d7b78a135f6 --- /dev/null +++ b/idea/testData/inspectionsLocal/constantConditionIf/endWithElseIf2.kt @@ -0,0 +1,13 @@ +// WITH_RUNTIME + +fun main() { + foo(true); +} +fun foo(someBool:Boolean) { + if (someBool) { + println("test1"); + } else if (false) { + println("test2"); + } + println("test3"); +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/constantConditionIf/endWithElseIf2.kt.after b/idea/testData/inspectionsLocal/constantConditionIf/endWithElseIf2.kt.after new file mode 100644 index 00000000000..5951b93544e --- /dev/null +++ b/idea/testData/inspectionsLocal/constantConditionIf/endWithElseIf2.kt.after @@ -0,0 +1,11 @@ +// WITH_RUNTIME + +fun main() { + foo(true); +} +fun foo(someBool:Boolean) { + if (someBool) { + println("test1"); + } + println("test3"); +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/constantConditionIf/expressionElseIfBlock2.kt b/idea/testData/inspectionsLocal/constantConditionIf/expressionElseIfBlock2.kt new file mode 100644 index 00000000000..d26e3c71ba3 --- /dev/null +++ b/idea/testData/inspectionsLocal/constantConditionIf/expressionElseIfBlock2.kt @@ -0,0 +1,16 @@ +// WITH_RUNTIME + +fun foo(x: Int) {} + +fun bar(s: String?) { + if (s == null) { + 1 + } + else if (false) { + foo(1) + 2 + } + else { + 3 + } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/constantConditionIf/expressionElseIfBlock2.kt.after b/idea/testData/inspectionsLocal/constantConditionIf/expressionElseIfBlock2.kt.after new file mode 100644 index 00000000000..6b923821b34 --- /dev/null +++ b/idea/testData/inspectionsLocal/constantConditionIf/expressionElseIfBlock2.kt.after @@ -0,0 +1,12 @@ +// WITH_RUNTIME + +fun foo(x: Int) {} + +fun bar(s: String?) { + if (s == null) { + 1 + } + else { + 3 + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index b7e3114a879..7bc7b207666 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -2470,6 +2470,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { runTest("idea/testData/inspectionsLocal/constantConditionIf/endWithElseIf.kt"); } + @TestMetadata("endWithElseIf2.kt") + public void testEndWithElseIf2() throws Exception { + runTest("idea/testData/inspectionsLocal/constantConditionIf/endWithElseIf2.kt"); + } + @TestMetadata("endWithElseIfNoBraces.kt") public void testEndWithElseIfNoBraces() throws Exception { runTest("idea/testData/inspectionsLocal/constantConditionIf/endWithElseIfNoBraces.kt"); @@ -2535,6 +2540,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { runTest("idea/testData/inspectionsLocal/constantConditionIf/expressionElseIfBlock.kt"); } + @TestMetadata("expressionElseIfBlock2.kt") + public void testExpressionElseIfBlock2() throws Exception { + runTest("idea/testData/inspectionsLocal/constantConditionIf/expressionElseIfBlock2.kt"); + } + @TestMetadata("noStatements.kt") public void testNoStatements() throws Exception { runTest("idea/testData/inspectionsLocal/constantConditionIf/noStatements.kt");