[Commonizer] Refactor ModulesProvider.loadModuleInfos() function
Change return type from Map<String, ModuleInfo> to Collection<ModuleInfo>
This commit is contained in:
+1
-1
@@ -42,7 +42,7 @@ class CommonizerParameters(
|
|||||||
if (_targetProviders.size < 2) return false // too few targets
|
if (_targetProviders.size < 2) return false // too few targets
|
||||||
|
|
||||||
val allModuleNames: List<Set<String>> = _targetProviders.values.map { targetProvider ->
|
val allModuleNames: List<Set<String>> = _targetProviders.values.map { targetProvider ->
|
||||||
targetProvider.modulesProvider.loadModuleInfos().keys
|
targetProvider.modulesProvider.loadModuleInfos().mapTo(HashSet()) { it.name }
|
||||||
}
|
}
|
||||||
val commonModuleNames: Set<String> = allModuleNames.reduce { a, b -> a intersect b }
|
val commonModuleNames: Set<String> = allModuleNames.reduce { a, b -> a intersect b }
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,6 @@ interface ModulesProvider {
|
|||||||
val exportForwardDeclarations: Collection<String>
|
val exportForwardDeclarations: Collection<String>
|
||||||
)
|
)
|
||||||
|
|
||||||
fun loadModuleInfos(): Map<String, ModuleInfo>
|
fun loadModuleInfos(): Collection<ModuleInfo>
|
||||||
fun loadModules(dependencies: Collection<ModuleDescriptor>): Map<String, ModuleDescriptor>
|
fun loadModules(dependencies: Collection<ModuleDescriptor>): Map<String, ModuleDescriptor>
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -23,8 +23,8 @@ internal class NativeDistributionModulesProvider(
|
|||||||
private val storageManager: StorageManager,
|
private val storageManager: StorageManager,
|
||||||
private val librariesToCommonize: NativeLibrariesToCommonize
|
private val librariesToCommonize: NativeLibrariesToCommonize
|
||||||
) : ModulesProvider {
|
) : ModulesProvider {
|
||||||
private val moduleInfos: Map<String, ModuleInfo> by lazy {
|
private val moduleInfos by lazy {
|
||||||
librariesToCommonize.libraries.associate { library ->
|
librariesToCommonize.libraries.map { library ->
|
||||||
val manifestData = library.manifestData
|
val manifestData = library.manifestData
|
||||||
|
|
||||||
val name = manifestData.uniqueName
|
val name = manifestData.uniqueName
|
||||||
@@ -38,11 +38,11 @@ internal class NativeDistributionModulesProvider(
|
|||||||
CInteropModuleAttributes(packageFqName, manifestData.exportForwardDeclarations)
|
CInteropModuleAttributes(packageFqName, manifestData.exportForwardDeclarations)
|
||||||
} else null
|
} else null
|
||||||
|
|
||||||
name to ModuleInfo(name, location, cInteropAttributes)
|
ModuleInfo(name, location, cInteropAttributes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun loadModuleInfos(): Map<String, ModuleInfo> = moduleInfos
|
override fun loadModuleInfos() = moduleInfos
|
||||||
|
|
||||||
override fun loadModules(dependencies: Collection<ModuleDescriptor>): Map<String, ModuleDescriptor> {
|
override fun loadModules(dependencies: Collection<ModuleDescriptor>): Map<String, ModuleDescriptor> {
|
||||||
check(dependencies.isNotEmpty()) { "At least Kotlin/Native stdlib should be provided" }
|
check(dependencies.isNotEmpty()) { "At least Kotlin/Native stdlib should be provided" }
|
||||||
|
|||||||
+1
-1
@@ -24,7 +24,7 @@ internal class NativeDistributionStdlibProvider(
|
|||||||
cInteropAttributes = null
|
cInteropAttributes = null
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun loadModuleInfos(): Map<String, ModuleInfo> = mapOf(KONAN_STDLIB_NAME to moduleInfo)
|
override fun loadModuleInfos() = listOf(moduleInfo)
|
||||||
|
|
||||||
override fun loadModules(dependencies: Collection<ModuleDescriptor>): Map<String, ModuleDescriptor> {
|
override fun loadModules(dependencies: Collection<ModuleDescriptor>): Map<String, ModuleDescriptor> {
|
||||||
check(dependencies.isEmpty())
|
check(dependencies.isEmpty())
|
||||||
|
|||||||
+4
-2
@@ -68,12 +68,14 @@ class CirTreeMerger(
|
|||||||
val rootNode: CirRootNode = buildRootNode(storageManager, size)
|
val rootNode: CirRootNode = buildRootNode(storageManager, size)
|
||||||
|
|
||||||
// remember any exported forward declarations from common fragments of dependee modules
|
// 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
|
// load common dependencies
|
||||||
val dependeeModules = parameters.dependeeModulesProvider?.loadModules(emptyList())?.values.orEmpty()
|
val dependeeModules = parameters.dependeeModulesProvider?.loadModules(emptyList())?.values.orEmpty()
|
||||||
|
|
||||||
val allModuleInfos: List<Map<String, ModuleInfo>> = parameters.targetProviders.map { it.modulesProvider.loadModuleInfos() }
|
val allModuleInfos: List<Map<String, ModuleInfo>> = parameters.targetProviders.map { targetProvider ->
|
||||||
|
targetProvider.modulesProvider.loadModuleInfos().associateBy { it.name }
|
||||||
|
}
|
||||||
val commonModuleNames = allModuleInfos.map { it.keys }.reduce { a, b -> a intersect b }
|
val commonModuleNames = allModuleInfos.map { it.keys }.reduce { a, b -> a intersect b }
|
||||||
|
|
||||||
parameters.targetProviders.forEachIndexed { targetIndex, targetProvider ->
|
parameters.targetProviders.forEachIndexed { targetIndex, targetProvider ->
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ internal val MOCK_CLASSIFIERS = CirKnownClassifiers(
|
|||||||
internal class MockModulesProvider private constructor(
|
internal class MockModulesProvider private constructor(
|
||||||
private val modules: Map<String, ModuleDescriptor>,
|
private val modules: Map<String, ModuleDescriptor>,
|
||||||
) : ModulesProvider {
|
) : ModulesProvider {
|
||||||
private val moduleInfos: Map<String, ModuleInfo> = modules.mapValues { (name, _) -> fakeModuleInfo(name) }
|
private val moduleInfos = modules.keys.map { name -> fakeModuleInfo(name) }
|
||||||
|
|
||||||
override fun loadModuleInfos() = moduleInfos
|
override fun loadModuleInfos() = moduleInfos
|
||||||
override fun loadModules(dependencies: Collection<ModuleDescriptor>): Map<String, ModuleDescriptor> = modules
|
override fun loadModules(dependencies: Collection<ModuleDescriptor>): Map<String, ModuleDescriptor> = modules
|
||||||
|
|||||||
Reference in New Issue
Block a user