[Commonizer] Minor. Extract common module names from CommonizerParameters
This commit is contained in:
+7
-4
@@ -38,14 +38,17 @@ class CommonizerParameters(
|
|||||||
_resultsConsumer = value
|
_resultsConsumer = value
|
||||||
}
|
}
|
||||||
|
|
||||||
fun hasAnythingToCommonize(): Boolean {
|
fun getCommonModuleNames(): Set<String> {
|
||||||
if (_targetProviders.size < 2) return false // too few targets
|
if (_targetProviders.size < 2) return emptySet() // too few targets
|
||||||
|
|
||||||
val allModuleNames: List<Set<String>> = _targetProviders.values.map { targetProvider ->
|
val allModuleNames: List<Set<String>> = _targetProviders.values.map { targetProvider ->
|
||||||
targetProvider.modulesProvider.loadModuleInfos().mapTo(HashSet()) { it.name }
|
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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -74,7 +74,7 @@ class CirTreeMerger(
|
|||||||
val allModuleInfos: List<Map<String, ModuleInfo>> = parameters.targetProviders.map { targetProvider ->
|
val allModuleInfos: List<Map<String, ModuleInfo>> = parameters.targetProviders.map { targetProvider ->
|
||||||
targetProvider.modulesProvider.loadModuleInfos().associateBy { it.name }
|
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 ->
|
parameters.targetProviders.forEachIndexed { targetIndex, targetProvider ->
|
||||||
val commonModuleInfos = allModuleInfos[targetIndex].filterKeys { it in commonModuleNames }
|
val commonModuleInfos = allModuleInfos[targetIndex].filterKeys { it in commonModuleNames }
|
||||||
@@ -127,7 +127,7 @@ class CirTreeMerger(
|
|||||||
val moduleNode: CirModuleNode = rootNode.modules.getOrPut(moduleName) {
|
val moduleNode: CirModuleNode = rootNode.modules.getOrPut(moduleName) {
|
||||||
buildModuleNode(storageManager, size)
|
buildModuleNode(storageManager, size)
|
||||||
}
|
}
|
||||||
moduleNode.targetDeclarations[targetIndex] = CirModuleFactory.create(moduleDescriptor)
|
moduleNode.targetDeclarations[targetIndex] = CirModuleFactory.create(moduleName)
|
||||||
|
|
||||||
moduleDescriptor.collectNonEmptyPackageMemberScopes { packageFqName, packageMemberScope ->
|
moduleDescriptor.collectNonEmptyPackageMemberScopes { packageFqName, packageMemberScope ->
|
||||||
processPackage(moduleNode, targetIndex, packageFqName.intern(), packageMemberScope)
|
processPackage(moduleNode, targetIndex, packageFqName.intern(), packageMemberScope)
|
||||||
|
|||||||
Reference in New Issue
Block a user