summaryrefslogtreecommitdiff
path: root/cli/lsp/diagnostics.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp/diagnostics.rs')
-rw-r--r--cli/lsp/diagnostics.rs33
1 files changed, 15 insertions, 18 deletions
diff --git a/cli/lsp/diagnostics.rs b/cli/lsp/diagnostics.rs
index 0a6f33126..85bd2d76e 100644
--- a/cli/lsp/diagnostics.rs
+++ b/cli/lsp/diagnostics.rs
@@ -27,8 +27,8 @@ use deno_core::serde::Deserialize;
use deno_core::serde_json;
use deno_core::serde_json::json;
use deno_core::ModuleSpecifier;
+use deno_graph::Resolution;
use deno_graph::ResolutionError;
-use deno_graph::Resolved;
use deno_graph::SpecifierError;
use deno_lint::rules::LintRule;
use deno_runtime::tokio_util::create_basic_runtime;
@@ -852,18 +852,17 @@ impl DenoDiagnostic {
}
}
-fn diagnose_resolved(
+fn diagnose_resolution(
diagnostics: &mut Vec<lsp::Diagnostic>,
snapshot: &language_server::StateSnapshot,
- resolved: &deno_graph::Resolved,
+ resolution: &Resolution,
is_dynamic: bool,
maybe_assert_type: Option<&str>,
) {
- match resolved {
- Resolved::Ok {
- specifier, range, ..
- } => {
- let range = documents::to_lsp_range(range);
+ match resolution {
+ Resolution::Ok(resolved) => {
+ let specifier = &resolved.specifier;
+ let range = documents::to_lsp_range(&resolved.range);
// If the module is a remote module and has a `X-Deno-Warning` header, we
// want a warning diagnostic with that message.
if let Some(metadata) = snapshot.cache_metadata.get(specifier) {
@@ -959,8 +958,8 @@ fn diagnose_resolved(
}
// The specifier resolution resulted in an error, so we want to issue a
// diagnostic for that.
- Resolved::Err(err) => diagnostics.push(
- DenoDiagnostic::ResolutionError(err.clone())
+ Resolution::Err(err) => diagnostics.push(
+ DenoDiagnostic::ResolutionError(*err.clone())
.to_lsp_diagnostic(&documents::to_lsp_range(err.range())),
),
_ => (),
@@ -984,31 +983,28 @@ fn diagnose_dependency(
}
if let Some(import_map) = &snapshot.maybe_import_map {
- if let Resolved::Ok {
- specifier, range, ..
- } = &dependency.maybe_code
- {
- if let Some(to) = import_map.lookup(specifier, referrer) {
+ if let Resolution::Ok(resolved) = &dependency.maybe_code {
+ if let Some(to) = import_map.lookup(&resolved.specifier, referrer) {
if dependency_key != to {
diagnostics.push(
DenoDiagnostic::ImportMapRemap {
from: dependency_key.to_string(),
to,
}
- .to_lsp_diagnostic(&documents::to_lsp_range(range)),
+ .to_lsp_diagnostic(&documents::to_lsp_range(&resolved.range)),
);
}
}
}
}
- diagnose_resolved(
+ diagnose_resolution(
diagnostics,
snapshot,
&dependency.maybe_code,
dependency.is_dynamic,
dependency.maybe_assert_type.as_deref(),
);
- diagnose_resolved(
+ diagnose_resolution(
diagnostics,
snapshot,
&dependency.maybe_type,
@@ -1064,6 +1060,7 @@ mod tests {
use crate::lsp::documents::Documents;
use crate::lsp::documents::LanguageId;
use crate::lsp::language_server::StateSnapshot;
+ use pretty_assertions::assert_eq;
use std::path::Path;
use std::path::PathBuf;
use std::sync::Arc;