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.rs37
1 files changed, 21 insertions, 16 deletions
diff --git a/cli/lsp/diagnostics.rs b/cli/lsp/diagnostics.rs
index 11a4e8364..c106c9865 100644
--- a/cli/lsp/diagnostics.rs
+++ b/cli/lsp/diagnostics.rs
@@ -7,7 +7,6 @@ use super::sources::Sources;
use super::tsc;
use crate::diagnostics;
-use crate::media_type::MediaType;
use crate::tokio_util::create_basic_runtime;
use analysis::ResolvedDependency;
@@ -327,23 +326,29 @@ async fn generate_lint_diagnostics(
.lock()
.await
.get_version(specifier, &DiagnosticSource::DenoLint);
- let media_type = MediaType::from(specifier);
if version != current_version {
- if let Ok(Some(source_code)) = documents.content(specifier) {
- if let Ok(references) = analysis::get_lint_references(
- specifier,
- &media_type,
- &source_code,
- ) {
- let diagnostics =
- references.into_iter().map(|r| r.to_diagnostic()).collect();
- diagnostics_vec.push((specifier.clone(), version, diagnostics));
- } else {
- diagnostics_vec.push((specifier.clone(), version, Vec::new()));
+ let module = documents
+ .get(specifier)
+ .map(|d| d.source().module())
+ .flatten();
+ let diagnostics = match module {
+ Some(Ok(module)) => {
+ if let Ok(references) = analysis::get_lint_references(module) {
+ references
+ .into_iter()
+ .map(|r| r.to_diagnostic())
+ .collect::<Vec<_>>()
+ } else {
+ Vec::new()
+ }
}
- } else {
- error!("Missing file contents for: {}", specifier);
- }
+ Some(Err(_)) => Vec::new(),
+ None => {
+ error!("Missing file contents for: {}", specifier);
+ Vec::new()
+ }
+ };
+ diagnostics_vec.push((specifier.clone(), version, diagnostics));
}
}
}