From f85c137360dd1812f13536fcfb9fdeb92206ab01 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Tue, 31 Aug 2021 12:19:33 +0300 Subject: [PATCH] [FIR] Don't fail on serialization of annotations which are not lays on classpath --- .../kotlin/fir/serialization/FirAnnotationSerializer.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirAnnotationSerializer.kt b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirAnnotationSerializer.kt index 190908db954..d28cdcee5b0 100644 --- a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirAnnotationSerializer.kt +++ b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirAnnotationSerializer.kt @@ -17,10 +17,11 @@ import org.jetbrains.kotlin.name.Name class FirAnnotationSerializer(private val session: FirSession, internal val stringTable: FirElementAwareStringTable) { fun serializeAnnotation(annotation: FirAnnotationCall): ProtoBuf.Annotation = ProtoBuf.Annotation.newBuilder().apply { - val annotationSymbol = annotation.typeRef.coneTypeSafe()?.lookupTag?.toSymbol(session) - val annotationClass = annotationSymbol?.fir ?: error("Annotation type is not a class: ${annotationSymbol?.fir}") + val lookupTag = annotation.typeRef.coneTypeSafe()?.lookupTag + ?: error { "Annotation without proper lookup tag: ${annotation.annotationTypeRef.coneType}" } - id = stringTable.getFqNameIndex(annotationClass) + id = lookupTag.toSymbol(session)?.let { stringTable.getFqNameIndex(it.fir) } + ?: stringTable.getQualifiedClassNameIndex(lookupTag.classId) fun addArgument(argumentExpression: FirExpression, parameterName: Name) { val argument = ProtoBuf.Annotation.Argument.newBuilder()