mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] Move InlineClassDeprecatedFix to frontend independent module
^KTIJ-29500 GitOrigin-RevId: 769538db72a69830a1384ea4766c0651b178dc67
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f9cabcfb46
commit
249e2ef0c2
+48
@@ -0,0 +1,48 @@
|
||||
// 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.codeInspection.util.IntentionName
|
||||
import com.intellij.modcommand.ActionContext
|
||||
import com.intellij.modcommand.ModPsiUpdater
|
||||
import com.intellij.modcommand.Presentation
|
||||
import org.jetbrains.kotlin.idea.base.facet.platform.platform
|
||||
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.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.platform.has
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatform
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtModifierListOwner
|
||||
|
||||
class InlineClassDeprecatedFix(
|
||||
element: KtModifierListOwner,
|
||||
) : KotlinPsiUpdateModCommandAction.ElementBased<KtModifierListOwner, Unit>(element, Unit) {
|
||||
|
||||
@IntentionName
|
||||
private val text = KotlinBundle.message(
|
||||
"replace.with.0",
|
||||
(if (element.containingKtFile.hasJvmTarget()) "@JvmInline " else "") + "value"
|
||||
)
|
||||
|
||||
override fun getPresentation(context: ActionContext, element: KtModifierListOwner): Presentation? = Presentation.of(text)
|
||||
|
||||
override fun getFamilyName() = KotlinBundle.message("replace.modifier")
|
||||
|
||||
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(ClassId.topLevel(FqName("kotlin.jvm.JvmInline")))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun KtFile.hasJvmTarget(): Boolean = platform.has<JvmPlatform>()
|
||||
+5
-48
@@ -6,58 +6,15 @@
|
||||
package org.jetbrains.kotlin.idea.quickfix
|
||||
|
||||
import com.intellij.codeInsight.intention.IntentionAction
|
||||
import com.intellij.codeInspection.util.IntentionName
|
||||
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.facet.platform.platform
|
||||
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
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatform
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtModifierListOwner
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
|
||||
import org.jetbrains.kotlin.resolve.JVM_INLINE_ANNOTATION_FQ_NAME
|
||||
|
||||
class InlineClassDeprecatedFix(
|
||||
element: KtModifierListOwner,
|
||||
) : KotlinPsiUpdateModCommandAction.ElementBased<KtModifierListOwner, Unit>(element, Unit) {
|
||||
|
||||
@IntentionName
|
||||
private val text = KotlinBundle.message(
|
||||
"replace.with.0",
|
||||
(if (element.containingKtFile.hasJvmTarget()) "@JvmInline " else "") + "value"
|
||||
)
|
||||
|
||||
override fun getPresentation(context: ActionContext, element: KtModifierListOwner): Presentation? = Presentation.of(text)
|
||||
|
||||
override fun getFamilyName() = KotlinBundle.message("replace.modifier")
|
||||
|
||||
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)
|
||||
}
|
||||
internal object InlineClassDeprecatedFixFactory : KotlinSingleIntentionActionFactory() {
|
||||
override fun createAction(diagnostic: Diagnostic): IntentionAction? {
|
||||
val deprecatedModifier = Errors.INLINE_CLASS_DEPRECATED.cast(diagnostic)
|
||||
val modifierListOwner = deprecatedModifier.psiElement.getParentOfType<KtModifierListOwner>(strict = true) ?: return null
|
||||
return if (deprecatedModifier != null) InlineClassDeprecatedFix(modifierListOwner).asIntention() else null
|
||||
}
|
||||
|
||||
companion object : KotlinSingleIntentionActionFactory() {
|
||||
override fun createAction(diagnostic: Diagnostic): IntentionAction? {
|
||||
val deprecatedModifier = Errors.INLINE_CLASS_DEPRECATED.cast(diagnostic)
|
||||
val modifierListOwner = deprecatedModifier.psiElement.getParentOfType<KtModifierListOwner>(strict = true) ?: return null
|
||||
return if (deprecatedModifier != null) InlineClassDeprecatedFix(modifierListOwner).asIntention() else null
|
||||
}
|
||||
}
|
||||
|
||||
private fun KtFile.hasJvmTarget(): Boolean = platform.has<JvmPlatform>()
|
||||
}
|
||||
@@ -758,7 +758,7 @@ class QuickFixRegistrar : QuickFixContributor {
|
||||
|
||||
COMPATIBILITY_WARNING.registerFactory(UseFullyQualifiedCallFix)
|
||||
|
||||
INLINE_CLASS_DEPRECATED.registerFactory(InlineClassDeprecatedFix)
|
||||
INLINE_CLASS_DEPRECATED.registerFactory(InlineClassDeprecatedFixFactory)
|
||||
|
||||
SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC.registerFactory(AddJvmStaticAnnotationFix)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user