From 77ebe1085dc6b24cbb61ea1921a58e107c2040d2 Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Mon, 18 Dec 2023 18:29:24 +0100 Subject: [PATCH] [klib tool] Return unbound symbols for dump-ir mode This is more convenient behaviour for debugging with klib-tool than just failing. Note that enabling Partial Linkage globally in klib-tool is undesirable, as it can auto-tweak IR (e.g. when overrides do not match), thus distorting the rendered IR ^KT-61143 Fixed --- .../kotlin/backend/common/serialization/KotlinIrLinker.kt | 5 ++++- .../src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt index a097eec4399..34fa329c88d 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt @@ -57,6 +57,9 @@ abstract class KotlinIrLinker( open val partialLinkageSupport: PartialLinkageSupportForLinker get() = PartialLinkageSupportForLinker.DISABLED + open val returnUnboundSymbolsIfSignatureNotFound: Boolean + get() = partialLinkageSupport.isEnabled + protected open val userVisibleIrModulesSupport: UserVisibleIrModulesSupport get() = UserVisibleIrModulesSupport.DEFAULT fun deserializeOrReturnUnboundIrSymbolIfPartialLinkageEnabled( @@ -77,7 +80,7 @@ abstract class KotlinIrLinker( val symbol: IrSymbol? = actualModuleDeserializer?.tryDeserializeIrSymbol(idSignature, symbolKind) return symbol ?: run { - if (partialLinkageSupport.isEnabled) + if (returnUnboundSymbolsIfSignatureNotFound) referenceDeserializedSymbol(symbolTable, null, symbolKind, idSignature) else SignatureIdNotFoundInModuleWithDependencies( diff --git a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt index f053b093776..2315f03dbb1 100644 --- a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt +++ b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt @@ -274,6 +274,10 @@ class Library(val libraryNameOrPath: String, val requestedRepository: String?) { friendModules = emptyMap(), partialLinkageSupport = PartialLinkageSupportForLinker.DISABLED, ) + + override val returnUnboundSymbolsIfSignatureNotFound: Boolean + get() = true + override val translationPluginContext: TranslationPluginContext get() = TODO("Not needed for ir dumping")