From f6fa78b6532d5c69d38efbf4c5ec910078279f09 Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Thu, 26 Jan 2023 14:35:02 +0100 Subject: [PATCH] K2/Native: fix builtIns predicate in fir2ir phase Old implementation expected that builtIns should be based on a library with no dependencies, usually stdlib. But that doesn't work properly in some cases, e.g. when producing a metadata klib (-Xmetadata-klib) for HMPP. In that case, some of the metadata dependencies can have no depends= in the manifest, leading to the compiler choosing such a module instead of stdlib. This commit makes it look for a library that is explicitly stdlib instead. ^KT-56071 --- .../src/org/jetbrains/kotlin/backend/konan/Fir2Ir.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Fir2Ir.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Fir2Ir.kt index 0c20e7cd0d2..f23f45121bf 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Fir2Ir.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Fir2Ir.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.descriptors.deserialization.PlatformDependentTypeTransformer import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl +import org.jetbrains.kotlin.descriptors.konan.isNativeStdlib import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.backend.* import org.jetbrains.kotlin.fir.backend.jvm.Fir2IrJvmSpecialAnnotationSymbolProvider @@ -62,7 +63,7 @@ internal fun PhaseContext.fir2Ir( dependencies += moduleDescriptor moduleDescriptor.setDependencies(ArrayList(dependencies)) - val isBuiltIns = resolvedLibrary.library.unresolvedDependencies.isEmpty() + val isBuiltIns = moduleDescriptor.isNativeStdlib() if (isBuiltIns) builtInsModule = moduleDescriptor.builtIns moduleDescriptor