From b4185c9d47287c79426cf01d678b18eabc1cf186 Mon Sep 17 00:00:00 2001 From: Sergey Rostov Date: Wed, 13 Nov 2019 10:34:43 +0300 Subject: [PATCH] ScriptClassRootsCache: load configuration if it is not cached --- .../AbstractScriptConfigurationManager.kt | 8 +++++++- .../configuration/utils/ScriptClassRootsCache.kt | 10 +++------- 2 files changed, 10 insertions(+), 8 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 e5864ca2c87..c20736fced0 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 @@ -254,12 +254,18 @@ internal abstract class AbstractScriptConfigurationManager( val value2 = _classpathRoots if (value2 != null) return value2 - val value3 = ScriptClassRootsCache(project, cache) + val value3 = newClassRootsCache() _classpathRoots = value3 return value3 } } + private fun newClassRootsCache() = object : ScriptClassRootsCache(project) { + override val all get() = cache.allApplied() + override fun getConfiguration(file: VirtualFile) = + this@AbstractScriptConfigurationManager.getConfiguration(file) + } + private fun clearClassRootsCaches() { debug { "class roots caches cleared" } diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/ScriptClassRootsCache.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/ScriptClassRootsCache.kt index 82dc8d28ec1..1177ab4e028 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/ScriptClassRootsCache.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/ScriptClassRootsCache.kt @@ -17,16 +17,12 @@ import com.intellij.psi.search.NonClasspathDirectoriesScope import com.intellij.util.containers.ConcurrentFactoryMap import org.jetbrains.kotlin.idea.caches.project.getAllProjectSdks import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager -import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationCache import org.jetbrains.kotlin.idea.core.script.debug import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationWrapper -internal class ScriptClassRootsCache( - private val project: Project, - private val cache: ScriptConfigurationCache -) { - private val all: Collection> get() = cache.allApplied() - private fun getConfiguration(file: VirtualFile): ScriptCompilationConfigurationWrapper? = cache[file]?.applied?.configuration +internal abstract class ScriptClassRootsCache(private val project: Project) { + protected abstract val all: Collection> + protected abstract fun getConfiguration(file: VirtualFile): ScriptCompilationConfigurationWrapper? private fun getScriptSdk(compilationConfiguration: ScriptCompilationConfigurationWrapper?): Sdk? { // workaround for mismatched gradle wrapper and plugin version