For interop libraries provide declarations, bot not function bodies.

This commit is contained in:
Alexander Gorshenev
2019-01-25 15:11:04 +03:00
committed by alexander-gorshenev
parent 478d32ef06
commit 5894a37e4a
2 changed files with 7 additions and 4 deletions
@@ -117,11 +117,11 @@ fun runTopLevelPhases(konanConfig: KonanConfig, environment: KotlinCoreEnvironme
phaser.phase(KonanPhase.SERIALIZER) {
val declarationTable = DeclarationTable(context.irModule!!.irBuiltins, DescriptorTable())
val serializedIr = IrModuleSerializer(context, declarationTable).serializedIrModule(context.irModule!!)
val serializedIr = IrModuleSerializer(context, declarationTable, bodiesOnlyForInlines = context.config.isInteropStubs).serializedIrModule(context.irModule!!)
val serializer = KonanSerializationUtil(context, context.config.configuration.get(CommonConfigurationKeys.METADATA_VERSION)!!, declarationTable)
context.serializedLinkData =
serializer.serializeModule(context.moduleDescriptor, if (!context.config.isInteropStubs) serializedIr else null)
serializer.serializeModule(context.moduleDescriptor, /*if (!context.config.isInteropStubs) serializedIr else null*/ serializedIr)
}
phaser.phase(KonanPhase.BACKEND) {
phaser.phase(KonanPhase.LOWER) {
@@ -45,7 +45,8 @@ import org.jetbrains.kotlin.types.Variance
internal class IrModuleSerializer(
val logger: LoggingContext,
val declarationTable: DeclarationTable
val declarationTable: DeclarationTable,
val bodiesOnlyForInlines: Boolean = false
) {
private val loopIndex = mutableMapOf<IrLoop, Int>()
@@ -805,7 +806,9 @@ internal class IrModuleSerializer(
//proto.addValueParameter(serializeIrValueParameter(it))
proto.addValueParameter(serializeDeclaration(it))
}
function.body?.let { proto.body = serializeStatement(it) }
if (!bodiesOnlyForInlines || function.isInline) {
function.body?.let { proto.body = serializeStatement(it) }
}
return proto.build()
}