From d4abc3009688c6060660bb5c77846ff139d6c671 Mon Sep 17 00:00:00 2001 From: Johan Bay Date: Tue, 9 Jan 2024 15:55:51 +0100 Subject: [PATCH] [K/N] keep coordinates for inline functions ^KT-65442 --- .../common/serialization/IrFileSerializer.kt | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) 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 8e04e028f13..cb963c6f31f 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 @@ -185,11 +185,7 @@ open class IrFileSerializer( private fun serializeIrStatementOrigin(origin: IrStatementOrigin): Int = serializeString(origin.debugName) - private fun serializeCoordinates(start: Int, end: Int): Long = if (skipPrivateApi) { - 0L - } else { - BinaryCoordinates.encode(start, end) - } + private fun serializeCoordinates(start: Int, end: Int): Long = BinaryCoordinates.encode(start, end) /* ------- Strings ---------------------------------------------------------- */ @@ -1005,7 +1001,7 @@ open class IrFileSerializer( private fun serializeIrDeclarationBase(declaration: IrDeclaration, flags: Long?): ProtoDeclarationBase { return with(ProtoDeclarationBase.newBuilder()) { symbol = serializeIrSymbol((declaration as IrSymbolOwner).symbol, isDeclared = true) - coordinates = serializeCoordinates(declaration.startOffset, declaration.endOffset) + coordinates = if (skipPrivateApi && !isInsideInline) 0L else serializeCoordinates(declaration.startOffset, declaration.endOffset) addAllAnnotation(serializeAnnotations(declaration.annotations)) flags?.let { setFlags(it) } originName = serializeIrDeclarationOrigin(declaration.origin) @@ -1201,7 +1197,7 @@ open class IrFileSerializer( private fun serializeIrErrorDeclaration(errorDeclaration: IrErrorDeclaration): ProtoErrorDeclaration { val proto = ProtoErrorDeclaration.newBuilder() - .setCoordinates(serializeCoordinates(errorDeclaration.startOffset, errorDeclaration.endOffset)) + .setCoordinates(if (skipPrivateApi) 0L else serializeCoordinates(errorDeclaration.startOffset, errorDeclaration.endOffset)) return proto.build() } @@ -1330,7 +1326,6 @@ open class IrFileSerializer( val topLevelDeclarations = mutableListOf() val proto = ProtoFile.newBuilder() - .setFileEntry(serializeFileEntry(file.fileEntry, includeLineStartOffsets = !skipPrivateApi)) .addAllFqName(serializeFqName(file.packageFqName.asString())) .addAllAnnotation(serializeAnnotations(file.annotations)) @@ -1357,6 +1352,8 @@ open class IrFileSerializer( proto.addDeclarationId(sigIndex) } + proto.setFileEntry(serializeFileEntry(file.fileEntry, includeLineStartOffsets = !(skipPrivateApi && protoBodyArray.isEmpty()))) + // TODO: is it Konan specific? // Make sure that all top level properties are initialized on library's load.