From b288406e3c331edf3d4afc5bad0f312315e453b3 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 29 Sep 2017 18:25:29 +0300 Subject: [PATCH] Multiplatform: Fix dependencies of implementing module descriptors cache This fixes some failing tests --- .../jetbrains/kotlin/idea/facet/facetUtils.kt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt index c370b7dd9ab..ad68853f91e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt @@ -130,18 +130,15 @@ private fun Module.findImplementingModules(modelsProvider: IdeModifiableModelsPr } } -private fun Module.findImplementingDescriptors(moduleSourceInfo: ModuleSourceInfo): List { +private fun Module.findImplementingModuleInfos(moduleSourceInfo: ModuleSourceInfo): List { val modelsProvider = IdeModifiableModelsProviderImpl(project) val implementingModules = findImplementingModules(modelsProvider) return implementingModules.mapNotNull { - val implementingModuleInfo = when (moduleSourceInfo) { + when (moduleSourceInfo) { is ModuleProductionSourceInfo -> it.productionSourceInfo() is ModuleTestSourceInfo -> it.testSourceInfo() else -> null } - implementingModuleInfo?.let { - KotlinCacheService.getInstance(project).getResolutionFacadeByModuleInfo(it, it.platform)?.moduleDescriptor - } } } @@ -150,9 +147,14 @@ val ModuleDescriptor.implementingDescriptors: List val moduleSourceInfo = getCapability(ModuleInfo.Capability) as? ModuleSourceInfo ?: return emptyList() val module = moduleSourceInfo.module return module.cached(CachedValueProvider { + val implementingModuleInfos = module.findImplementingModuleInfos(moduleSourceInfo) + val implementingModuleDescriptors = implementingModuleInfos.mapNotNull { + KotlinCacheService.getInstance(module.project).getResolutionFacadeByModuleInfo(it, it.platform)?.moduleDescriptor + } CachedValueProvider.Result( - module.findImplementingDescriptors(moduleSourceInfo), - ProjectRootModificationTracker.getInstance(module.project) + implementingModuleDescriptors, + *(implementingModuleInfos.map { it.createModificationTracker() } + + ProjectRootModificationTracker.getInstance(module.project)).toTypedArray() ) }) }