diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIr.proto b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIr.proto index 4e90f371551..f8d1603a47f 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIr.proto +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIr.proto @@ -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 { diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/SerializeIr.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/SerializeIr.kt index 16f61f66df4..287b653c85a 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/SerializeIr.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/SerializeIr.kt @@ -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