From f19f49711cf427d08ee720a277b7e00b661ed52d Mon Sep 17 00:00:00 2001 From: Sergey Rostov Date: Tue, 12 May 2020 15:21:24 +0300 Subject: [PATCH] Scripting: minor changes --- .../core/script/configuration/DefaultScriptingSupport.kt | 2 +- .../script/configuration/utils/ScriptClassRootsStorage.kt | 2 +- .../idea/core/script/uсache/ScriptClassRootsBuilder.kt | 4 ++-- .../idea/core/script/uсache/ScriptClassRootsUpdater.kt | 2 +- .../idea/scripting/gradle/roots/GradleBuildRootsManager.kt | 6 +++++- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/DefaultScriptingSupport.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/DefaultScriptingSupport.kt index a76c41fbe3a..ff31edc11e9 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/DefaultScriptingSupport.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/DefaultScriptingSupport.kt @@ -522,7 +522,7 @@ abstract class DefaultScriptingSupportBase(val manager: CompositeScriptConfigura // own builder for saving to storage val rootsStorage = ScriptClassRootsStorage.getInstance(project) - val ownBuilder = ScriptClassRootsBuilder.fromStorage(rootsStorage) + val ownBuilder = ScriptClassRootsBuilder.fromStorage(project, rootsStorage) cache.allApplied().forEach { (vFile, configuration) -> ownBuilder.add(vFile, configuration) } ownBuilder.toStorage(rootsStorage) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/ScriptClassRootsStorage.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/ScriptClassRootsStorage.kt index 9a140d15579..6692ca452f4 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/ScriptClassRootsStorage.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/utils/ScriptClassRootsStorage.kt @@ -18,7 +18,7 @@ import com.intellij.util.xmlb.XmlSerializerUtil name = "ScriptClassRootsStorage", storages = [Storage(StoragePathMacros.CACHE_FILE)] ) -class ScriptClassRootsStorage(val project: Project) : PersistentStateComponent { +class ScriptClassRootsStorage : PersistentStateComponent { var classpath: Set = hashSetOf() var sources: Set = hashSetOf() var sdks: Set = hashSetOf() diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/uсache/ScriptClassRootsBuilder.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/uсache/ScriptClassRootsBuilder.kt index 1096edae364..b927c4533b1 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/uсache/ScriptClassRootsBuilder.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/uсache/ScriptClassRootsBuilder.kt @@ -73,8 +73,8 @@ class ScriptClassRootsBuilder( } companion object { - fun fromStorage(storage: ScriptClassRootsStorage) = ScriptClassRootsBuilder( - storage.project, + fun fromStorage(project: Project, storage: ScriptClassRootsStorage) = ScriptClassRootsBuilder( + project, storage.classpath.toMutableSet(), storage.sources.toMutableSet(), ).also { roots -> diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/uсache/ScriptClassRootsUpdater.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/uсache/ScriptClassRootsUpdater.kt index 7c4470857cc..99b02321d45 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/uсache/ScriptClassRootsUpdater.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/uсache/ScriptClassRootsUpdater.kt @@ -137,7 +137,7 @@ class ScriptClassRootsUpdater( private fun ensureUpdateScheduled() { scheduledUpdate?.cancel() runReadAction { - if (project.isDisposed && !Disposer.isDisposing(project)) { + if (!Disposer.isDisposing(project)) { scheduledUpdate = BackgroundTaskUtil.executeOnPooledThread(project) { doUpdate() } diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt index b6ae1cd11f5..0c26ebd2f54 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt @@ -340,7 +340,11 @@ class GradleBuildRootsManager(val project: Project) : ScriptingSupport() { private fun add(newRoot: GradleBuildRoot.Linked) { val old = roots.add(newRoot) - if (old is GradleBuildRoot.Imported) removeData(old.pathPrefix) + + if (old is GradleBuildRoot.Imported && newRoot !is GradleBuildRoot.Imported) { + removeData(old.pathPrefix) + } + if (old is GradleBuildRoot.Imported || newRoot is GradleBuildRoot.Imported) { updater.invalidateAndCommit() }