From 1ca2a6d4ac2cc58becdbf9badd77122dca00edce Mon Sep 17 00:00:00 2001 From: Nikolay Lunyak Date: Fri, 12 Jul 2024 12:06:35 +0300 Subject: [PATCH] [kotlin] Account for ditching of `KtTypeReference` from K2 diagnostics Source elements may be generated from a plugin, in which case they will be fake sources ponting to arbitrary `KtElement`s. ^KT-68375 GitOrigin-RevId: 0535f1bd113ef9ac8417cf1f63d304229673377f --- .../idea/k2/codeinsight/fixes/MakeSuperTypeOpenFixFactory.kt | 3 ++- .../k2/codeinsight/fixes/SuperClassNotInitializedFactories.kt | 4 +++- .../k2/codeinsight/fixes/TypeOfAnnotationMemberFixFactory.kt | 3 ++- .../annotationWithVarargArrayLiteralDouble.kt | 2 +- .../annotationWithVarargArrayLiteralDouble.kt.after | 2 +- .../annotationWithVarargArrayLiteralInt.kt | 2 +- .../annotationWithVarargArrayLiteralInt.kt.after | 2 +- .../annotationWithVarargArrayLiteralString.kt | 2 +- .../annotationWithVarargArrayLiteralString.kt.after | 2 +- 9 files changed, 13 insertions(+), 9 deletions(-) diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/MakeSuperTypeOpenFixFactory.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/MakeSuperTypeOpenFixFactory.kt index 2b6a1c842a8b..de1e7a19ec76 100644 --- a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/MakeSuperTypeOpenFixFactory.kt +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/MakeSuperTypeOpenFixFactory.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.idea.quickfix.AddModifierFix import org.jetbrains.kotlin.idea.refactoring.canRefactorElement import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.KtClassOrObject +import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtTypeReference object MakeSuperTypeOpenFixFactory { @@ -23,7 +24,7 @@ object MakeSuperTypeOpenFixFactory { context(KaSession) private fun createQuickFixes( - diagnostic: KaFirDiagnostic, + diagnostic: KaFirDiagnostic, ): List { val typeRef = diagnostic.psi as? KtTypeReference ?: return emptyList() diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/SuperClassNotInitializedFactories.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/SuperClassNotInitializedFactories.kt index 3141511e3552..a3c931da88fd 100644 --- a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/SuperClassNotInitializedFactories.kt +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/SuperClassNotInitializedFactories.kt @@ -19,11 +19,13 @@ import org.jetbrains.kotlin.idea.codeinsight.api.applicators.fixes.KotlinQuickFi import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtPsiFactory import org.jetbrains.kotlin.psi.KtSuperTypeEntry +import org.jetbrains.kotlin.psi.KtTypeReference internal object SuperClassNotInitializedFactories { val addParenthesis = KotlinQuickFixFactory.ModCommandBased { diagnostic: KaFirDiagnostic.SupertypeNotInitialized -> - val typeReference = diagnostic.psi + val typeReference = diagnostic.psi as? KtTypeReference + ?: return@ModCommandBased emptyList() val superTypeEntry = typeReference.parent as? KtSuperTypeEntry ?: return@ModCommandBased emptyList() val superClassSymbol = typeReference.type.expandedSymbol as? KaNamedClassOrObjectSymbol diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/TypeOfAnnotationMemberFixFactory.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/TypeOfAnnotationMemberFixFactory.kt index fbeaac059889..4e7b1087f9ec 100644 --- a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/TypeOfAnnotationMemberFixFactory.kt +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/TypeOfAnnotationMemberFixFactory.kt @@ -5,11 +5,12 @@ import org.jetbrains.kotlin.analysis.api.fir.diagnostics.KaFirDiagnostic import org.jetbrains.kotlin.analysis.api.types.KaClassType import org.jetbrains.kotlin.idea.codeinsight.api.applicators.fixes.KotlinQuickFixFactory import org.jetbrains.kotlin.idea.quickfix.TypeOfAnnotationMemberFix +import org.jetbrains.kotlin.psi.KtTypeReference internal object TypeOfAnnotationMemberFixFactory { val typeOfAnnotationMemberFixFactory = KotlinQuickFixFactory.ModCommandBased { diagnostic: KaFirDiagnostic.InvalidTypeOfAnnotationMember -> - val typeReference = diagnostic.psi + val typeReference = diagnostic.psi as? KtTypeReference ?: return@ModCommandBased emptyList() val arrayElementType = typeReference.type.arrayElementType ?: return@ModCommandBased emptyList() if (!arrayElementType.isPrimitive) return@ModCommandBased emptyList() diff --git a/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralDouble.kt b/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralDouble.kt index 3fa4f88ce4d4..4591d56471a9 100644 --- a/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralDouble.kt +++ b/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralDouble.kt @@ -3,4 +3,4 @@ annotation class CollectionDefault(vararg val value = [1.0, 2.2]) // FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddTypeAnnotationToValueParameterFix -/* IGNORE_K2 */ \ No newline at end of file +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.k2.codeinsight.fixes.AddTypeAnnotationToValueParameterFixFactory$AddTypeAnnotationToValueParameterFix \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralDouble.kt.after b/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralDouble.kt.after index 7ead41562983..071f89bbd70b 100644 --- a/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralDouble.kt.after +++ b/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralDouble.kt.after @@ -3,4 +3,4 @@ annotation class CollectionDefault(vararg val value: Double = [1.0, 2.2]) // FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddTypeAnnotationToValueParameterFix -/* IGNORE_K2 */ \ No newline at end of file +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.k2.codeinsight.fixes.AddTypeAnnotationToValueParameterFixFactory$AddTypeAnnotationToValueParameterFix \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralInt.kt b/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralInt.kt index d26a7a05eb02..7840218e6b7b 100644 --- a/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralInt.kt +++ b/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralInt.kt @@ -3,4 +3,4 @@ annotation class CollectionDefault(vararg val value = [1, 2]) // FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddTypeAnnotationToValueParameterFix -/* IGNORE_K2 */ \ No newline at end of file +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.k2.codeinsight.fixes.AddTypeAnnotationToValueParameterFixFactory$AddTypeAnnotationToValueParameterFix \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralInt.kt.after b/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralInt.kt.after index f6a0ad4634d6..11fed225af7f 100644 --- a/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralInt.kt.after +++ b/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralInt.kt.after @@ -3,4 +3,4 @@ annotation class CollectionDefault(vararg val value: Int = [1, 2]) // FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddTypeAnnotationToValueParameterFix -/* IGNORE_K2 */ \ No newline at end of file +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.k2.codeinsight.fixes.AddTypeAnnotationToValueParameterFixFactory$AddTypeAnnotationToValueParameterFix \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralString.kt b/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralString.kt index 65e3e3caa14c..dc4aac33455b 100644 --- a/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralString.kt +++ b/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralString.kt @@ -3,4 +3,4 @@ annotation class CollectionDefault(vararg val value = ["alpha", "beta"]) // FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddTypeAnnotationToValueParameterFix -/* IGNORE_K2 */ \ No newline at end of file +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.k2.codeinsight.fixes.AddTypeAnnotationToValueParameterFixFactory$AddTypeAnnotationToValueParameterFix \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralString.kt.after b/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralString.kt.after index ccbd2600de3d..9b4d3ddf17c2 100644 --- a/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralString.kt.after +++ b/plugins/kotlin/idea/tests/testData/quickfix/addTypeAnnotationToValueParameter/annotationWithVarargArrayLiteralString.kt.after @@ -3,4 +3,4 @@ annotation class CollectionDefault(vararg val value: String = ["alpha", "beta"]) // FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddTypeAnnotationToValueParameterFix -/* IGNORE_K2 */ \ No newline at end of file +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.k2.codeinsight.fixes.AddTypeAnnotationToValueParameterFixFactory$AddTypeAnnotationToValueParameterFix \ No newline at end of file