From 6c328e784592dab23b99c9f033c91fa94d32e722 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 16 Feb 2018 13:15:02 +0300 Subject: [PATCH] Fix IdeModuleInfoTests (related to KT-21771) --- .../kotlin/idea/caches/resolve/IdeaModuleInfos.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfos.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfos.kt index f01199c0706..4547bc1ef80 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfos.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfos.kt @@ -154,11 +154,15 @@ sealed class ModuleSourceInfoWithExpectedBy(private val forProduction: Boolean) return if (forProduction) expectedByModule?.productionSourceInfo() else expectedByModule?.testSourceInfo() } - override fun dependencies(): List = module.cached(CachedValueProvider { + override fun dependencies(): List = module.cached(createCachedValueProvider { CachedValueProvider.Result( ideaModelDependencies(module, forProduction), ProjectRootModificationTracker.getInstance(module.project)) }) + + // NB: CachedValueProvider must exist separately in Production / Test source info, + // otherwise caching does not work properly + protected abstract fun createCachedValueProvider(f: () -> CachedValueProvider.Result): CachedValueProvider } data class ModuleProductionSourceInfo internal constructor( @@ -168,6 +172,8 @@ data class ModuleProductionSourceInfo internal constructor( override val name = Name.special("") override fun contentScope(): GlobalSearchScope = ModuleProductionSourceScope(module) + + override fun createCachedValueProvider(f: () -> CachedValueProvider.Result) = CachedValueProvider { f() } } //TODO: (module refactoring) do not create ModuleTestSourceInfo when there are no test roots for module @@ -192,6 +198,8 @@ data class ModuleTestSourceInfo internal constructor( CachedValueProvider.Result(list, ProjectRootModificationTracker.getInstance(module.project)) }) + + override fun createCachedValueProvider(f: () -> CachedValueProvider.Result) = CachedValueProvider { f() } } internal fun ModuleSourceInfo.isTests() = this is ModuleTestSourceInfo