From df0c250fd8e9b8083c2b07026b3156a5e356171b Mon Sep 17 00:00:00 2001 From: Sergey Rostov Date: Wed, 13 Nov 2019 17:35:56 +0300 Subject: [PATCH] Scripting: fix lost caches clearing call --- .../configuration/AbstractScriptConfigurationManager.kt | 7 ++++--- .../script/configuration/cache/ScriptConfigurationCache.kt | 1 + .../configuration/cache/ScriptConfigurationMemoryCache.kt | 5 +++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/AbstractScriptConfigurationManager.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/AbstractScriptConfigurationManager.kt index c20736fced0..f84c6c63315 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/AbstractScriptConfigurationManager.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/AbstractScriptConfigurationManager.kt @@ -214,7 +214,8 @@ internal abstract class AbstractScriptConfigurationManager( override fun clearConfigurationCachesAndRehighlight() { ScriptDependenciesModificationTracker.getInstance(project).incModificationCount() - // todo: invalidate caches? + cache.clear() + clearClassRootsCaches() if (project.isOpen) { val openedScripts = FileEditorManager.getInstance(project).openFiles.filterNot { it.isNonScript() } @@ -261,7 +262,7 @@ internal abstract class AbstractScriptConfigurationManager( } private fun newClassRootsCache() = object : ScriptClassRootsCache(project) { - override val all get() = cache.allApplied() + override val all = cache.allApplied() override fun getConfiguration(file: VirtualFile) = this@AbstractScriptConfigurationManager.getConfiguration(file) } @@ -285,7 +286,7 @@ internal abstract class AbstractScriptConfigurationManager( override fun getScriptSdk(file: VirtualFile): Sdk? = classpathRoots.getScriptSdk(file) - override fun getFirstScriptsSdk(): Sdk? = classpathRoots.getFirstScriptsSdk() + override fun getFirstScriptsSdk(): Sdk? = classpathRoots.firstScriptSdk override fun getScriptDependenciesClassFilesScope(file: VirtualFile): GlobalSearchScope = classpathRoots.getScriptDependenciesClassFilesScope(file) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationCache.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationCache.kt index 710bac51101..ca979608be5 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationCache.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationCache.kt @@ -32,6 +32,7 @@ interface ScriptConfigurationCache { fun markOutOfDate(file: VirtualFile) fun allApplied(): Collection> + fun clear() } data class ScriptConfigurationState( diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationMemoryCache.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationMemoryCache.kt index 3fe45ce1ffb..fa67a48cd24 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationMemoryCache.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationMemoryCache.kt @@ -54,4 +54,9 @@ open class ScriptConfigurationMemoryCache( if (it.value.applied?.configuration == null) null else it.key to it.value.applied?.configuration } as Collection> + + @Synchronized + override fun clear() { + memoryCache.clear() + } } \ No newline at end of file