[FIR2IR] Handle external declaration parents more accurately
This allows us to set declaration parent immediately, not at some moment after its creation
This commit is contained in:
@@ -354,16 +354,15 @@ class Fir2IrClassifierStorage(
|
|||||||
val firClass = firClassSymbol.fir
|
val firClass = firClassSymbol.fir
|
||||||
getCachedIrClass(firClass)?.let { return symbolTable.referenceClass(it.descriptor) }
|
getCachedIrClass(firClass)?.let { return symbolTable.referenceClass(it.descriptor) }
|
||||||
// TODO: remove all this code and change to unbound symbol creation
|
// TODO: remove all this code and change to unbound symbol creation
|
||||||
val irClass = createIrClass(firClass)
|
|
||||||
if (firClass is FirAnonymousObject || firClass is FirRegularClass && firClass.visibility == Visibilities.LOCAL) {
|
if (firClass is FirAnonymousObject || firClass is FirRegularClass && firClass.visibility == Visibilities.LOCAL) {
|
||||||
|
val irClass = createIrClass(firClass)
|
||||||
return symbolTable.referenceClass(irClass.descriptor)
|
return symbolTable.referenceClass(irClass.descriptor)
|
||||||
}
|
}
|
||||||
val classId = firClassSymbol.classId
|
val classId = firClassSymbol.classId
|
||||||
val parentId = classId.outerClassId
|
val parentId = classId.outerClassId
|
||||||
val irParent = declarationStorage.findIrParent(classId.packageFqName, parentId, firClassSymbol)
|
val irParent = declarationStorage.findIrParent(classId.packageFqName, parentId, firClassSymbol)
|
||||||
if (irParent != null) {
|
val irClass = createIrClass(firClass, irParent)
|
||||||
irClass.parent = irParent
|
|
||||||
}
|
|
||||||
if (irParent is IrExternalPackageFragment) {
|
if (irParent is IrExternalPackageFragment) {
|
||||||
declarationStorage.addDeclarationsToExternalClass(firClass as FirRegularClass, irClass)
|
declarationStorage.addDeclarationsToExternalClass(firClass as FirRegularClass, irClass)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user