FIR: pass name resolver to annotation deserializer separately

This commit is contained in:
Simon Ogorodnik
2019-04-30 17:00:43 +03:00
committed by Mikhail Glukhikh
parent 1bb4b32c91
commit 4bcba000fd
7 changed files with 36 additions and 37 deletions
@@ -9,14 +9,14 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.deserialization.AbstractAnnotationDeserializer
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.metadata.ProtoBuf
import org.jetbrains.kotlin.metadata.deserialization.NameResolver
import org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmNameResolver
class JvmBinaryAnnotationDeserializer(
session: FirSession, nameResolver: JvmNameResolver
) : AbstractAnnotationDeserializer(session, nameResolver) {
override fun loadTypeAnnotations(typeProto: ProtoBuf.Type): List<FirAnnotationCall> {
session: FirSession
) : AbstractAnnotationDeserializer(session) {
override fun loadTypeAnnotations(typeProto: ProtoBuf.Type, nameResolver: NameResolver): List<FirAnnotationCall> {
val annotations = typeProto.getExtension(JvmProtoBuf.typeAnnotation).orEmpty()
return annotations.map { deserializeAnnotation(it) }
return annotations.map { deserializeAnnotation(it, nameResolver) }
}
}
@@ -103,7 +103,7 @@ class KotlinDeserializedJvmSymbolsProvider(
packageProto,
FirDeserializationContext.createForPackage(
packageFqName, packageProto, nameResolver, session,
JvmBinaryAnnotationDeserializer(session, nameResolver)
JvmBinaryAnnotationDeserializer(session)
)
)
}
@@ -313,7 +313,7 @@ class KotlinDeserializedJvmSymbolsProvider(
val symbol = FirClassSymbol(classId)
deserializeClassToSymbol(
classId, classProto, symbol, nameResolver, session,
JvmBinaryAnnotationDeserializer(session, nameResolver),
JvmBinaryAnnotationDeserializer(session),
parentContext, this::findAndDeserializeClass
)
classesCache[classId] = symbol