From 57ae60e9dcfc27e61732db3348c1a19826188866 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Mon, 1 Oct 2018 14:15:38 +0300 Subject: [PATCH] "Add else branch" on when quickfix: don't add braces #KT-5088 Fixed --- .../kotlin/idea/quickfix/AddWhenElseBranchFix.kt | 14 ++++++++++---- .../when/addElseBranchEnumStatement.kt.after | 3 +-- .../when/noElseInWhenWithBranches.kt.after | 3 +-- .../when/noElseInWhenWithoutBranches.kt.after | 3 +-- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddWhenElseBranchFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddWhenElseBranchFix.kt index cd8de6d6e0c..a95c1856faf 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddWhenElseBranchFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddWhenElseBranchFix.kt @@ -20,7 +20,10 @@ import com.intellij.codeInsight.CodeInsightUtilCore import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project import org.jetbrains.kotlin.diagnostics.Diagnostic -import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.psi.KtPsiFactory +import org.jetbrains.kotlin.psi.KtWhenEntry +import org.jetbrains.kotlin.psi.KtWhenExpression import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType @@ -36,10 +39,13 @@ class AddWhenElseBranchFix(element: KtWhenExpression) : KotlinQuickFixAction {}") + val entry = psiFactory.createWhenEntry("else ->") val whenCloseBrace = element.closeBrace ?: error("isAvailable should check if close brace exist") - val insertedWhenEntry = CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement(element.addBefore(entry, whenCloseBrace)) as KtWhenEntry - editor!!.caretModel.moveToOffset((insertedWhenEntry.expression as KtBlockExpression).lBrace!!.endOffset) + val insertedWhenEntry = + CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement(element.addBefore(entry, whenCloseBrace)) as KtWhenEntry + val endOffset = insertedWhenEntry.endOffset + editor?.document?.insertString(endOffset, " ") + editor?.caretModel?.moveToOffset(endOffset + 1) } companion object : KotlinSingleIntentionActionFactory() { diff --git a/idea/testData/quickfix/when/addElseBranchEnumStatement.kt.after b/idea/testData/quickfix/when/addElseBranchEnumStatement.kt.after index 38e5805593c..ef96420640c 100644 --- a/idea/testData/quickfix/when/addElseBranchEnumStatement.kt.after +++ b/idea/testData/quickfix/when/addElseBranchEnumStatement.kt.after @@ -3,8 +3,7 @@ enum class Color { R, G, B } fun use(c: Color) { when (c) { Color.R -> red() - else -> { - } + else -> } } diff --git a/idea/testData/quickfix/when/noElseInWhenWithBranches.kt.after b/idea/testData/quickfix/when/noElseInWhenWithBranches.kt.after index efc0217a0c9..40501f79d21 100644 --- a/idea/testData/quickfix/when/noElseInWhenWithBranches.kt.after +++ b/idea/testData/quickfix/when/noElseInWhenWithBranches.kt.after @@ -4,7 +4,6 @@ fun test() { val x = when (a) { in 0..11 -> { /* some code */ } 12, 13, 14 -> { /* some code */ } - else -> { - } + else -> } } \ No newline at end of file diff --git a/idea/testData/quickfix/when/noElseInWhenWithoutBranches.kt.after b/idea/testData/quickfix/when/noElseInWhenWithoutBranches.kt.after index fae71abb56b..c36ba8c1f11 100644 --- a/idea/testData/quickfix/when/noElseInWhenWithoutBranches.kt.after +++ b/idea/testData/quickfix/when/noElseInWhenWithoutBranches.kt.after @@ -2,7 +2,6 @@ fun test() { val a = 12 val x = when (a) { - else -> { - } + else -> } } \ No newline at end of file