diff --git a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt index 10f3786fa6b..48b55450dbf 100644 --- a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt +++ b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt @@ -837,7 +837,7 @@ class FirElementSerializer private constructor( private fun MutableVersionRequirementTable.serializeVersionRequirements(annotations: List): List = annotations .filter { - it.toAnnotationClassId().asSingleFqName() == RequireKotlinConstants.FQ_NAME + it.toAnnotationClassId()?.asSingleFqName() == RequireKotlinConstants.FQ_NAME } .mapNotNull(::serializeVersionRequirementFromRequireKotlin) .map(::get) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/FirAnnotationUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/FirAnnotationUtils.kt index 38901d88778..8ba3a9617d9 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/FirAnnotationUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/FirAnnotationUtils.kt @@ -26,14 +26,15 @@ private val RETENTION_CLASS_ID = ClassId.fromString("kotlin/annotation/Retention private val TARGET_CLASS_ID = ClassId.fromString("kotlin/annotation/Target") private val JVM_FIELD_CLASS_ID = ClassId.fromString("kotlin/jvm/JvmField") -private fun FirAnnotationCall.toAnnotationLookupTag(): ConeClassLikeLookupTag = - (annotationTypeRef.coneType as ConeClassLikeType).lookupTag +private fun FirAnnotationCall.toAnnotationLookupTag(): ConeClassLikeLookupTag? = + // this cast fails when we have generic-typed annotations @T + (annotationTypeRef.coneType as? ConeClassLikeType)?.lookupTag -fun FirAnnotationCall.toAnnotationClassId(): ClassId = - toAnnotationLookupTag().classId +fun FirAnnotationCall.toAnnotationClassId(): ClassId? = + toAnnotationLookupTag()?.classId private fun FirAnnotationCall.toAnnotationClass(session: FirSession): FirRegularClass? = - toAnnotationLookupTag().toSymbol(session)?.fir as? FirRegularClass + toAnnotationLookupTag()?.toSymbol(session)?.fir as? FirRegularClass // TODO: this is temporary solution, we need something better private val FirExpression.callableNameOfMetaAnnotationArgument: Name? diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/FirAnnotationsIdeRenderer.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/FirAnnotationsIdeRenderer.kt index c8142d3a64a..4c315380f7b 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/FirAnnotationsIdeRenderer.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/renderer/FirAnnotationsIdeRenderer.kt @@ -28,7 +28,7 @@ internal fun StringBuilder.renderAnnotations( } private fun FirAnnotationCall.isParameterName(): Boolean { - return toAnnotationClassId().asSingleFqName() == StandardNames.FqNames.parameterName + return toAnnotationClassId()?.asSingleFqName() == StandardNames.FqNames.parameterName } private fun renderAnnotation(annotation: FirAnnotationCall, coneTypeIdeRenderer: ConeTypeIdeRenderer, session: FirSession): String {