mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] Port AddAnnotationUseSiteTargetFix to K2
^KTIJ-29573 GitOrigin-RevId: 181131d6870b049ce4e693cd9e80370523f8ca35
This commit is contained in:
committed by
intellij-monorepo-bot
parent
1caa8c6de1
commit
cc4c62230f
+1
@@ -173,6 +173,7 @@ class KotlinK2QuickFixRegistrar : KotlinQuickFixRegistrar() {
|
||||
registerFactory(WrapWithParenthesesFixFactories.suspendFixFactory)
|
||||
registerFactory(WrapWithParenthesesFixFactories.suspendFunErrorFixFactory)
|
||||
registerFactory(DeclarationCantBeInlinedFixFactories.removeOpenModifierFixFactory)
|
||||
registerFactory(WrongAnnotationTargetFixFactories.addAnnotationUseSiteTargetFixFactory)
|
||||
}
|
||||
|
||||
private val addAbstract = KtQuickFixesListBuilder.registerPsiQuickFix {
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
// 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.k2.codeinsight.fixes
|
||||
|
||||
import com.intellij.modcommand.ActionContext
|
||||
import com.intellij.modcommand.ModPsiUpdater
|
||||
import com.intellij.modcommand.PsiUpdateModCommandAction
|
||||
import org.jetbrains.kotlin.analysis.api.fir.diagnostics.KaFirDiagnostic
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.codeinsight.api.applicators.fixes.KotlinQuickFixFactory
|
||||
import org.jetbrains.kotlin.idea.codeinsights.impl.base.intentions.AddAnnotationUseSiteTargetUtils.addUseSiteTarget
|
||||
import org.jetbrains.kotlin.idea.codeinsights.impl.base.intentions.AddAnnotationUseSiteTargetUtils.getApplicableUseSiteTargets
|
||||
import org.jetbrains.kotlin.psi.KtAnnotationEntry
|
||||
|
||||
internal object WrongAnnotationTargetFixFactories {
|
||||
|
||||
val addAnnotationUseSiteTargetFixFactory = KotlinQuickFixFactory.ModCommandBased { diagnostic: KaFirDiagnostic.WrongAnnotationTarget ->
|
||||
val applicableUseSiteTargets = diagnostic.psi.getApplicableUseSiteTargets()
|
||||
|
||||
listOfNotNull(
|
||||
AddAnnotationUseSiteTargetFix(diagnostic.psi, applicableUseSiteTargets)
|
||||
)
|
||||
}
|
||||
|
||||
private class AddAnnotationUseSiteTargetFix(
|
||||
element: KtAnnotationEntry,
|
||||
private val useSiteTargets: List<AnnotationUseSiteTarget>,
|
||||
) : PsiUpdateModCommandAction<KtAnnotationEntry>(element) {
|
||||
|
||||
override fun getFamilyName(): String {
|
||||
return if (useSiteTargets.size == 1) {
|
||||
KotlinBundle.message("text.add.use.site.target.0", useSiteTargets.first().renderName)
|
||||
} else {
|
||||
KotlinBundle.message("add.use.site.target")
|
||||
}
|
||||
}
|
||||
|
||||
override fun invoke(
|
||||
context: ActionContext,
|
||||
element: KtAnnotationEntry,
|
||||
updater: ModPsiUpdater,
|
||||
) {
|
||||
element.addUseSiteTarget(useSiteTargets, null)
|
||||
}
|
||||
}
|
||||
}
|
||||
+22
@@ -5618,7 +5618,29 @@ public abstract class HighLevelQuickFixTestGenerated extends AbstractHighLevelQu
|
||||
|
||||
|
||||
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
@TestMetadata("../../../idea/tests/testData/quickfix/addAnnotationUseSiteTarget")
|
||||
public static class AddAnnotationUseSiteTarget extends AbstractHighLevelQuickFixTest {
|
||||
@java.lang.Override
|
||||
@org.jetbrains.annotations.NotNull
|
||||
public final KotlinPluginMode getPluginMode() {
|
||||
return KotlinPluginMode.K2;
|
||||
}
|
||||
|
||||
private void runTest(String testDataFilePath) throws Exception {
|
||||
KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
|
||||
}
|
||||
|
||||
@TestMetadata("delegate.kt")
|
||||
public void testDelegate() throws Exception {
|
||||
runTest("../../../idea/tests/testData/quickfix/addAnnotationUseSiteTarget/delegate.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("get.kt")
|
||||
public void testGet() throws Exception {
|
||||
runTest("../../../idea/tests/testData/quickfix/addAnnotationUseSiteTarget/get.kt");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -12,4 +12,5 @@ class Abcd {
|
||||
@<caret>Anno
|
||||
var a by Abcd()
|
||||
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationUseSiteTargetFix
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationUseSiteTargetFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.k2.codeinsight.fixes.WrongAnnotationTargetFixFactories$AddAnnotationUseSiteTargetFix
|
||||
+2
-1
@@ -12,4 +12,5 @@ class Abcd {
|
||||
@delegate:Anno
|
||||
var a by Abcd()
|
||||
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationUseSiteTargetFix
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationUseSiteTargetFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.k2.codeinsight.fixes.WrongAnnotationTargetFixFactories$AddAnnotationUseSiteTargetFix
|
||||
@@ -5,4 +5,5 @@ annotation class Anno2
|
||||
@<caret>Anno2
|
||||
var b = 42
|
||||
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationUseSiteTargetFix
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationUseSiteTargetFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.k2.codeinsight.fixes.WrongAnnotationTargetFixFactories$AddAnnotationUseSiteTargetFix
|
||||
@@ -5,4 +5,5 @@ annotation class Anno2
|
||||
@get:Anno2
|
||||
var b = 42
|
||||
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationUseSiteTargetFix
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationUseSiteTargetFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.k2.codeinsight.fixes.WrongAnnotationTargetFixFactories$AddAnnotationUseSiteTargetFix
|
||||
+1
-1
@@ -61,7 +61,7 @@ internal fun MutableTWorkspace.generateK2FixTests() {
|
||||
model("$idea/quickfix/supertypeInitialization", pattern = pattern)
|
||||
model("$idea/quickfix/dataClassConstructorVsCopyVisibility", pattern = pattern)
|
||||
model("$idea/quickfix/addAnnotationTarget", pattern = pattern, isIgnored = true)
|
||||
model("$idea/quickfix/addAnnotationUseSiteTarget", pattern = pattern, isIgnored = true)
|
||||
model("$idea/quickfix/addAnnotationUseSiteTarget", pattern = pattern)
|
||||
model("$idea/quickfix/addConstructorParameter", pattern = pattern, isIgnored = true)
|
||||
model("$idea/quickfix/addConstructorParameterFromSuperTypeCall", pattern = pattern)
|
||||
model("$idea/quickfix/addConversionCall", pattern = pattern)
|
||||
|
||||
Reference in New Issue
Block a user