summaryrefslogtreecommitdiff
path: root/cli/lsp/diagnostics.rs
diff options
context:
space:
mode:
authorKitson Kelly <me@kitsonkelly.com>2021-02-12 15:17:48 +1100
committerGitHub <noreply@github.com>2021-02-12 15:17:48 +1100
commitd6c05b09dd7cbaba0fcae65929a2c2dd55e9d994 (patch)
tree1d813f7f0acc543f6da96c429a5cc2fd19b606f1 /cli/lsp/diagnostics.rs
parent46da7c6aff3c10af6a067f4229644d2de444a3a7 (diff)
feat(lsp): add deno cache code actions (#9471)
Diffstat (limited to 'cli/lsp/diagnostics.rs')
-rw-r--r--cli/lsp/diagnostics.rs24
1 files changed, 14 insertions, 10 deletions
diff --git a/cli/lsp/diagnostics.rs b/cli/lsp/diagnostics.rs
index 437a96543..1ea2cce14 100644
--- a/cli/lsp/diagnostics.rs
+++ b/cli/lsp/diagnostics.rs
@@ -11,6 +11,7 @@ use crate::media_type::MediaType;
use deno_core::error::AnyError;
use deno_core::serde_json;
+use deno_core::serde_json::json;
use deno_core::ModuleSpecifier;
use lspower::lsp;
use std::collections::HashMap;
@@ -279,14 +280,14 @@ pub async fn generate_dependency_diagnostics(
&dependency.maybe_code_specifier_range,
) {
match code.clone() {
- ResolvedDependency::Err(err) => {
+ ResolvedDependency::Err(dependency_err) => {
diagnostic_list.push(lsp::Diagnostic {
range: *range,
severity: Some(lsp::DiagnosticSeverity::Error),
- code: None,
+ code: Some(dependency_err.as_code()),
code_description: None,
source: Some("deno".to_string()),
- message: format!("{}", err),
+ message: format!("{}", dependency_err),
related_information: None,
tags: None,
data: None,
@@ -295,20 +296,23 @@ pub async fn generate_dependency_diagnostics(
ResolvedDependency::Resolved(specifier) => {
if !(state_snapshot.documents.contains(&specifier) || sources.contains(&specifier)) {
let is_local = specifier.as_url().scheme() == "file";
+ let (code, message) = if is_local {
+ (Some(lsp::NumberOrString::String("no-local".to_string())), format!("Unable to load a local module: \"{}\".\n Please check the file path.", specifier))
+ } else {
+ (Some(lsp::NumberOrString::String("no-cache".to_string())), format!("Unable to load the remote module: \"{}\".", specifier))
+ };
diagnostic_list.push(lsp::Diagnostic {
range: *range,
severity: Some(lsp::DiagnosticSeverity::Error),
- code: None,
+ code,
code_description: None,
source: Some("deno".to_string()),
- message: if is_local {
- format!("Unable to load a local module: \"{}\".\n Please check the file path.", specifier)
- } else {
- format!("Unable to load the module: \"{}\".\n If the module exists, running `deno cache {}` should resolve this error.", specifier, specifier)
- },
+ message,
related_information: None,
tags: None,
- data: None,
+ data: Some(json!({
+ "specifier": specifier
+ })),
})
}
},