From f3c25c728ebacb580f5a75df70e501e687029561 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 27 Oct 2016 18:05:03 +0300 Subject: [PATCH] If then to elvis: no more allowed for if expressions with `Unit` result --- .../intentions/IfThenToElvisIntention.kt | 8 +++++--- .../branched/ifThenToElvis/unitResult.kt | 16 ++++++++++++++++ .../idea/intentions/IntentionTestGenerated.java | 6 ++++++ 3 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 idea/testData/intentions/branched/ifThenToElvis/unitResult.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/intentions/IfThenToElvisIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/intentions/IfThenToElvisIntention.kt index 19ec0521e4e..50615249366 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/intentions/IfThenToElvisIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/intentions/IfThenToElvisIntention.kt @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.idea.intentions.branchedTransformations.intentions import com.intellij.openapi.editor.Editor import org.jetbrains.kotlin.KtNodeTypes +import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.core.replaced import org.jetbrains.kotlin.idea.inspections.IntentionBasedInspection @@ -29,7 +30,6 @@ import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.calls.callUtil.getType -import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode.Companion.PARTIAL import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.typeUtil.TypeNullability import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf @@ -54,12 +54,14 @@ class IfThenToElvisIntention : SelfTargetingOffsetIndependentIntentionif (arg is Some) { + arg.bar() + } + else { + Obj.bar() + } +} \ 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 3098e46584c..f7cf5d16a58 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -1452,6 +1452,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { doTest(fileName); } + @TestMetadata("unitResult.kt") + public void testUnitResult() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/branched/ifThenToElvis/unitResult.kt"); + doTest(fileName); + } + @TestMetadata("willNotInlineClassProperty.kt") public void testWillNotInlineClassProperty() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/branched/ifThenToElvis/willNotInlineClassProperty.kt");