Evaluate allImplementingModules lazily #KT-17136 Fixed

This commit is contained in:
Mikhail Glukhikh
2017-03-29 13:35:24 +03:00
parent e66d5d6e1a
commit a35b770c8d
2 changed files with 18 additions and 10 deletions
@@ -196,6 +196,12 @@ abstract class AnalyzerFacade<in P : PlatformAnalysisParameters> {
return module.modulesWhoseInternalsAreVisible().mapTo(LinkedHashSet()) { resolverForProject.descriptorForModule(it as M) }
}
fun computeImplementingModules(module: M): Set<ModuleDescriptorImpl> =
if (modulePlatforms(module) != MultiTargetPlatform.Common) emptySet()
else modules
.filter { modulePlatforms(it) != MultiTargetPlatform.Common && module in it.dependencies() }
.mapTo(mutableSetOf(), resolverForProject::descriptorForModule)
fun setupModuleDependencies() {
modules.forEach {
module ->
@@ -203,7 +209,8 @@ abstract class AnalyzerFacade<in P : PlatformAnalysisParameters> {
LazyModuleDependencies(
storageManager,
{ computeDependencyDescriptors(module) },
{ computeModulesWhoseInternalsAreVisible(module) }
{ computeModulesWhoseInternalsAreVisible(module) },
{ computeImplementingModules(module) }
)
)
}