Don't highlight scripts if resolver returns Failure.

Note that we don't highlight script when ScriptDependenciesFileAttribute is not set.
This commit is contained in:
Natalia Selezneva
2018-03-02 14:30:44 +03:00
parent 4b4acfee2c
commit 5f1118e820
4 changed files with 7 additions and 23 deletions
@@ -63,17 +63,9 @@ class ScriptDefinitionsManager(private val project: Project): ScriptDefinitionPr
if (contributor !in definitionsByContributor) error("Unknown contributor: ${contributor.id}")
if (contributor.isError()) return emptyList()
return definitionsByContributor[contributor] ?: emptyList()
}
fun getContributorForDefinition(scriptDefinition: KotlinScriptDefinition): ScriptDefinitionContributor {
for ((contributor, definitions) in definitionsByContributor) {
if (definitions.contains(scriptDefinition)) return contributor
}
throw error("Unknown definition: ${scriptDefinition.name}")
}
private fun currentDefinitions(): List<KotlinScriptDefinition> {
val hasDefinitions = definitions.isNotEmpty()
when {
@@ -170,8 +162,6 @@ interface ScriptDefinitionContributor {
fun getDefinitions(): List<KotlinScriptDefinition>
fun isError(): Boolean = false
companion object {
val EP_NAME: ExtensionPointName<ScriptDefinitionContributor> =
ExtensionPointName.create<ScriptDefinitionContributor>("org.jetbrains.kotlin.scriptDefinitionContributor")
@@ -30,7 +30,7 @@ import kotlin.reflect.KProperty
import kotlin.script.experimental.dependencies.ScriptDependencies
var VirtualFile.scriptDependencies: ScriptDependencies? by ScriptDependenciesProperty()
private val scriptDependencies = FileAttribute("kotlin-script-dependencies", 2, false)
private val scriptDependencies = FileAttribute("kotlin-script-dependencies", 3, false)
private class ScriptDependenciesProperty {
@@ -206,8 +206,8 @@ class ScriptDependenciesUpdater(
requests.replace(file.path, lastRequest, ModStampedRequest(lastRequest.modificationStamp, job = null))
}
ServiceManager.getService(project, ScriptReportSink::class.java)?.attachReports(file, result.reports)
val resultingDependencies = (result.dependencies ?: ScriptDependencies.Empty).adjustByDefinition(scriptDef)
if (saveNewDependencies(resultingDependencies, file, scriptDef)) {
val resultingDependencies = result.dependencies?.adjustByDefinition(scriptDef) ?: return
if (saveNewDependencies(resultingDependencies, file)) {
notifyRootsChanged()
}
}
@@ -215,17 +215,13 @@ class ScriptDependenciesUpdater(
fun updateSync(file: VirtualFile, scriptDef: KotlinScriptDefinition): Boolean {
val newDeps = contentLoader.loadContentsAndResolveDependencies(scriptDef, file) ?: ScriptDependencies.Empty
return saveNewDependencies(newDeps, file, scriptDef)
val newDeps = contentLoader.loadContentsAndResolveDependencies(scriptDef, file) ?: return false
return saveNewDependencies(newDeps, file)
}
private fun saveNewDependencies(
new: ScriptDependencies,
file: VirtualFile,
scriptDef: KotlinScriptDefinition
): Boolean {
private fun saveNewDependencies(new: ScriptDependencies, file: VirtualFile): Boolean {
val rootsChanged = cache.hasNotCachedRoots(new)
if (cache.save(file, new) && !ScriptDefinitionsManager.getInstance(project).getContributorForDefinition(scriptDef).isError()) {
if (cache.save(file, new)) {
file.scriptDependencies = new
}
return rootsChanged
@@ -88,8 +88,6 @@ class GradleScriptDefinitionsContributor(private val project: Project) : ScriptD
return loadDefinitions()
}
override fun isError() = failedToLoad.get()
// NOTE: control flow here depends on suppressing exceptions from loadGradleTemplates calls
// TODO: possibly combine exceptions from every loadGradleTemplates call, be mindful of KT-19276
private fun loadDefinitions(): List<KotlinScriptDefinition> {