Preserve origin LAMBDA. The inliner seems to be looking at it.

This commit is contained in:
Alexander Gorshenev
2017-04-17 17:32:38 +03:00
committed by alexander-gorshenev
parent d79875ac7c
commit e60754474a
2 changed files with 9 additions and 2 deletions
@@ -69,7 +69,8 @@ message IrBreak {
message IrBlock {
required bool is_transparent_scope = 1;
repeated IrStatement statement = 2;
required bool is_lambda_origin = 2;
repeated IrStatement statement = 3;
}
message MemberAccessCommon {
@@ -130,8 +130,12 @@ internal class IrSerializer(val context: Context,
}
fun serializeBlock(block: IrBlock): KonanIr.IrBlock {
val isLambdaOrigin =
block.origin == IrStatementOrigin.LAMBDA ||
block.origin == IrStatementOrigin.ANONYMOUS_FUNCTION
val proto = KonanIr.IrBlock.newBuilder()
.setIsTransparentScope(block.isTransparentScope)
.setIsLambdaOrigin(isLambdaOrigin)
block.statements.forEach {
proto.addStatement(serializeStatement(it))
}
@@ -657,7 +661,9 @@ internal class IrDeserializer(val context: Context,
statements.add(deserializeStatement(it) as IrStatement)
}
val block = IrBlockImpl(start, end, type, null, statements)
val isLambdaOrigin = if (proto.isLambdaOrigin) IrStatementOrigin.LAMBDA else null
val block = IrBlockImpl(start, end, type, isLambdaOrigin, statements)
// TODO: Need to set isTransparentScope somehow
return block