diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt index 910902e9b46..638d6bec027 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt @@ -86,8 +86,10 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService { } } - private fun getFacadeForScriptDependencies(scriptModuleInfo: ScriptModuleInfo) = synchronized(facadesForScriptDependencies) { - facadesForScriptDependencies.get(scriptModuleInfo) + private fun getFacadeForScriptDependencies(scriptModuleInfo: ScriptModuleInfo): ProjectResolutionFacade { + return synchronized(facadesForScriptDependencies) { + facadesForScriptDependencies.get(scriptModuleInfo) + } } private fun createFacadeForScriptDependencies( @@ -96,12 +98,12 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService { ): ProjectResolutionFacade { val sdk = findJdk(dependenciesModuleInfo.scriptModuleInfo?.externalDependencies, project) val platform = JvmPlatform // TODO: Js scripts? - val facadeKey = PlatformAnalysisSettings(platform, sdk, true) - val sdkFacade = GlobalFacade(facadeKey).facadeForSdk + val settings = PlatformAnalysisSettings(platform, sdk, true) + val sdkFacade = GlobalFacade(settings).facadeForSdk val globalContext = sdkFacade.globalContext.contextWithNewLockAndCompositeExceptionTracker() return ProjectResolutionFacade( "facadeForScriptDependencies", "dependencies of scripts", - project, globalContext, facadeKey, + project, globalContext, settings, reuseDataFrom = sdkFacade, allModules = dependenciesModuleInfo.dependencies(), //TODO: provide correct trackers @@ -111,6 +113,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService { ScriptDependenciesModificationTracker.getInstance(project) ), moduleFilter = { it == dependenciesModuleInfo }, + invalidateOnOOCB = true, syntheticFiles = syntheticFiles ) } @@ -152,7 +155,8 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService { dependencies = listOf( LibraryModificationTracker.getInstance(project), ProjectRootModificationTracker.getInstance(project) - ) + ), + invalidateOnOOCB = true ) } @@ -217,6 +221,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService { reuseDataFrom = reuseDataFrom, moduleFilter = moduleFilter, dependencies = dependenciesForSyntheticFileCache, + invalidateOnOOCB = true, allModules = allModules ) } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt index ccc9ac85001..97e0f9cfb3f 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt @@ -49,14 +49,14 @@ fun createModuleResolverProvider( syntheticFiles: Collection, delegateResolver: ResolverForProject, moduleFilter: (IdeaModuleInfo) -> Boolean, - allModules: Collection?, + allModules: Collection, providedBuiltIns: KotlinBuiltIns?, // null means create new builtins based on SDK dependencies: Collection, invalidateOnOOCB: Boolean = true ): ModuleResolverProvider { val builtIns = providedBuiltIns ?: createBuiltIns(analysisSettings, globalContext) - val allModuleInfos = (allModules ?: collectAllModuleInfosFromIdeaModel(project)).toHashSet() + val allModuleInfos = allModules.toMutableSet() val syntheticFilesByModule = syntheticFiles.groupBy(KtFile::getModuleInfo) val syntheticFilesModules = syntheticFilesByModule.keys diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/moduleDependents.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleIndexCache.kt similarity index 100% rename from idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/moduleDependents.kt rename to idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleIndexCache.kt diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt index 0e3d550c0c2..47e6ad27f28 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt @@ -41,7 +41,7 @@ internal class ProjectResolutionFacade( val reuseDataFrom: ProjectResolutionFacade?, val moduleFilter: (IdeaModuleInfo) -> Boolean, val dependencies: List, - private val invalidateOnOOCB: Boolean = true, + private val invalidateOnOOCB: Boolean, val syntheticFiles: Collection = listOf(), val allModules: Collection? = null // null means create resolvers for modules from idea model ) { @@ -62,8 +62,9 @@ internal class ProjectResolutionFacade( globalContext, settings, syntheticFiles = syntheticFiles, - delegateResolver = delegateResolverForProject, moduleFilter = moduleFilter, - allModules = allModules, + delegateResolver = delegateResolverForProject, + moduleFilter = moduleFilter, + allModules = allModules ?: collectAllModuleInfosFromIdeaModel(project), providedBuiltIns = delegateResolverProvider?.builtIns, dependencies = dependencies, invalidateOnOOCB = invalidateOnOOCB