"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() {