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