From d8398bb0abb9d899f0597556bc7d5b3989fb821f Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 13 May 2020 17:49:29 +0300 Subject: [PATCH] [FIR2IR] Handle external declaration parents more accurately This allows us to set declaration parent immediately, not at some moment after its creation --- .../kotlin/fir/backend/Fir2IrClassifierStorage.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) 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 d61ff63da33..fb258b8d31a 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 @@ -354,16 +354,15 @@ class Fir2IrClassifierStorage( val firClass = firClassSymbol.fir getCachedIrClass(firClass)?.let { return symbolTable.referenceClass(it.descriptor) } // 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) { + val irClass = createIrClass(firClass) return symbolTable.referenceClass(irClass.descriptor) } val classId = firClassSymbol.classId val parentId = classId.outerClassId val irParent = declarationStorage.findIrParent(classId.packageFqName, parentId, firClassSymbol) - if (irParent != null) { - irClass.parent = irParent - } + val irClass = createIrClass(firClass, irParent) + if (irParent is IrExternalPackageFragment) { declarationStorage.addDeclarationsToExternalClass(firClass as FirRegularClass, irClass) }