diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2021-09-07 10:39:32 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-07 10:39:32 -0400 |
commit | 2c2e3ec1ca47803f791ea72ea6247d8eedf87ec8 (patch) | |
tree | 9ba3ddfde58f4a4feaf98fc230ec18861891c9be /cli/lsp/diagnostics.rs | |
parent | a5bcf7033e66a828dc88a313f4cca11f116c3f83 (diff) |
refactor(lsp): use deno_ast and cache swc ASTs (#11780)
Diffstat (limited to 'cli/lsp/diagnostics.rs')
-rw-r--r-- | cli/lsp/diagnostics.rs | 37 |
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)); } } } |