FIR deserializer: handle context in more correct way
This commit is contained in:
+2
-5
@@ -313,11 +313,8 @@ class KotlinDeserializedJvmSymbolsProvider(
|
|||||||
val symbol = FirClassSymbol(classId)
|
val symbol = FirClassSymbol(classId)
|
||||||
deserializeClassToSymbol(
|
deserializeClassToSymbol(
|
||||||
classId, classProto, symbol, nameResolver, session,
|
classId, classProto, symbol, nameResolver, session,
|
||||||
parentContext ?: FirDeserializationContext.createForClass(
|
JvmBinaryAnnotationDeserializer(session, nameResolver),
|
||||||
classId, classProto, nameResolver, session,
|
parentContext, this::findAndDeserializeClass
|
||||||
JvmBinaryAnnotationDeserializer(session, nameResolver)
|
|
||||||
),
|
|
||||||
this::findAndDeserializeClass
|
|
||||||
)
|
)
|
||||||
classesCache[classId] = symbol
|
classesCache[classId] = symbol
|
||||||
val annotations = mutableListOf<FirAnnotationCall>()
|
val annotations = mutableListOf<FirAnnotationCall>()
|
||||||
|
|||||||
+3
-1
@@ -26,6 +26,7 @@ fun deserializeClassToSymbol(
|
|||||||
symbol: FirClassSymbol,
|
symbol: FirClassSymbol,
|
||||||
nameResolver: NameResolver,
|
nameResolver: NameResolver,
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
|
defaultAnnotationDeserializer: AbstractAnnotationDeserializer?,
|
||||||
parentContext: FirDeserializationContext? = null,
|
parentContext: FirDeserializationContext? = null,
|
||||||
deserializeNestedClass: (ClassId, FirDeserializationContext) -> FirClassSymbol?
|
deserializeNestedClass: (ClassId, FirDeserializationContext) -> FirClassSymbol?
|
||||||
) {
|
) {
|
||||||
@@ -50,7 +51,8 @@ fun deserializeClassToSymbol(
|
|||||||
TypeTable(classProto.typeTable),
|
TypeTable(classProto.typeTable),
|
||||||
classId.relativeClassName
|
classId.relativeClassName
|
||||||
) ?: FirDeserializationContext.createForClass(
|
) ?: FirDeserializationContext.createForClass(
|
||||||
classId, classProto, nameResolver, session, FirBuiltinAnnotationDeserializer(session, nameResolver)
|
classId, classProto, nameResolver, session,
|
||||||
|
defaultAnnotationDeserializer ?: FirBuiltinAnnotationDeserializer(session, nameResolver)
|
||||||
)
|
)
|
||||||
typeParameters += context.typeDeserializer.ownTypeParameters.map { it.firUnsafe() }
|
typeParameters += context.typeDeserializer.ownTypeParameters.map { it.firUnsafe() }
|
||||||
annotations += context.annotationDeserializer.loadClassAnnotations(classProto)
|
annotations += context.annotationDeserializer.loadClassAnnotations(classProto)
|
||||||
|
|||||||
+1
-1
@@ -100,7 +100,7 @@ class FirLibrarySymbolProviderImpl(val session: FirSession) : FirSymbolProvider
|
|||||||
|
|
||||||
deserializeClassToSymbol(
|
deserializeClassToSymbol(
|
||||||
classId, classProto, symbol, nameResolver, session,
|
classId, classProto, symbol, nameResolver, session,
|
||||||
parentContext,
|
null, parentContext,
|
||||||
this::findAndDeserializeClass
|
this::findAndDeserializeClass
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user