From c155bf680f5af48772deb69f1b12f1003b45a9f0 Mon Sep 17 00:00:00 2001 From: Dmitry Gridin Date: Thu, 13 Jun 2019 19:19:37 +0700 Subject: [PATCH] MoveVariableDeclarationIntoWhenInspection should move caret to subject expression #KT-31954 Fixed --- .../MoveVariableDeclarationIntoWhenInspection.kt | 7 ++++++- .../inBinaryExpression.kt.after | 2 +- .../moveVariableDeclarationIntoWhen/inProperty.kt.after | 2 +- .../inUnaryAndProperty.kt.after | 2 +- .../moveVariableDeclarationIntoWhen/simple.kt.after | 2 +- .../moveVariableDeclarationIntoWhen/withComment.kt.after | 2 +- 6 files changed, 11 insertions(+), 6 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/MoveVariableDeclarationIntoWhenInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/MoveVariableDeclarationIntoWhenInspection.kt index e2abe8fbbad..22bbcfd9de1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/MoveVariableDeclarationIntoWhenInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/MoveVariableDeclarationIntoWhenInspection.kt @@ -15,6 +15,7 @@ import com.intellij.psi.PsiComment import com.intellij.psi.PsiElementVisitor import com.intellij.psi.PsiWhiteSpace import com.intellij.psi.SmartPsiElementPointer +import org.jetbrains.kotlin.idea.core.moveCaret import org.jetbrains.kotlin.idea.intentions.branchedTransformations.isOneLiner import org.jetbrains.kotlin.idea.intentions.loopToCallChain.countUsages import org.jetbrains.kotlin.idea.intentions.loopToCallChain.previousStatement @@ -22,6 +23,7 @@ import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.createSmartPointer import org.jetbrains.kotlin.psi.psiUtil.siblings +import org.jetbrains.kotlin.psi.psiUtil.startOffset class MoveVariableDeclarationIntoWhenInspection : AbstractKotlinInspection(), CleanupLocalInspectionTool { override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor = @@ -115,7 +117,10 @@ private class VariableDeclarationIntoWhenFix( lastChild.delete() } - subjectExpression.replace(newElement) + val resultElement = subjectExpression.replace(newElement) property.delete() + + val editor = resultElement.findExistingEditor() ?: return + editor.moveCaret((resultElement as? KtProperty)?.nameIdentifier?.startOffset ?: resultElement.startOffset) } } \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/inBinaryExpression.kt.after b/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/inBinaryExpression.kt.after index 827b11ec4bf..87dbe246186 100644 --- a/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/inBinaryExpression.kt.after +++ b/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/inBinaryExpression.kt.after @@ -1,7 +1,7 @@ fun test() = true fun foo(): Int { - return when (test()) { + return when (test()) { true -> 42 else -> null } ?: 55 diff --git a/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/inProperty.kt.after b/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/inProperty.kt.after index f0ec4ff2d2e..ad66de15d62 100644 --- a/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/inProperty.kt.after +++ b/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/inProperty.kt.after @@ -1,7 +1,7 @@ fun test() = 42 fun foo() { - val b = when (val a = test()) { + val b = when (val a = test()) { 1 -> a else -> 24 } diff --git a/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/inUnaryAndProperty.kt.after b/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/inUnaryAndProperty.kt.after index ea490fc9657..90b2875fc13 100644 --- a/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/inUnaryAndProperty.kt.after +++ b/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/inUnaryAndProperty.kt.after @@ -1,7 +1,7 @@ fun test() = true fun foo() { - val b = !when (test()) { + val b = !when (test()) { true -> true else -> false } diff --git a/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/simple.kt.after b/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/simple.kt.after index 8fac77004db..4bac81b8c3b 100644 --- a/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/simple.kt.after +++ b/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/simple.kt.after @@ -1,7 +1,7 @@ fun test() = 42 fun foo() { - when (val a = test()) { + when (val a = test()) { 1 -> a else -> 24 } diff --git a/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/withComment.kt.after b/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/withComment.kt.after index e680b931378..47fe3894f03 100644 --- a/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/withComment.kt.after +++ b/idea/testData/inspectionsLocal/moveVariableDeclarationIntoWhen/withComment.kt.after @@ -1,7 +1,7 @@ fun foo() { // comment - when (1) { + when (1) { 1 -> { } else -> {