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:
@@ -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")
|
||||
|
||||
+1
-1
@@ -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 {
|
||||
|
||||
|
||||
+6
-10
@@ -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
|
||||
|
||||
-2
@@ -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> {
|
||||
|
||||
Reference in New Issue
Block a user