diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/KotlinResolveCache.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/KotlinResolveCache.kt index 8a08b0b0e7f..517027826f3 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/KotlinResolveCache.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/KotlinResolveCache.kt @@ -73,22 +73,25 @@ public trait CacheExtension { private class KotlinResolveCache( val project: Project, - setupProvider: () -> CachedValueProvider.Result + computeModuleResolverProvider: () -> CachedValueProvider.Result ) { - private val resolverCache = SynchronizedCachedValue(project, setupProvider, trackValue = false) + private val resolverCache = SynchronizedCachedValue(project, computeModuleResolverProvider, trackValue = false) + + val moduleResolverProvider: ModuleResolverProvider + get() = resolverCache.getValue() public fun getLazyResolveSession(element: JetElement): ResolveSessionForBodies { - return resolverCache.getValue().resolveSessionForBodiesByModule(element.getModuleInfo()) + return moduleResolverProvider.resolveSessionForBodiesByModule(element.getModuleInfo()) } public fun get(extension: CacheExtension): T { - return extension.getData(resolverCache.getValue()) + return extension.getData(moduleResolverProvider) } private val analysisResults = CachedValuesManager.getManager(project).createCachedValue( { - val resolverProvider = resolverCache.getValue() + val resolverProvider = moduleResolverProvider val results = object : SLRUCache(2, 3) { override fun createValue(file: JetFile?): PerFileAnalysisCache { return PerFileAnalysisCache(file!!, resolverProvider.resolveSessionForBodiesByModule(file.getModuleInfo()))