diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/MoveVariableDeclarationIntoWhenInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/MoveVariableDeclarationIntoWhenInspection.kt index 5bb5cccc7eb..4de2c890c0a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/MoveVariableDeclarationIntoWhenInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/MoveVariableDeclarationIntoWhenInspection.kt @@ -13,6 +13,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.util.TextRange import com.intellij.psi.PsiElementVisitor import com.intellij.psi.SmartPsiElementPointer +import org.jetbrains.kotlin.idea.intentions.branchedTransformations.isOneLiner import org.jetbrains.kotlin.idea.intentions.loopToCallChain.countUsages import org.jetbrains.kotlin.idea.intentions.loopToCallChain.previousStatement import org.jetbrains.kotlin.psi.* @@ -23,6 +24,8 @@ class MoveVariableDeclarationIntoWhenInspection : AbstractKotlinInspection(), Cl whenExpressionVisitor(fun(expression: KtWhenExpression) { val subjectExpression = expression.subjectExpression ?: return val property = expression.findDeclarationNear() ?: return + if (!property.isOneLiner()) return + val action = property.action(expression) if (action == Action.NOTHING) return diff --git a/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/notApplicableMultyLine.kt b/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/notApplicableMultyLine.kt new file mode 100644 index 00000000000..385f363da99 --- /dev/null +++ b/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/notApplicableMultyLine.kt @@ -0,0 +1,11 @@ +// PROBLEM: none + +fun foo(): Int { + val a = if (true) true + else false + + return when (a) { + true -> 42 + else -> null + } ?: 55 +} \ 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 134306de0c3..ce06d35dfa1 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -4525,6 +4525,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { runTest("idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/notApplicableInBinaryExpression.kt"); } + @TestMetadata("notApplicableMultyLine.kt") + public void testNotApplicableMultyLine() throws Exception { + runTest("idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/notApplicableMultyLine.kt"); + } + @TestMetadata("notApplicableOtherName.kt") public void testNotApplicableOtherName() throws Exception { runTest("idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/notApplicableOtherName.kt");