Fir2Ir: make sure Fir2IrLazyClass gets registered in symbol table
This commit is contained in:
committed by
Alexander Udalov
parent
1fbd79e310
commit
49bd3c1758
@@ -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<FirTypeParameter>().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 {
|
||||
|
||||
@@ -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<FirRegularClass>, Fir2IrTypeParametersContainer,
|
||||
IrMaybeDeserializedClass, DeserializableClass, Fir2IrComponents by components {
|
||||
init {
|
||||
|
||||
Reference in New Issue
Block a user