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 !in definitionsByContributor) error("Unknown contributor: ${contributor.id}")
|
||||||
|
|
||||||
if (contributor.isError()) return emptyList()
|
|
||||||
return definitionsByContributor[contributor] ?: 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> {
|
private fun currentDefinitions(): List<KotlinScriptDefinition> {
|
||||||
val hasDefinitions = definitions.isNotEmpty()
|
val hasDefinitions = definitions.isNotEmpty()
|
||||||
when {
|
when {
|
||||||
@@ -170,8 +162,6 @@ interface ScriptDefinitionContributor {
|
|||||||
|
|
||||||
fun getDefinitions(): List<KotlinScriptDefinition>
|
fun getDefinitions(): List<KotlinScriptDefinition>
|
||||||
|
|
||||||
fun isError(): Boolean = false
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val EP_NAME: ExtensionPointName<ScriptDefinitionContributor> =
|
val EP_NAME: ExtensionPointName<ScriptDefinitionContributor> =
|
||||||
ExtensionPointName.create<ScriptDefinitionContributor>("org.jetbrains.kotlin.scriptDefinitionContributor")
|
ExtensionPointName.create<ScriptDefinitionContributor>("org.jetbrains.kotlin.scriptDefinitionContributor")
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ import kotlin.reflect.KProperty
|
|||||||
import kotlin.script.experimental.dependencies.ScriptDependencies
|
import kotlin.script.experimental.dependencies.ScriptDependencies
|
||||||
|
|
||||||
var VirtualFile.scriptDependencies: ScriptDependencies? by ScriptDependenciesProperty()
|
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 {
|
private class ScriptDependenciesProperty {
|
||||||
|
|
||||||
|
|||||||
+6
-10
@@ -206,8 +206,8 @@ class ScriptDependenciesUpdater(
|
|||||||
requests.replace(file.path, lastRequest, ModStampedRequest(lastRequest.modificationStamp, job = null))
|
requests.replace(file.path, lastRequest, ModStampedRequest(lastRequest.modificationStamp, job = null))
|
||||||
}
|
}
|
||||||
ServiceManager.getService(project, ScriptReportSink::class.java)?.attachReports(file, result.reports)
|
ServiceManager.getService(project, ScriptReportSink::class.java)?.attachReports(file, result.reports)
|
||||||
val resultingDependencies = (result.dependencies ?: ScriptDependencies.Empty).adjustByDefinition(scriptDef)
|
val resultingDependencies = result.dependencies?.adjustByDefinition(scriptDef) ?: return
|
||||||
if (saveNewDependencies(resultingDependencies, file, scriptDef)) {
|
if (saveNewDependencies(resultingDependencies, file)) {
|
||||||
notifyRootsChanged()
|
notifyRootsChanged()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -215,17 +215,13 @@ class ScriptDependenciesUpdater(
|
|||||||
|
|
||||||
|
|
||||||
fun updateSync(file: VirtualFile, scriptDef: KotlinScriptDefinition): Boolean {
|
fun updateSync(file: VirtualFile, scriptDef: KotlinScriptDefinition): Boolean {
|
||||||
val newDeps = contentLoader.loadContentsAndResolveDependencies(scriptDef, file) ?: ScriptDependencies.Empty
|
val newDeps = contentLoader.loadContentsAndResolveDependencies(scriptDef, file) ?: return false
|
||||||
return saveNewDependencies(newDeps, file, scriptDef)
|
return saveNewDependencies(newDeps, file)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun saveNewDependencies(
|
private fun saveNewDependencies(new: ScriptDependencies, file: VirtualFile): Boolean {
|
||||||
new: ScriptDependencies,
|
|
||||||
file: VirtualFile,
|
|
||||||
scriptDef: KotlinScriptDefinition
|
|
||||||
): Boolean {
|
|
||||||
val rootsChanged = cache.hasNotCachedRoots(new)
|
val rootsChanged = cache.hasNotCachedRoots(new)
|
||||||
if (cache.save(file, new) && !ScriptDefinitionsManager.getInstance(project).getContributorForDefinition(scriptDef).isError()) {
|
if (cache.save(file, new)) {
|
||||||
file.scriptDependencies = new
|
file.scriptDependencies = new
|
||||||
}
|
}
|
||||||
return rootsChanged
|
return rootsChanged
|
||||||
|
|||||||
-2
@@ -88,8 +88,6 @@ class GradleScriptDefinitionsContributor(private val project: Project) : ScriptD
|
|||||||
return loadDefinitions()
|
return loadDefinitions()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isError() = failedToLoad.get()
|
|
||||||
|
|
||||||
// NOTE: control flow here depends on suppressing exceptions from loadGradleTemplates calls
|
// NOTE: control flow here depends on suppressing exceptions from loadGradleTemplates calls
|
||||||
// TODO: possibly combine exceptions from every loadGradleTemplates call, be mindful of KT-19276
|
// TODO: possibly combine exceptions from every loadGradleTemplates call, be mindful of KT-19276
|
||||||
private fun loadDefinitions(): List<KotlinScriptDefinition> {
|
private fun loadDefinitions(): List<KotlinScriptDefinition> {
|
||||||
|
|||||||
Reference in New Issue
Block a user