diff options
author | Kitson Kelly <me@kitsonkelly.com> | 2021-02-12 15:17:48 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-12 15:17:48 +1100 |
commit | d6c05b09dd7cbaba0fcae65929a2c2dd55e9d994 (patch) | |
tree | 1d813f7f0acc543f6da96c429a5cc2fd19b606f1 /cli/lsp/diagnostics.rs | |
parent | 46da7c6aff3c10af6a067f4229644d2de444a3a7 (diff) |
feat(lsp): add deno cache code actions (#9471)
Diffstat (limited to 'cli/lsp/diagnostics.rs')
-rw-r--r-- | cli/lsp/diagnostics.rs | 24 |
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 + })), }) } }, |