diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/descriptors/WrappedDescriptors.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/descriptors/WrappedDescriptors.kt index 20178a9ef4c..2943be80fec 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/descriptors/WrappedDescriptors.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/descriptors/WrappedDescriptors.kt @@ -382,7 +382,15 @@ open class WrappedSimpleFunctionDescriptor( var originalDescriptor: FunctionDescriptor? = null override fun getOverriddenDescriptors() = owner.overriddenSymbols.map { it.descriptor } - override fun getContainingDeclaration() = (owner.parent as IrSymbolOwner).symbol.descriptor + override fun getContainingDeclaration(): DeclarationDescriptor { + val parent = owner.parent + return if (parent is IrClass && parent.origin == IrDeclarationOrigin.FILE_CLASS && parent.parent is IrExternalPackageFragment) { + return (parent.parent as IrExternalPackageFragment).packageFragmentDescriptor + } else { + (parent as IrSymbolOwner).symbol.descriptor + } + } + override fun getModality() = owner.modality override fun getName() = owner.name override fun getVisibility() = owner.visibility @@ -833,7 +841,14 @@ open class WrappedPropertyDescriptor( override fun isConst() = owner.isConst - override fun getContainingDeclaration() = (owner.parent as IrSymbolOwner).symbol.descriptor + override fun getContainingDeclaration(): DeclarationDescriptor { + val parent = owner.parent + return if (parent is IrClass && parent.origin == IrDeclarationOrigin.FILE_CLASS && parent.parent is IrExternalPackageFragment) { + return (parent.parent as IrExternalPackageFragment).packageFragmentDescriptor + } else { + (parent as IrSymbolOwner).symbol.descriptor + } + } override fun isLateInit() = owner.isLateinit diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt index b4aa1a2b5fc..28c8048e12d 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt @@ -77,7 +77,7 @@ class Psi2IrTranslator( val irModule = moduleGenerator.generateModuleFragmentWithoutDependencies(ktFiles) // This is required for implicit casts insertion on IrTypes (work-in-progress). - moduleGenerator.generateUnboundSymbolsAsDependencies(irModule, deserializer) + moduleGenerator.generateUnboundSymbolsAsDependencies(irModule, deserializer, facadeClassGenerator) irModule.patchDeclarationParents() postprocess(context, irModule)