JVM_IR: record file facade fq name in serialized IR
This is needed to distinguish between file level privates by signature.
This commit is contained in:
committed by
TeamCityServer
parent
c0f6508ff9
commit
633e3a82e2
+9
-4
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.backend.jvm
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.serialization.DeclarationTable
|
||||
import org.jetbrains.kotlin.backend.jvm.lower.getFileClassInfo
|
||||
import org.jetbrains.kotlin.backend.jvm.serialization.JvmGlobalDeclarationTable
|
||||
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIrSerializerSession
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
@@ -14,25 +15,29 @@ import org.jetbrains.kotlin.config.JvmSerializeIrMode
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||
import org.jetbrains.kotlin.ir.util.IrMessageLogger
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
class JvmIrSerializerImpl(private val configuration: CompilerConfiguration) : JvmIrSerializer {
|
||||
|
||||
private val declarationTable = DeclarationTable(JvmGlobalDeclarationTable())
|
||||
|
||||
override fun serializeIrFile(irFile: IrFile): ByteArray? {
|
||||
return makeSerializerSession().serializeJvmIrFile(irFile)?.toByteArray()
|
||||
val fileClassFqName = irFile.getFileClassInfo().fileClassFqName
|
||||
return makeSerializerSession(fileClassFqName).serializeJvmIrFile(irFile)?.toByteArray()
|
||||
}
|
||||
|
||||
override fun serializeTopLevelIrClass(irClass: IrClass): ByteArray? {
|
||||
assert(irClass.parent is IrFile)
|
||||
return makeSerializerSession().serializeTopLevelClass(irClass)?.toByteArray()
|
||||
val fileClassFqName = (irClass.parent as IrFile).getFileClassInfo().fileClassFqName
|
||||
return makeSerializerSession(fileClassFqName).serializeTopLevelClass(irClass)?.toByteArray()
|
||||
}
|
||||
|
||||
private fun makeSerializerSession() =
|
||||
private fun makeSerializerSession(fileClassFqName: FqName) =
|
||||
JvmIrSerializerSession(
|
||||
configuration.get(IrMessageLogger.IR_MESSAGE_LOGGER) ?: IrMessageLogger.None,
|
||||
declarationTable,
|
||||
mutableMapOf(),
|
||||
configuration.get(JVMConfigurationKeys.SERIALIZE_IR) ?: JvmSerializeIrMode.NONE
|
||||
configuration.get(JVMConfigurationKeys.SERIALIZE_IR) ?: JvmSerializeIrMode.NONE,
|
||||
fileClassFqName
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user