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() ) }) }