JVM IR: generate correct .kotlin_module files
This commit is contained in:
committed by
Alexander Udalov
parent
aa0882a74f
commit
8ae03b54d9
@@ -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<FqName, PackageParts>()
|
||||
|
||||
fun addPart(packageFqName: FqName, partInternalName: String, facadeInternalName: String?) {
|
||||
|
||||
+8
-2
@@ -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<IrDeclaration>): IrClass {
|
||||
private fun createFileClass(irFile: IrFile, fileClassMembers: List<IrDeclaration>): 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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user