diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/CommonizerParameters.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/CommonizerParameters.kt index feb26fba47e..95b4fc4d980 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/CommonizerParameters.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/CommonizerParameters.kt @@ -42,7 +42,7 @@ class CommonizerParameters( if (_targetProviders.size < 2) return false // too few targets val allModuleNames: List> = _targetProviders.values.map { targetProvider -> - targetProvider.modulesProvider.loadModuleInfos().keys + targetProvider.modulesProvider.loadModuleInfos().mapTo(HashSet()) { it.name } } val commonModuleNames: Set = allModuleNames.reduce { a, b -> a intersect b } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/TargetProvider.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/TargetProvider.kt index eb4fff7dcc1..6f6e279ec53 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/TargetProvider.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/TargetProvider.kt @@ -26,6 +26,6 @@ interface ModulesProvider { val exportForwardDeclarations: Collection ) - fun loadModuleInfos(): Map + fun loadModuleInfos(): Collection fun loadModules(dependencies: Collection): Map } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionModulesProvider.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionModulesProvider.kt index 4a122088cf0..9d302d72d36 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionModulesProvider.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionModulesProvider.kt @@ -23,8 +23,8 @@ internal class NativeDistributionModulesProvider( private val storageManager: StorageManager, private val librariesToCommonize: NativeLibrariesToCommonize ) : ModulesProvider { - private val moduleInfos: Map by lazy { - librariesToCommonize.libraries.associate { library -> + private val moduleInfos by lazy { + librariesToCommonize.libraries.map { library -> val manifestData = library.manifestData val name = manifestData.uniqueName @@ -38,11 +38,11 @@ internal class NativeDistributionModulesProvider( CInteropModuleAttributes(packageFqName, manifestData.exportForwardDeclarations) } else null - name to ModuleInfo(name, location, cInteropAttributes) + ModuleInfo(name, location, cInteropAttributes) } } - override fun loadModuleInfos(): Map = moduleInfos + override fun loadModuleInfos() = moduleInfos override fun loadModules(dependencies: Collection): Map { check(dependencies.isNotEmpty()) { "At least Kotlin/Native stdlib should be provided" } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionStdlibProvider.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionStdlibProvider.kt index d46d1f33ac4..5bd6b13deb3 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionStdlibProvider.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/konan/NativeDistributionStdlibProvider.kt @@ -24,7 +24,7 @@ internal class NativeDistributionStdlibProvider( cInteropAttributes = null ) - override fun loadModuleInfos(): Map = mapOf(KONAN_STDLIB_NAME to moduleInfo) + override fun loadModuleInfos() = listOf(moduleInfo) override fun loadModules(dependencies: Collection): Map { check(dependencies.isEmpty()) diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirTreeMerger.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirTreeMerger.kt index 8188326fbb4..b26574d092f 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirTreeMerger.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/mergedtree/CirTreeMerger.kt @@ -68,12 +68,14 @@ class CirTreeMerger( val rootNode: CirRootNode = buildRootNode(storageManager, size) // remember any exported forward declarations from common fragments of dependee modules - parameters.dependeeModulesProvider?.loadModuleInfos()?.values?.forEach(::processCInteropModuleAttributes) + parameters.dependeeModulesProvider?.loadModuleInfos()?.forEach(::processCInteropModuleAttributes) // load common dependencies val dependeeModules = parameters.dependeeModulesProvider?.loadModules(emptyList())?.values.orEmpty() - val allModuleInfos: List> = parameters.targetProviders.map { it.modulesProvider.loadModuleInfos() } + val allModuleInfos: List> = parameters.targetProviders.map { targetProvider -> + targetProvider.modulesProvider.loadModuleInfos().associateBy { it.name } + } val commonModuleNames = allModuleInfos.map { it.keys }.reduce { a, b -> a intersect b } parameters.targetProviders.forEachIndexed { targetIndex, targetProvider -> diff --git a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/mocks.kt b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/mocks.kt index 0b5627fb979..e559ce1187b 100644 --- a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/mocks.kt +++ b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/mocks.kt @@ -152,7 +152,7 @@ internal val MOCK_CLASSIFIERS = CirKnownClassifiers( internal class MockModulesProvider private constructor( private val modules: Map, ) : ModulesProvider { - private val moduleInfos: Map = modules.mapValues { (name, _) -> fakeModuleInfo(name) } + private val moduleInfos = modules.keys.map { name -> fakeModuleInfo(name) } override fun loadModuleInfos() = moduleInfos override fun loadModules(dependencies: Collection): Map = modules