[K2] Correctly handle case when expect annotation is unresolved
Don't report if annotation has error type. Review: KT-MR-12250 ^KT-62026 Fixed
This commit is contained in:
committed by
Space Team
parent
04c1bf749c
commit
c88b4105c5
+10
-3
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.name.ClassId
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.calls.mpp.ExpectActualCollectionArgumentsCompatibilityCheckStrategy
|
import org.jetbrains.kotlin.resolve.calls.mpp.ExpectActualCollectionArgumentsCompatibilityCheckStrategy
|
||||||
import org.jetbrains.kotlin.resolve.calls.mpp.ExpectActualMatchingContext.AnnotationCallInfo
|
import org.jetbrains.kotlin.resolve.calls.mpp.ExpectActualMatchingContext.AnnotationCallInfo
|
||||||
import org.jetbrains.kotlin.mpp.SourceElementMarker
|
|
||||||
import org.jetbrains.kotlin.resolve.checkers.OptInNames
|
import org.jetbrains.kotlin.resolve.checkers.OptInNames
|
||||||
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility
|
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility
|
||||||
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
||||||
@@ -388,7 +387,7 @@ class FirExpectActualMatchingContextImpl private constructor(
|
|||||||
override val annotationSymbol: FirAnnotation = annotation
|
override val annotationSymbol: FirAnnotation = annotation
|
||||||
|
|
||||||
override val classId: ClassId?
|
override val classId: ClassId?
|
||||||
get() = annotation.toAnnotationClassId(actualSession)
|
get() = getAnnotationConeType()?.lookupTag?.classId
|
||||||
|
|
||||||
override val isRetentionSource: Boolean
|
override val isRetentionSource: Boolean
|
||||||
get() = getAnnotationClass()?.getRetention(actualSession) == AnnotationRetention.SOURCE
|
get() = getAnnotationClass()?.getRetention(actualSession) == AnnotationRetention.SOURCE
|
||||||
@@ -397,7 +396,15 @@ class FirExpectActualMatchingContextImpl private constructor(
|
|||||||
get() = getAnnotationClass()?.hasAnnotation(OptInNames.REQUIRES_OPT_IN_CLASS_ID, actualSession) ?: false
|
get() = getAnnotationClass()?.hasAnnotation(OptInNames.REQUIRES_OPT_IN_CLASS_ID, actualSession) ?: false
|
||||||
|
|
||||||
private fun getAnnotationClass(): FirRegularClassSymbol? =
|
private fun getAnnotationClass(): FirRegularClassSymbol? =
|
||||||
annotation.annotationTypeRef.coneType.toRegularClassSymbol(actualSession)
|
getAnnotationConeType()?.toRegularClassSymbol(actualSession)
|
||||||
|
|
||||||
|
private fun getAnnotationConeType(): ConeClassLikeType? {
|
||||||
|
val coneType = annotation.toAnnotationClassLikeType(actualSession)
|
||||||
|
if (coneType is ConeErrorType) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
return coneType
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override val DeclarationSymbolMarker.hasSourceAnnotationsErased: Boolean
|
override val DeclarationSymbolMarker.hasSourceAnnotationsErased: Boolean
|
||||||
|
|||||||
Vendored
-9
@@ -1,9 +0,0 @@
|
|||||||
// DIAGNOSTICS: -UNRESOLVED_REFERENCE
|
|
||||||
// MODULE: m1-common
|
|
||||||
// FILE: common.kt
|
|
||||||
@NonExistingClass
|
|
||||||
expect fun foo()
|
|
||||||
|
|
||||||
// MODULE: m1-jvm()()(m1-common)
|
|
||||||
// FILE: jvm.kt
|
|
||||||
actual fun <!ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT!>foo<!>() {}
|
|
||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// DIAGNOSTICS: -UNRESOLVED_REFERENCE
|
// DIAGNOSTICS: -UNRESOLVED_REFERENCE
|
||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|||||||
Reference in New Issue
Block a user