diff --git a/annotations/com/intellij/openapi/roots/annotations.xml b/annotations/com/intellij/openapi/roots/annotations.xml
index 1193afad48a..f0bdec252df 100644
--- a/annotations/com/intellij/openapi/roots/annotations.xml
+++ b/annotations/com/intellij/openapi/roots/annotations.xml
@@ -26,4 +26,8 @@
name='com.intellij.openapi.roots.ProjectFileIndex.SERVICE com.intellij.openapi.roots.ProjectFileIndex getInstance(com.intellij.openapi.project.Project)'>
+ -
+
+
\ No newline at end of file
diff --git a/annotations/com/intellij/psi/util/annotations.xml b/annotations/com/intellij/psi/util/annotations.xml
index bf2a653fb92..6b2454ad99d 100644
--- a/annotations/com/intellij/psi/util/annotations.xml
+++ b/annotations/com/intellij/psi/util/annotations.xml
@@ -3,7 +3,11 @@
name='com.intellij.psi.util.CachedValueProvider.Result com.intellij.psi.util.CachedValueProvider.Result<T> create(T, java.lang.Object...)'>
- -
+
+
+ -
diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/KotlinCacheService.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/KotlinCacheService.kt
index 7a5ddd8a135..5e2e49dac7d 100644
--- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/KotlinCacheService.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/KotlinCacheService.kt
@@ -33,13 +33,9 @@ import org.jetbrains.jet.plugin.project.TargetPlatform.*
import org.jetbrains.jet.plugin.project.ResolveSessionForBodies
import org.jetbrains.jet.plugin.project.TargetPlatformDetector
import org.jetbrains.jet.lang.psi.JetCodeFragment
-import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
-import org.jetbrains.jet.lang.descriptors.ModuleDescriptor
-import org.jetbrains.jet.lang.resolve.DescriptorUtils
-import org.jetbrains.jet.context.GlobalContext
import org.jetbrains.jet.plugin.stubindex.JetSourceFilterScope
-import com.intellij.psi.PsiElement
import org.jetbrains.jet.utils.keysToMap
+import com.intellij.openapi.roots.ProjectRootModificationTracker
private val LOG = Logger.getInstance(javaClass())
@@ -68,6 +64,7 @@ public class KotlinCacheService(val project: Project) {
fun globalResolveSessionProvider(
platform: TargetPlatform,
+ dependencies: Collection,
reuseDataFromCache: KotlinResolveCache? = null,
syntheticFiles: Collection = listOf(),
moduleFilter: (IdeaModuleInfo) -> Boolean = { true }
@@ -75,24 +72,24 @@ public class KotlinCacheService(val project: Project) {
val analyzerFacade = AnalyzerFacadeProvider.getAnalyzerFacade(platform)
val delegateResolverProvider = reuseDataFromCache?.moduleResolverProvider ?: EmptyModuleResolverProvider
val moduleResolverProvider = createModuleResolverProvider(project, analyzerFacade, syntheticFiles, delegateResolverProvider, moduleFilter)
- CachedValueProvider.Result.create(
- moduleResolverProvider,
- PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT,
- moduleResolverProvider.exceptionTracker
- )
+ val allDependencies = dependencies + listOf(moduleResolverProvider.exceptionTracker)
+ CachedValueProvider.Result.create(moduleResolverProvider, allDependencies)
}
private val globalCachesPerPlatform = listOf(JVM, JS).keysToMap { platform -> GlobalCache(platform) }
private inner class GlobalCache(platform: TargetPlatform) {
val librariesCache = KotlinResolveCache(
- project, globalResolveSessionProvider(platform, moduleFilter = { it.isLibraryClasses() })
+ project, globalResolveSessionProvider(platform,
+ moduleFilter = { it.isLibraryClasses() },
+ dependencies = listOf(ProjectRootModificationTracker.getInstance(project)))
)
val modulesCache = KotlinResolveCache(
project, globalResolveSessionProvider(platform,
reuseDataFromCache = librariesCache,
- moduleFilter = { !it.isLibraryClasses() })
+ moduleFilter = { !it.isLibraryClasses() },
+ dependencies = listOf(PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT))
)
}
@@ -107,7 +104,8 @@ public class KotlinCacheService(val project: Project) {
targetPlatform,
syntheticFiles = listOf(file),
reuseDataFromCache = globalCachesPerPlatform[targetPlatform]!!.librariesCache,
- moduleFilter = { !it.isLibraryClasses() }
+ moduleFilter = { !it.isLibraryClasses() },
+ dependencies = listOf(PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT)
)
)
}