mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] Port AddAnnotationFix for TYPE_VARIANCE_CONFLICT_ERROR
The quick fix adds the `@UnsafeVariance` annotation. ^KTIJ-31223 GitOrigin-RevId: 685fba6a23d1e58c713690b0ddee5bc3e3165ce3
This commit is contained in:
committed by
intellij-monorepo-bot
parent
8ddd895e2d
commit
fb7c0ebb19
+1
@@ -144,6 +144,7 @@ class KotlinK2QuickFixRegistrar : KotlinQuickFixRegistrar() {
|
||||
registerFactory(AnonymousFunctionWithNameFixFactories.removeNameFromFunctionExpressionFixFactory)
|
||||
registerFactory(ExtensionPropertyWithBackingFieldFixFactories.convertToGetterFixFactory)
|
||||
registerFactory(OverrideDeprecationFixFactories.copyDeprecatedAnnotationFixFactory)
|
||||
registerFactory(TypeVarianceConflictErrorFixFactories.addUnsafeVarianceAnnotationFixFactory)
|
||||
}
|
||||
|
||||
private val addAbstract = KtQuickFixesListBuilder.registerPsiQuickFix {
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
// 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 org.jetbrains.kotlin.analysis.api.fir.diagnostics.KaFirDiagnostic
|
||||
import org.jetbrains.kotlin.builtins.StandardNames
|
||||
import org.jetbrains.kotlin.idea.codeinsight.api.applicators.fixes.KotlinQuickFixFactory
|
||||
import org.jetbrains.kotlin.idea.quickfix.AddAnnotationFix
|
||||
import org.jetbrains.kotlin.idea.quickfix.AddAnnotationFix.Kind
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.psi.KtTypeReference
|
||||
|
||||
internal object TypeVarianceConflictErrorFixFactories {
|
||||
|
||||
val addUnsafeVarianceAnnotationFixFactory = KotlinQuickFixFactory.IntentionBased { diagnostic: KaFirDiagnostic.TypeVarianceConflictError ->
|
||||
val typeReference = diagnostic.psi as? KtTypeReference ?: return@IntentionBased emptyList()
|
||||
|
||||
listOf(
|
||||
AddAnnotationFix(typeReference, ClassId.topLevel(StandardNames.FqNames.unsafeVariance), Kind.Self)
|
||||
)
|
||||
}
|
||||
}
|
||||
+22
@@ -6706,7 +6706,29 @@ public abstract class HighLevelQuickFixTestGenerated extends AbstractHighLevelQu
|
||||
}
|
||||
}
|
||||
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
@TestMetadata("../../../idea/tests/testData/quickfix/addUnsafeVarianceAnnotation")
|
||||
public static class AddUnsafeVarianceAnnotation 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("parameterType.kt")
|
||||
public void testParameterType() throws Exception {
|
||||
runTest("../../../idea/tests/testData/quickfix/addUnsafeVarianceAnnotation/parameterType.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("returnType.kt")
|
||||
public void testReturnType() throws Exception {
|
||||
runTest("../../../idea/tests/testData/quickfix/addUnsafeVarianceAnnotation/returnType.kt");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
+2
-1
@@ -2,4 +2,5 @@
|
||||
interface Foo<out E> {
|
||||
fun bar(e: E<caret>)
|
||||
}
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationFix
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationFix
|
||||
+2
-1
@@ -2,4 +2,5 @@
|
||||
interface Foo<out E> {
|
||||
fun bar(e: @UnsafeVariance E)
|
||||
}
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationFix
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationFix
|
||||
+2
-1
@@ -2,4 +2,5 @@
|
||||
interface Foo<in E> {
|
||||
fun bar(): E<caret>
|
||||
}
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationFix
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationFix
|
||||
+2
-1
@@ -2,4 +2,5 @@
|
||||
interface Foo<in E> {
|
||||
fun bar(): @UnsafeVariance E
|
||||
}
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationFix
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddAnnotationFix
|
||||
+1
-1
@@ -90,7 +90,7 @@ internal fun MutableTWorkspace.generateK2FixTests() {
|
||||
model("$idea/quickfix/addStarProjections", pattern = pattern)
|
||||
model("$idea/quickfix/addSuspend", pattern = pattern, isIgnored = true)
|
||||
model("$idea/quickfix/addTypeAnnotationToValueParameter", pattern = pattern)
|
||||
model("$idea/quickfix/addUnsafeVarianceAnnotation", pattern = pattern, isIgnored = true)
|
||||
model("$idea/quickfix/addUnsafeVarianceAnnotation", pattern = pattern)
|
||||
model("$idea/quickfix/addVarianceModifier", pattern = pattern, isIgnored = true)
|
||||
model("$idea/quickfix/assignToProperty", pattern = pattern, isIgnored = true)
|
||||
model("$idea/quickfix/callFromPublicInline", pattern = pattern)
|
||||
|
||||
Reference in New Issue
Block a user