K2/Native: fix ModuleDescriptor dependencies in fir2ir phase

Previous implementation set Nth ModuleDescriptor dependencies to the
first N modules. This is not always correct: for example, when producing
a metadata klib (-Xmetadata-klib) for HMPP, metadata dependencies might
have inexact or missing depends= in their manifests.

This commit sets ModuleDescriptor dependencies to all other
deserialized modules. The same approach is used for K1. That way, the
implementation is more reliable.

^KT-56071
This commit is contained in:
Svyatoslav Scherbina
2023-01-26 14:35:15 +01:00
committed by Space Team
parent f6fa78b653
commit f3c29e1707
@@ -61,7 +61,6 @@ internal fun PhaseContext.fir2Ir(
lookupTracker = LookupTracker.DO_NOTHING
)
dependencies += moduleDescriptor
moduleDescriptor.setDependencies(ArrayList(dependencies))
val isBuiltIns = moduleDescriptor.isNativeStdlib()
if (isBuiltIns) builtInsModule = moduleDescriptor.builtIns
@@ -69,6 +68,11 @@ internal fun PhaseContext.fir2Ir(
moduleDescriptor
}
librariesDescriptors.forEach { moduleDescriptor ->
// Yes, just to all of them.
moduleDescriptor.setDependencies(ArrayList(dependencies))
}
val fir2irResult = Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded(
input.session, input.scopeSession, input.firFiles + commonFirFiles,
configuration.languageVersionSettings, signaturer,