ScriptClassRootsCache: load configuration if it is not cached
This commit is contained in:
+7
-1
@@ -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" }
|
||||
|
||||
|
||||
+3
-7
@@ -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<Pair<VirtualFile, ScriptCompilationConfigurationWrapper>> 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<Pair<VirtualFile, ScriptCompilationConfigurationWrapper>>
|
||||
protected abstract fun getConfiguration(file: VirtualFile): ScriptCompilationConfigurationWrapper?
|
||||
|
||||
private fun getScriptSdk(compilationConfiguration: ScriptCompilationConfigurationWrapper?): Sdk? {
|
||||
// workaround for mismatched gradle wrapper and plugin version
|
||||
|
||||
Reference in New Issue
Block a user