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
This commit is contained in:
Svyatoslav Scherbina
2023-01-26 14:35:02 +01:00
committed by Space Team
parent bd18fd40ea
commit f6fa78b653
@@ -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