Preprocess script dependencies before running UnusedSymbolInspection

^KT-29474
This commit is contained in:
Natalia Selezneva
2019-02-15 11:21:12 +03:00
parent 47a4500eaa
commit f98429c509
3 changed files with 46 additions and 26 deletions
@@ -75,6 +75,22 @@ class ScriptDependenciesUpdater(
return cache[file] ?: ScriptDependencies.Empty
}
fun updateDependenciesIfNeeded(files: List<VirtualFile>): Boolean {
val definitionsManager = ScriptDefinitionsManager.getInstance(project)
if (definitionsManager.isReady() && areDependenciesCached(files)) {
return false
}
for (file in files) {
val scriptDef = file.findScriptDefinition(project) ?: continue
updateDependencies(file, scriptDef)
}
makeRootsChangeIfNeeded()
return true
}
private fun updateDependencies(file: VirtualFile, scriptDef: KotlinScriptDefinition) {
val loader = when (scriptDef.dependencyResolver) {
is AsyncDependenciesResolver, is LegacyResolverWrapper -> asyncLoader
@@ -154,6 +170,10 @@ class ScriptDependenciesUpdater(
return cache[file] != null
}
private fun areDependenciesCached(files: List<VirtualFile>): Boolean {
return files.all { areDependenciesCached(it) }
}
companion object {
@JvmStatic
fun getInstance(project: Project): ScriptDependenciesUpdater =