diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PackagePartRegistry.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/PackagePartRegistry.kt index 00991eab74c..1f35fd45266 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PackagePartRegistry.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PackagePartRegistry.kt @@ -19,7 +19,7 @@ package org.jetbrains.kotlin.codegen import org.jetbrains.kotlin.metadata.jvm.deserialization.PackageParts import org.jetbrains.kotlin.name.FqName -internal class PackagePartRegistry { +class PackagePartRegistry { val parts = mutableMapOf() fun addPart(packageFqName: FqName, partInternalName: String, facadeInternalName: String?) { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FileClassLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FileClassLowering.kt index 2455a4e4051..4054a69264f 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FileClassLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FileClassLowering.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.backend.common.descriptors.WrappedClassDescriptor import org.jetbrains.kotlin.backend.common.ir.createImplicitParameterDeclarationWithWrappedDescriptor import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase import org.jetbrains.kotlin.backend.jvm.JvmBackendContext +import org.jetbrains.kotlin.codegen.AsmUtil import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities @@ -62,7 +63,7 @@ private class FileClassLowering(val context: JvmBackendContext) : FileLoweringPa irFile.declarations.addAll(classes) } - fun createFileClass(irFile: IrFile, fileClassMembers: List): IrClass { + private fun createFileClass(irFile: IrFile, fileClassMembers: List): IrClass { val fileEntry = irFile.fileEntry val ktFile = context.psiSourceManager.getKtFile(fileEntry as PsiSourceManager.PsiFileEntry) ?: throw AssertionError("Unexpected file entry: $fileEntry") @@ -89,8 +90,13 @@ private class FileClassLowering(val context: JvmBackendContext) : FileLoweringPa createImplicitParameterDeclarationWithWrappedDescriptor() // TODO: figure out why reparenting leads to failing tests. // fileClassMembers.forEach { it.parent = this } + + val partClassType = AsmUtil.asmTypeByFqNameWithoutInnerClasses(fileClassInfo.fileClassFqName) + val facadeClassType = + if (fileClassInfo.withJvmMultifileClass) AsmUtil.asmTypeByFqNameWithoutInnerClasses(fileClassInfo.facadeClassFqName) + else null + context.state.factory.packagePartRegistry.addPart(irFile.fqName, partClassType.internalName, facadeClassType?.internalName) } // TODO file annotations } } -