diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesManager.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesManager.kt index 4c244809da0..332d2ccd2ff 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesManager.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesManager.kt @@ -77,7 +77,7 @@ class ScriptDependenciesManager internal constructor( @TestOnly fun updateScriptDependenciesSynchronously(virtualFile: VirtualFile, project: Project) { val scriptDefinition = findScriptDefinition(virtualFile, project)!! - SyncScriptDependenciesLoader(virtualFile, scriptDefinition, project, shouldNotifyRootsChanged = true).updateDependencies() + SyncScriptDependenciesLoader(virtualFile, scriptDefinition, project).updateDependencies() } } } diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt index c2302cd9041..8e87cc98715 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt @@ -57,7 +57,7 @@ class ScriptDependenciesUpdater( val scriptDef = findScriptDefinition(file, project) ?: return ScriptDependencies.Empty FromFileAttributeScriptDependenciesLoader(file, scriptDef, project).updateDependencies() - ScriptDependenciesLoader.updateDependencies(file, scriptDef, project, shouldNotifyRootsChanged = false) + ScriptDependenciesLoader.updateDependencies(file, scriptDef, project) return cache[file] ?: ScriptDependencies.Empty } @@ -81,7 +81,7 @@ class ScriptDependenciesUpdater( val scriptDef = ktFile.script?.kotlinScriptDefinition ?: return if (!ProjectRootsUtil.isInProjectSource(ktFile, includeScriptsOutsideSourceRoots = true)) return - ScriptDependenciesLoader.updateDependencies(file, scriptDef, project, shouldNotifyRootsChanged = true) + ScriptDependenciesLoader.updateDependencies(file, scriptDef, project) } }) @@ -113,7 +113,7 @@ class ScriptDependenciesUpdater( scriptsQueue.addRequest( { FileDocumentManager.getInstance().saveDocument(document) - ScriptDependenciesLoader.updateDependencies(file, scriptDef, project, shouldNotifyRootsChanged = true) + ScriptDependenciesLoader.updateDependencies(file, scriptDef, project) }, scriptChangesListenerDelay, true diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/AsyncScriptDependenciesLoader.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/AsyncScriptDependenciesLoader.kt index 6b110db9c22..7e9c83786b7 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/AsyncScriptDependenciesLoader.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/AsyncScriptDependenciesLoader.kt @@ -22,7 +22,7 @@ class AsyncScriptDependenciesLoader( file: VirtualFile, scriptDef: KotlinScriptDefinition, project: Project -) : ScriptDependenciesLoader(file, scriptDef, project, true) { +) : ScriptDependenciesLoader(file, scriptDef, project) { override fun loadDependencies() { if (!shouldSendNewRequest(lastRequest)) { diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/FromFileAttributeScriptDependenciesLoader.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/FromFileAttributeScriptDependenciesLoader.kt index 2e4122bb97d..84e2d7c91da 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/FromFileAttributeScriptDependenciesLoader.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/FromFileAttributeScriptDependenciesLoader.kt @@ -15,7 +15,7 @@ class FromFileAttributeScriptDependenciesLoader( file: VirtualFile, scriptDef: KotlinScriptDefinition, project: Project -) : ScriptDependenciesLoader(file, scriptDef, project, true) { +) : ScriptDependenciesLoader(file, scriptDef, project) { override fun loadDependencies() { val deserializedDependencies = file.scriptDependencies ?: return diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/ScriptDependenciesLoader.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/ScriptDependenciesLoader.kt index 2078c8d9163..8bb92e501b7 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/ScriptDependenciesLoader.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/ScriptDependenciesLoader.kt @@ -14,6 +14,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.roots.ex.ProjectRootManagerEx import com.intellij.openapi.util.EmptyRunnable import com.intellij.openapi.vfs.VirtualFile +import com.intellij.util.ui.UIUtil import org.jetbrains.kotlin.idea.core.script.* import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.script.* @@ -25,8 +26,7 @@ import kotlin.script.experimental.dependencies.ScriptDependencies abstract class ScriptDependenciesLoader( protected val file: VirtualFile, protected val scriptDef: KotlinScriptDefinition, - protected val project: Project, - private val shouldNotifyRootsChanged: Boolean + protected val project: Project ) { companion object { private val loaders = ConcurrentHashMap() @@ -34,8 +34,7 @@ abstract class ScriptDependenciesLoader( fun updateDependencies( file: VirtualFile, scriptDef: KotlinScriptDefinition, - project: Project, - shouldNotifyRootsChanged: Boolean + project: Project ) { val existingLoader = loaders[file] if (existingLoader != null) return existingLoader.updateDependencies() @@ -43,7 +42,7 @@ abstract class ScriptDependenciesLoader( val newLoader = when (scriptDef.dependencyResolver) { is AsyncDependenciesResolver, is LegacyResolverWrapper -> AsyncScriptDependenciesLoader(file, scriptDef, project) - else -> SyncScriptDependenciesLoader(file, scriptDef, project, shouldNotifyRootsChanged) + else -> SyncScriptDependenciesLoader(file, scriptDef, project) } loaders.put(file, newLoader) newLoader.updateDependencies() @@ -107,8 +106,6 @@ abstract class ScriptDependenciesLoader( @Suppress("EXPERIMENTAL_FEATURE_WARNING") protected fun notifyRootsChanged() { - if (!shouldNotifyRootsChanged) return - val doNotifyRootsChanged = Runnable { runWriteAction { if (project.isDisposed) return@runWriteAction @@ -119,7 +116,7 @@ abstract class ScriptDependenciesLoader( } if (ApplicationManager.getApplication().isUnitTestMode) { - doNotifyRootsChanged.run() + UIUtil.invokeLaterIfNeeded(doNotifyRootsChanged) } else { TransactionGuard.getInstance().submitTransactionLater(project, doNotifyRootsChanged) } diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/SyncScriptDependenciesLoader.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/SyncScriptDependenciesLoader.kt index a1491dfee68..2eb5cc944d2 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/SyncScriptDependenciesLoader.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/SyncScriptDependenciesLoader.kt @@ -12,9 +12,8 @@ import org.jetbrains.kotlin.script.KotlinScriptDefinition class SyncScriptDependenciesLoader( file: VirtualFile, scriptDef: KotlinScriptDefinition, - project: Project, - shouldNotifyRootsChanged: Boolean -) : ScriptDependenciesLoader(file, scriptDef, project, shouldNotifyRootsChanged) { + project: Project +) : ScriptDependenciesLoader(file, scriptDef, project) { override fun loadDependencies() { val result = contentLoader.loadContentsAndResolveDependencies(scriptDef, file)