[Commonizer] Minor. Extract common module names from CommonizerParameters

This commit is contained in:
Dmitriy Dolovov
2021-02-05 23:38:23 +03:00
parent 97000b1285
commit 25df25ccc6
2 changed files with 9 additions and 6 deletions
@@ -38,14 +38,17 @@ class CommonizerParameters(
_resultsConsumer = value
}
fun hasAnythingToCommonize(): Boolean {
if (_targetProviders.size < 2) return false // too few targets
fun getCommonModuleNames(): Set<String> {
if (_targetProviders.size < 2) return emptySet() // too few targets
val allModuleNames: List<Set<String>> = _targetProviders.values.map { targetProvider ->
targetProvider.modulesProvider.loadModuleInfos().mapTo(HashSet()) { it.name }
}
val commonModuleNames: Set<String> = allModuleNames.reduce { a, b -> a intersect b }
return commonModuleNames.isNotEmpty() // there are modules that are present in every target
return allModuleNames.reduce { a, b -> a intersect b } // there are modules that are present in every target
}
fun hasAnythingToCommonize(): Boolean {
return getCommonModuleNames().isNotEmpty()
}
}
@@ -74,7 +74,7 @@ class CirTreeMerger(
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 = parameters.getCommonModuleNames()
parameters.targetProviders.forEachIndexed { targetIndex, targetProvider ->
val commonModuleInfos = allModuleInfos[targetIndex].filterKeys { it in commonModuleNames }
@@ -127,7 +127,7 @@ class CirTreeMerger(
val moduleNode: CirModuleNode = rootNode.modules.getOrPut(moduleName) {
buildModuleNode(storageManager, size)
}
moduleNode.targetDeclarations[targetIndex] = CirModuleFactory.create(moduleDescriptor)
moduleNode.targetDeclarations[targetIndex] = CirModuleFactory.create(moduleName)
moduleDescriptor.collectNonEmptyPackageMemberScopes { packageFqName, packageMemberScope ->
processPackage(moduleNode, targetIndex, packageFqName.intern(), packageMemberScope)