[K/N] keep all declarations inside inline functions

^KT-65442
This commit is contained in:
Johan Bay
2024-01-09 15:57:14 +01:00
committed by Space Cloud
parent d4abc30096
commit ac8aae5da4
@@ -142,6 +142,8 @@ open class IrFileSerializer(
protected val protoDebugInfoArray = arrayListOf<String>() protected val protoDebugInfoArray = arrayListOf<String>()
private var isInsideInline: Boolean = false
interface FileBackendSpecificMetadata { interface FileBackendSpecificMetadata {
fun toByteArray(): ByteArray fun toByteArray(): ByteArray
} }
@@ -1038,6 +1040,9 @@ open class IrFileSerializer(
} }
private fun serializeIrFunctionBase(function: IrFunction, flags: Long): ProtoFunctionBase { private fun serializeIrFunctionBase(function: IrFunction, flags: Long): ProtoFunctionBase {
val isInsideInlineBefore = isInsideInline
isInsideInline = isInsideInline || function.isInline
val proto = ProtoFunctionBase.newBuilder() val proto = ProtoFunctionBase.newBuilder()
.setBase(serializeIrDeclarationBase(function, flags)) .setBase(serializeIrDeclarationBase(function, flags))
.setNameType(serializeNameAndType(function.name, function.returnType)) .setNameType(serializeNameAndType(function.name, function.returnType))
@@ -1051,13 +1056,15 @@ open class IrFileSerializer(
if (contextReceiverParametersCount > 0) { if (contextReceiverParametersCount > 0) {
proto.contextReceiverParametersCount = contextReceiverParametersCount proto.contextReceiverParametersCount = contextReceiverParametersCount
} }
function.valueParameters.forEach { function.valueParameters.forEach {
proto.addValueParameter(serializeIrValueParameter(it)) proto.addValueParameter(serializeIrValueParameter(it))
} }
if (!bodiesOnlyForInlines || function.isInline) { if (!bodiesOnlyForInlines || isInsideInline) {
function.body?.let { proto.body = serializeIrStatementBody(it) } function.body?.let { proto.body = serializeIrStatementBody(it) }
} }
isInsideInline = isInsideInlineBefore
return proto.build() return proto.build()
} }