From ac8aae5da4e8f7e6a5b015062f37c5d012e93e26 Mon Sep 17 00:00:00 2001 From: Johan Bay Date: Tue, 9 Jan 2024 15:57:14 +0100 Subject: [PATCH] [K/N] keep all declarations inside inline functions ^KT-65442 --- .../backend/common/serialization/IrFileSerializer.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt index cb963c6f31f..1e0b1d34a26 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt @@ -142,6 +142,8 @@ open class IrFileSerializer( protected val protoDebugInfoArray = arrayListOf() + private var isInsideInline: Boolean = false + interface FileBackendSpecificMetadata { fun toByteArray(): ByteArray } @@ -1038,6 +1040,9 @@ open class IrFileSerializer( } private fun serializeIrFunctionBase(function: IrFunction, flags: Long): ProtoFunctionBase { + val isInsideInlineBefore = isInsideInline + isInsideInline = isInsideInline || function.isInline + val proto = ProtoFunctionBase.newBuilder() .setBase(serializeIrDeclarationBase(function, flags)) .setNameType(serializeNameAndType(function.name, function.returnType)) @@ -1051,13 +1056,15 @@ open class IrFileSerializer( if (contextReceiverParametersCount > 0) { proto.contextReceiverParametersCount = contextReceiverParametersCount } + function.valueParameters.forEach { proto.addValueParameter(serializeIrValueParameter(it)) } - if (!bodiesOnlyForInlines || function.isInline) { + if (!bodiesOnlyForInlines || isInsideInline) { function.body?.let { proto.body = serializeIrStatementBody(it) } } + isInsideInline = isInsideInlineBefore return proto.build() }