From 4f3b68f8e9f687266d563cfdb08082f56c6ac11d Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Wed, 17 May 2017 17:55:41 +0300 Subject: [PATCH] Avoid caching state in ScriptModuleInfos This led to caching stale dependencies #KT-17770 Fixed --- .../caches/resolve/KotlinCacheServiceImpl.kt | 5 ++-- .../idea/caches/resolve/ScriptModuleInfos.kt | 24 +++++++++---------- .../idea/caches/resolve/getModuleInfo.kt | 2 +- 3 files changed, 14 insertions(+), 17 deletions(-) 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 9afc18578af..8099ab3d2fa 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 @@ -80,8 +80,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService { private val facadesForScriptDependencies: SLRUCache = object : SLRUCache(2, 3) { override fun createValue(scriptModuleInfo: ScriptModuleInfo?): ProjectResolutionFacade { - val dependencies = scriptModuleInfo?.externalDependencies - return createFacadeForScriptDependencies(ScriptDependenciesModuleInfo(project, dependencies, scriptModuleInfo)) + return createFacadeForScriptDependencies(ScriptDependenciesModuleInfo(project, scriptModuleInfo)) } } @@ -93,7 +92,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService { dependenciesModuleInfo: ScriptDependenciesModuleInfo, syntheticFiles: Collection = listOf() ): ProjectResolutionFacade { - val sdk = findJdk(dependenciesModuleInfo.dependencies, project) + val sdk = findJdk(dependenciesModuleInfo.scriptModuleInfo?.externalDependencies, project) val platform = JvmPlatform // TODO: Js scripts? val facadeKey = PlatformAnalysisSettings(platform, sdk, true) val sdkFacade = GlobalFacade(facadeKey).facadeForSdk diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ScriptModuleInfos.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ScriptModuleInfos.kt index b387180a8a0..5c2d32f28f0 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ScriptModuleInfos.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ScriptModuleInfos.kt @@ -41,9 +41,8 @@ data class ScriptModuleInfo(val project: Project, val scriptFile: VirtualFile, override val moduleOrigin: ModuleOrigin get() = ModuleOrigin.OTHER - val externalDependencies by lazy { - KotlinScriptExternalImportsProvider.getInstance(project)?.getExternalImports(scriptFile) - } + val externalDependencies: KotlinScriptExternalDependencies? + get() = KotlinScriptExternalImportsProvider.getInstance(project)?.getExternalImports(scriptFile) override val name: Name = Name.special("