diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt index 71796a10cd0..75c1d10ed1f 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt @@ -44,8 +44,6 @@ class Fir2IrClassifierStorage( private val components: Fir2IrComponents, commonMemberStorage: Fir2IrCommonMemberStorage ) : Fir2IrComponents by components { - private val firProvider = session.firProvider - private val classCache: MutableMap = commonMemberStorage.classCache private val localClassesCreatedOnTheFly: MutableMap = mutableMapOf() @@ -237,7 +235,7 @@ class Fir2IrClassifierStorage( // finding the parent class that actually contains the [klass] in the tree - it is the root one that should be created on the fly val classOrLocalParent = generateSequence(klass) { c -> (c as? FirRegularClass)?.containingClassForLocalAttr?.let { lookupTag -> - (firProvider.symbolProvider.getSymbolByLookupTag(lookupTag)?.fir as? FirClass)?.takeIf { + (session.firProvider.symbolProvider.getSymbolByLookupTag(lookupTag)?.fir as? FirClass)?.takeIf { it.declarations.contains(c) } } @@ -528,7 +526,9 @@ class Fir2IrClassifierStorage( predefinedOrigin: IrDeclarationOrigin? = null, ): IrEnumEntry { getCachedIrEnumEntry(enumEntry)?.let { return it } - val containingFile = firProvider.getFirCallableContainerFile(enumEntry.symbol) + + val firProviderForEntry = enumEntry.moduleData.session.firProvider + val containingFile = firProviderForEntry.getFirCallableContainerFile(enumEntry.symbol) @Suppress("NAME_SHADOWING") val predefinedOrigin = predefinedOrigin ?: if (containingFile != null) { @@ -618,7 +618,8 @@ class Fir2IrClassifierStorage( } val irClass = firClass.convertWithOffsets { startOffset, endOffset -> declareIrClass(signature) { irClassSymbol -> - Fir2IrLazyClass(components, startOffset, endOffset, firClass.irOrigin(firProvider), firClass, irClassSymbol).apply { + val firClassOrigin = firClass.irOrigin(session.firProvider) + Fir2IrLazyClass(components, startOffset, endOffset, firClassOrigin, firClass, irClassSymbol).apply { parent = irParent } } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index 43586b15196..6d65f16c71a 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -74,8 +74,6 @@ class Fir2IrDeclarationStorage( commonMemberStorage: Fir2IrCommonMemberStorage ) : Fir2IrComponents by components { - private val firProvider = session.firProvider - private val fragmentCache: ConcurrentHashMap = ConcurrentHashMap() private class ExternalPackageFragments( @@ -1818,8 +1816,11 @@ class Fir2IrDeclarationStorage( return when (val firDeclaration = firVariableSymbol.fir) { is FirEnumEntry -> { classifierStorage.getCachedIrEnumEntry(firDeclaration)?.let { return it.symbol } - val containingFile = firProvider.getFirCallableContainerFile(firVariableSymbol) val irParentClass = firDeclaration.containingClassLookupTag()?.let { classifierStorage.findIrClass(it) } + + val firProviderForSymbol = firVariableSymbol.moduleData.session.firProvider + val containingFile = firProviderForSymbol.getFirCallableContainerFile(firVariableSymbol) + classifierStorage.createIrEnumEntry( firDeclaration, irParent = irParentClass,