FIR deserializer: handle context in more correct way

This commit is contained in:
Mikhail Glukhikh
2019-04-26 12:00:00 +03:00
parent 1e653226ef
commit f457cb099f
3 changed files with 6 additions and 7 deletions
@@ -313,11 +313,8 @@ class KotlinDeserializedJvmSymbolsProvider(
val symbol = FirClassSymbol(classId)
deserializeClassToSymbol(
classId, classProto, symbol, nameResolver, session,
parentContext ?: FirDeserializationContext.createForClass(
classId, classProto, nameResolver, session,
JvmBinaryAnnotationDeserializer(session, nameResolver)
),
this::findAndDeserializeClass
JvmBinaryAnnotationDeserializer(session, nameResolver),
parentContext, this::findAndDeserializeClass
)
classesCache[classId] = symbol
val annotations = mutableListOf<FirAnnotationCall>()
@@ -26,6 +26,7 @@ fun deserializeClassToSymbol(
symbol: FirClassSymbol,
nameResolver: NameResolver,
session: FirSession,
defaultAnnotationDeserializer: AbstractAnnotationDeserializer?,
parentContext: FirDeserializationContext? = null,
deserializeNestedClass: (ClassId, FirDeserializationContext) -> FirClassSymbol?
) {
@@ -50,7 +51,8 @@ fun deserializeClassToSymbol(
TypeTable(classProto.typeTable),
classId.relativeClassName
) ?: FirDeserializationContext.createForClass(
classId, classProto, nameResolver, session, FirBuiltinAnnotationDeserializer(session, nameResolver)
classId, classProto, nameResolver, session,
defaultAnnotationDeserializer ?: FirBuiltinAnnotationDeserializer(session, nameResolver)
)
typeParameters += context.typeDeserializer.ownTypeParameters.map { it.firUnsafe() }
annotations += context.annotationDeserializer.loadClassAnnotations(classProto)
@@ -100,7 +100,7 @@ class FirLibrarySymbolProviderImpl(val session: FirSession) : FirSymbolProvider
deserializeClassToSymbol(
classId, classProto, symbol, nameResolver, session,
parentContext,
null, parentContext,
this::findAndDeserializeClass
)
}