From f9cabcfb46cc52c0877e171abae08ce888acaabb Mon Sep 17 00:00:00 2001 From: Andrey Cherkasov Date: Sat, 27 Jul 2024 18:52:27 +0400 Subject: [PATCH] [kotlin] Convert InlineClassDeprecatedFix to ModCommandAction ^KTIJ-29500 GitOrigin-RevId: da0a695375e33700a84a18665eca8309b295f5db --- .../idea/quickfix/InlineClassDeprecatedFix.kt | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/InlineClassDeprecatedFix.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/InlineClassDeprecatedFix.kt index 52689a61c5e9..d3f1e169d79a 100644 --- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/InlineClassDeprecatedFix.kt +++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/InlineClassDeprecatedFix.kt @@ -7,14 +7,14 @@ package org.jetbrains.kotlin.idea.quickfix import com.intellij.codeInsight.intention.IntentionAction import com.intellij.codeInspection.util.IntentionName -import com.intellij.openapi.editor.Editor -import com.intellij.openapi.project.Project +import com.intellij.modcommand.ActionContext +import com.intellij.modcommand.ModPsiUpdater +import com.intellij.modcommand.Presentation import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.Errors -import org.jetbrains.kotlin.idea.base.resources.KotlinBundle import org.jetbrains.kotlin.idea.base.facet.platform.platform -import org.jetbrains.kotlin.idea.codeinsight.api.classic.quickfixes.CleanupFix -import org.jetbrains.kotlin.idea.codeinsight.api.classic.quickfixes.KotlinQuickFixAction +import org.jetbrains.kotlin.idea.base.resources.KotlinBundle +import org.jetbrains.kotlin.idea.codeinsight.api.applicable.intentions.KotlinPsiUpdateModCommandAction import org.jetbrains.kotlin.idea.util.addAnnotation import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.platform.has @@ -25,8 +25,8 @@ import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.jetbrains.kotlin.resolve.JVM_INLINE_ANNOTATION_FQ_NAME class InlineClassDeprecatedFix( - element: KtModifierListOwner -) : KotlinQuickFixAction(element), CleanupFix { + element: KtModifierListOwner, +) : KotlinPsiUpdateModCommandAction.ElementBased(element, Unit) { @IntentionName private val text = KotlinBundle.message( @@ -34,15 +34,20 @@ class InlineClassDeprecatedFix( (if (element.containingKtFile.hasJvmTarget()) "@JvmInline " else "") + "value" ) - override fun getText() = text + override fun getPresentation(context: ActionContext, element: KtModifierListOwner): Presentation? = Presentation.of(text) override fun getFamilyName() = KotlinBundle.message("replace.modifier") - override fun invoke(project: Project, editor: Editor?, file: KtFile) { - element?.removeModifier(KtTokens.INLINE_KEYWORD) - element?.addModifier(KtTokens.VALUE_KEYWORD) - if (file.hasJvmTarget()) { - element?.addAnnotation(JVM_INLINE_ANNOTATION_FQ_NAME) + override fun invoke( + actionContext: ActionContext, + element: KtModifierListOwner, + elementContext: Unit, + updater: ModPsiUpdater, + ) { + element.removeModifier(KtTokens.INLINE_KEYWORD) + element.addModifier(KtTokens.VALUE_KEYWORD) + if (element.containingKtFile.hasJvmTarget()) { + element.addAnnotation(JVM_INLINE_ANNOTATION_FQ_NAME) } } @@ -50,7 +55,7 @@ class InlineClassDeprecatedFix( override fun createAction(diagnostic: Diagnostic): IntentionAction? { val deprecatedModifier = Errors.INLINE_CLASS_DEPRECATED.cast(diagnostic) val modifierListOwner = deprecatedModifier.psiElement.getParentOfType(strict = true) ?: return null - return if (deprecatedModifier != null) InlineClassDeprecatedFix(modifierListOwner) else null + return if (deprecatedModifier != null) InlineClassDeprecatedFix(modifierListOwner).asIntention() else null } }