"Add else branch" on when quickfix: don't add braces #KT-5088 Fixed

This commit is contained in:
Toshiaki Kameyama
2018-10-01 14:15:38 +03:00
committed by Mikhail Glukhikh
parent f22133be7e
commit 57ae60e9dc
4 changed files with 13 additions and 10 deletions
@@ -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<KtW
override fun invoke(project: Project, editor: Editor?, file: KtFile) {
val element = element ?: return
val psiFactory = KtPsiFactory(file)
val entry = psiFactory.createWhenEntry("else -> {}")
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() {
@@ -3,8 +3,7 @@ enum class Color { R, G, B }
fun use(c: Color) {
when (c) {
Color.R -> red()
else -> {
}
else -> <caret>
}
}
@@ -4,7 +4,6 @@ fun test() {
val x = when (a) {
in 0..11 -> { /* some code */ }
12, 13, 14 -> { /* some code */ }
else -> {<caret>
}
else -> <caret>
}
}
@@ -2,7 +2,6 @@
fun test() {
val a = 12
val x = when (a) {
else -> {<caret>
}
else -> <caret>
}
}