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 039ed323047..1cccde9959a 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 @@ -501,22 +501,22 @@ class Fir2IrClassifierStorage( return createLocalIrClassOnTheFly(firClass).symbol } val signature = signatureComposer.composeSignature(firClass)!! - symbolTable.referenceClassIfAny(signature)?.takeIf { it.isBound }?.let { irClassSymbol -> - val irClass = irClassSymbol.owner + val symbol = symbolTable.referenceClass(signature) + if (symbol.isBound) { + val irClass = symbol.owner classCache[firClass as FirRegularClass] = irClass val mappedTypeParameters = firClass.typeParameters.filterIsInstance().zip(irClass.typeParameters) for ((firTypeParameter, irTypeParameter) in mappedTypeParameters) { typeParameterCache[firTypeParameter] = irTypeParameter } declarationStorage.preCacheBuiltinClassMembers(firClass, irClass) - return irClassSymbol + return symbol } firClass as FirRegularClass val classId = firClassSymbol.classId val parentId = classId.outerClassId val parentClass = parentId?.let { session.symbolProvider.getClassLikeSymbolByClassId(it) } val irParent = declarationStorage.findIrParent(classId.packageFqName, parentClass?.toLookupTag(), firClassSymbol, firClass.origin)!! - val symbol = Fir2IrClassSymbol(signature) val irClass = firClass.convertWithOffsets { startOffset, endOffset -> symbolTable.declareClass(signature, { symbol }) { Fir2IrLazyClass(components, startOffset, endOffset, firClass.irOrigin(firProvider), firClass, symbol).apply { diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt index 5f55450b5d4..8ca6aa92ad7 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.fir.dispatchReceiverClassOrNull import org.jetbrains.kotlin.fir.isNewPlaceForBodyGeneration import org.jetbrains.kotlin.fir.isSubstitutionOrIntersectionOverride import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope -import org.jetbrains.kotlin.fir.symbols.Fir2IrClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.fir.types.isNullableAny @@ -40,7 +39,7 @@ class Fir2IrLazyClass( override val endOffset: Int, override var origin: IrDeclarationOrigin, override val fir: FirRegularClass, - override val symbol: Fir2IrClassSymbol, + override val symbol: IrClassSymbol, ) : IrClass(), AbstractFir2IrLazyDeclaration, Fir2IrTypeParametersContainer, IrMaybeDeserializedClass, DeserializableClass, Fir2IrComponents by components { init {