From f457cb099f292dc89ff90e095edc3e280b2f87c2 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 26 Apr 2019 12:00:00 +0300 Subject: [PATCH] FIR deserializer: handle context in more correct way --- .../KotlinDeserializedJvmSymbolsProvider.kt | 7 ++----- .../kotlin/fir/deserialization/ClassDeserialization.kt | 4 +++- .../fir/resolve/impl/FirLibrarySymbolProviderImpl.kt | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt index 59ce914318d..2b33efec54d 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt @@ -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() diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt index 1e35ce50c08..f4786ac0c88 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt @@ -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) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirLibrarySymbolProviderImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirLibrarySymbolProviderImpl.kt index 5daf7feb955..459c4213bf8 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirLibrarySymbolProviderImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirLibrarySymbolProviderImpl.kt @@ -100,7 +100,7 @@ class FirLibrarySymbolProviderImpl(val session: FirSession) : FirSymbolProvider deserializeClassToSymbol( classId, classProto, symbol, nameResolver, session, - parentContext, + null, parentContext, this::findAndDeserializeClass ) }