From 1cdcef3b0897b651566d0483a42d0554cb7950ad Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Thu, 19 Dec 2019 00:41:59 +0900 Subject: [PATCH] "Split property declaration" intention: do not suggest in 'when' subject #KT-35528 Fixed --- .../SplitPropertyDeclarationIntention.kt | 4 +++- .../intentions/declarations/split/whenSubject.kt | 13 +++++++++++++ .../idea/intentions/IntentionTestGenerated.java | 5 +++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 idea/testData/intentions/declarations/split/whenSubject.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/SplitPropertyDeclarationIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/SplitPropertyDeclarationIntention.kt index 7ebe2b9f434..95c736fa6e6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/SplitPropertyDeclarationIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/SplitPropertyDeclarationIntention.kt @@ -11,12 +11,14 @@ import com.intellij.openapi.util.TextRange import org.jetbrains.kotlin.idea.intentions.SelfTargetingRangeIntention import org.jetbrains.kotlin.idea.intentions.splitPropertyDeclaration import org.jetbrains.kotlin.psi.KtProperty +import org.jetbrains.kotlin.psi.KtWhenEntry +import org.jetbrains.kotlin.psi.KtWhenExpression import org.jetbrains.kotlin.psi.psiUtil.startOffset class SplitPropertyDeclarationIntention : SelfTargetingRangeIntention(KtProperty::class.java, "Split property declaration"), LowPriorityAction { override fun applicabilityRange(element: KtProperty): TextRange? { - if (!element.isLocal) return null + if (!element.isLocal || element.parent is KtWhenExpression) return null val initializer = element.initializer ?: return null return TextRange(element.startOffset, initializer.startOffset) } diff --git a/idea/testData/intentions/declarations/split/whenSubject.kt b/idea/testData/intentions/declarations/split/whenSubject.kt new file mode 100644 index 00000000000..66a41f200fe --- /dev/null +++ b/idea/testData/intentions/declarations/split/whenSubject.kt @@ -0,0 +1,13 @@ +// IS_APPLICABLE: false +enum class Type { + HYDRO, + PYRO +} + +fun select(t: Type): Int { + return when (val i = t.ordinal) { + 0 -> 1 + 1 -> 42 + else -> i + } +} \ 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 19f6e74437e..aa2d0c5c06e 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -8100,6 +8100,11 @@ public class IntentionTestGenerated extends AbstractIntentionTest { public void testSimpleInitWithType2() throws Exception { runTest("idea/testData/intentions/declarations/split/simpleInitWithType2.kt"); } + + @TestMetadata("whenSubject.kt") + public void testWhenSubject() throws Exception { + runTest("idea/testData/intentions/declarations/split/whenSubject.kt"); + } } }