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 8dd0dc5ca63..22658b7b771 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 @@ -76,19 +76,22 @@ class ScriptDependenciesUpdater( } fun updateDependenciesIfNeeded(files: List): Boolean { - val definitionsManager = ScriptDefinitionsManager.getInstance(project) - if (definitionsManager.isReady() && areDependenciesCached(files)) { - return false - } + if (!ScriptDefinitionsManager.getInstance(project).isReady()) return false + var wasDependenciesUpdateStarted = false for (file in files) { - val scriptDef = file.findScriptDefinition(project) ?: continue - updateDependencies(file, scriptDef) + if (!areDependenciesCached(file)) { + wasDependenciesUpdateStarted = true + val scriptDef = file.findScriptDefinition(project) ?: continue + updateDependencies(file, scriptDef) + } } - makeRootsChangeIfNeeded() + if (wasDependenciesUpdateStarted) { + makeRootsChangeIfNeeded() + } - return true + return wasDependenciesUpdateStarted } private fun updateDependencies(file: VirtualFile, scriptDef: KotlinScriptDefinition) { @@ -170,10 +173,6 @@ class ScriptDependenciesUpdater( return cache[file] != null || file.scriptDependencies != null } - private fun areDependenciesCached(files: List): Boolean { - return files.all { areDependenciesCached(it) } - } - private fun isAsyncDependencyResolver(scriptDef: KotlinScriptDefinition): Boolean { val dependencyResolver = scriptDef.dependencyResolver return dependencyResolver is AsyncDependenciesResolver || dependencyResolver is LegacyResolverWrapper