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:
committed by
Space Team
parent
f6fa78b653
commit
f3c29e1707
+5
-1
@@ -61,7 +61,6 @@ internal fun PhaseContext.fir2Ir(
|
|||||||
lookupTracker = LookupTracker.DO_NOTHING
|
lookupTracker = LookupTracker.DO_NOTHING
|
||||||
)
|
)
|
||||||
dependencies += moduleDescriptor
|
dependencies += moduleDescriptor
|
||||||
moduleDescriptor.setDependencies(ArrayList(dependencies))
|
|
||||||
|
|
||||||
val isBuiltIns = moduleDescriptor.isNativeStdlib()
|
val isBuiltIns = moduleDescriptor.isNativeStdlib()
|
||||||
if (isBuiltIns) builtInsModule = moduleDescriptor.builtIns
|
if (isBuiltIns) builtInsModule = moduleDescriptor.builtIns
|
||||||
@@ -69,6 +68,11 @@ internal fun PhaseContext.fir2Ir(
|
|||||||
moduleDescriptor
|
moduleDescriptor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
librariesDescriptors.forEach { moduleDescriptor ->
|
||||||
|
// Yes, just to all of them.
|
||||||
|
moduleDescriptor.setDependencies(ArrayList(dependencies))
|
||||||
|
}
|
||||||
|
|
||||||
val fir2irResult = Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded(
|
val fir2irResult = Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded(
|
||||||
input.session, input.scopeSession, input.firFiles + commonFirFiles,
|
input.session, input.scopeSession, input.firFiles + commonFirFiles,
|
||||||
configuration.languageVersionSettings, signaturer,
|
configuration.languageVersionSettings, signaturer,
|
||||||
|
|||||||
Reference in New Issue
Block a user