From d042fbcfaf13c3a4e61c613b7fa00f7ae10b2697 Mon Sep 17 00:00:00 2001 From: Andrey Cherkasov Date: Thu, 25 Jul 2024 15:54:35 +0400 Subject: [PATCH] [kotlin] Convert ConvertIllegalEscapeToUnicodeEscapeFix to ModCommandAction ^KTIJ-29491 GitOrigin-RevId: 82792e5890a3a1b4f72659749f29bb04eb61912a --- .../ConvertIllegalEscapeToUnicodeEscapeFix.kt | 22 ++++++++++--------- .../ConvertIllegalEscapeToUnicodeEscapeFix.kt | 2 +- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/plugins/kotlin/frontend-independent/src/org/jetbrains/kotlin/idea/quickfix/ConvertIllegalEscapeToUnicodeEscapeFix.kt b/plugins/kotlin/frontend-independent/src/org/jetbrains/kotlin/idea/quickfix/ConvertIllegalEscapeToUnicodeEscapeFix.kt index 4d44b5e545ee..bf2c5e0c4820 100644 --- a/plugins/kotlin/frontend-independent/src/org/jetbrains/kotlin/idea/quickfix/ConvertIllegalEscapeToUnicodeEscapeFix.kt +++ b/plugins/kotlin/frontend-independent/src/org/jetbrains/kotlin/idea/quickfix/ConvertIllegalEscapeToUnicodeEscapeFix.kt @@ -1,27 +1,29 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.kotlin.idea.quickfix -import com.intellij.openapi.editor.Editor -import com.intellij.openapi.project.Project +import com.intellij.modcommand.ActionContext +import com.intellij.modcommand.ModPsiUpdater import org.jetbrains.kotlin.idea.base.resources.KotlinBundle -import org.jetbrains.kotlin.idea.codeinsight.api.classic.quickfixes.KotlinQuickFixAction +import org.jetbrains.kotlin.idea.codeinsight.api.applicable.intentions.KotlinPsiUpdateModCommandAction import org.jetbrains.kotlin.psi.KtConstantExpression import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtEscapeStringTemplateEntry -import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtPsiFactory class ConvertIllegalEscapeToUnicodeEscapeFix( element: KtElement, private val unicodeEscape: String -) : KotlinQuickFixAction(element) { - override fun getText(): String = KotlinBundle.message("convert.to.unicode.escape") +) : KotlinPsiUpdateModCommandAction.ElementBased(element, Unit) { - override fun getFamilyName(): String = text + override fun getFamilyName(): String = KotlinBundle.message("convert.to.unicode.escape") - override fun invoke(project: Project, editor: Editor?, file: KtFile) { - val element = this.element ?: return - val psiFactory = KtPsiFactory(project) + override fun invoke( + actionContext: ActionContext, + element: KtElement, + elementContext: Unit, + updater: ModPsiUpdater, + ) { + val psiFactory = KtPsiFactory(actionContext.project) when (element) { is KtConstantExpression -> element.replace(psiFactory.createExpression("'$unicodeEscape'")) is KtEscapeStringTemplateEntry -> element.replace(psiFactory.createStringTemplate(unicodeEscape).entries.first()) diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ConvertIllegalEscapeToUnicodeEscapeFix.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ConvertIllegalEscapeToUnicodeEscapeFix.kt index 5e8345d8afa3..1532db51b123 100644 --- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ConvertIllegalEscapeToUnicodeEscapeFix.kt +++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ConvertIllegalEscapeToUnicodeEscapeFix.kt @@ -14,7 +14,7 @@ internal object ConvertIllegalEscapeToUnicodeEscapeFixFactory : KotlinSingleInte else -> null } ?: return null val unicodeEscape = illegalEscapeToUnicodeEscape[illegalEscape] ?: return null - return ConvertIllegalEscapeToUnicodeEscapeFix(element, unicodeEscape) + return ConvertIllegalEscapeToUnicodeEscapeFix(element, unicodeEscape).asIntention() } private val illegalEscapeToUnicodeEscape = mapOf("\\f" to "\\u000c")