[kotlin] AddAnnotationUseSiteTargetFix: don't suggest quick fix when there are no applicable use-site targets

^KTIJ-29573

GitOrigin-RevId: 235ae43b1f99b68b5b11f1e80c68de73bf029b24
This commit is contained in:
Andrey Cherkasov
2024-09-11 21:31:58 +00:00
committed by intellij-monorepo-bot
parent ba2a092654
commit 1be37bf052
4 changed files with 21 additions and 1 deletions
@@ -15,7 +15,9 @@ import org.jetbrains.kotlin.psi.KtAnnotationEntry
internal object WrongAnnotationTargetFixFactories {
val addAnnotationUseSiteTargetFixFactory = KotlinQuickFixFactory.ModCommandBased { diagnostic: KaFirDiagnostic.WrongAnnotationTarget ->
val applicableUseSiteTargets = diagnostic.psi.getApplicableUseSiteTargets()
val applicableUseSiteTargets = diagnostic.psi.getApplicableUseSiteTargets().takeIf {
it.isNotEmpty()
} ?: return@ModCommandBased emptyList()
listOfNotNull(
AddAnnotationUseSiteTargetFix(diagnostic.psi, applicableUseSiteTargets)
@@ -5640,6 +5640,11 @@ public abstract class HighLevelQuickFixTestGenerated extends AbstractHighLevelQu
public void testGet() throws Exception {
runTest("../../../idea/tests/testData/quickfix/addAnnotationUseSiteTarget/get.kt");
}
@TestMetadata("notApplicable.kt")
public void testNotApplicable() throws Exception {
runTest("../../../idea/tests/testData/quickfix/addAnnotationUseSiteTarget/notApplicable.kt");
}
}
@@ -438,6 +438,11 @@ public abstract class K1QuickFixTestGenerated extends AbstractK1QuickFixTest {
public void testGet() throws Exception {
runTest("testData/quickfix/addAnnotationUseSiteTarget/get.kt");
}
@TestMetadata("notApplicable.kt")
public void testNotApplicable() throws Exception {
runTest("testData/quickfix/addAnnotationUseSiteTarget/notApplicable.kt");
}
}
@RunWith(JUnit3RunnerWithInners.class)
@@ -0,0 +1,8 @@
// "Add use-site target" "false"
// ERROR: This annotation is not applicable to target 'class'
@Target(AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)
annotation class Anno
@Anno<caret>
class Foo