diff options
author | Geert-Jan Zwiers <geertjanzwiers@protonmail.com> | 2023-01-07 21:22:09 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-07 15:22:09 -0500 |
commit | 84ef26ac9b5f0e1199d77837cd97cb203baa8729 (patch) | |
tree | eb8f3422d397724d004dba0e9667b3f6c2b49a57 /cli/lsp/diagnostics.rs | |
parent | fac64478157ee563b185edb5734688e4523df3a1 (diff) |
refactor(cli/tools): move flag and config logic to CliOptions (#17008)
Co-authored-by: David Sherret <dsherret@gmail.com>
Diffstat (limited to 'cli/lsp/diagnostics.rs')
-rw-r--r-- | cli/lsp/diagnostics.rs | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/cli/lsp/diagnostics.rs b/cli/lsp/diagnostics.rs index c52bde790..605bd85ac 100644 --- a/cli/lsp/diagnostics.rs +++ b/cli/lsp/diagnostics.rs @@ -12,8 +12,9 @@ use super::performance::Performance; use super::tsc; use super::tsc::TsServer; -use crate::args::LintConfig; +use crate::args::LintOptions; use crate::npm::NpmPackageReference; +use crate::tools::lint::get_configured_rules; use deno_ast::MediaType; use deno_core::anyhow::anyhow; @@ -24,6 +25,7 @@ use deno_core::serde_json; use deno_core::serde_json::json; use deno_core::ModuleSpecifier; use deno_graph::Resolved; +use deno_lint::rules::LintRule; use deno_runtime::tokio_util::create_basic_runtime; use log::error; use std::collections::HashMap; @@ -36,7 +38,7 @@ use tokio_util::sync::CancellationToken; use tower_lsp::lsp_types as lsp; pub type SnapshotForDiagnostics = - (Arc<StateSnapshot>, Arc<ConfigSnapshot>, Option<LintConfig>); + (Arc<StateSnapshot>, Arc<ConfigSnapshot>, LintOptions); pub type DiagnosticRecord = (ModuleSpecifier, Option<i32>, Vec<lsp::Diagnostic>); pub type DiagnosticVec = Vec<DiagnosticRecord>; @@ -198,7 +200,7 @@ impl DiagnosticsServer { match rx.recv().await { // channel has closed None => break, - Some((snapshot, config, maybe_lint_config)) => { + Some((snapshot, config, lint_options)) => { // cancel the previous run token.cancel(); token = CancellationToken::new(); @@ -300,7 +302,7 @@ impl DiagnosticsServer { let diagnostics = generate_lint_diagnostics( &snapshot, &config, - maybe_lint_config, + &lint_options, token.clone(), ) .await; @@ -443,12 +445,12 @@ fn ts_json_to_diagnostics( async fn generate_lint_diagnostics( snapshot: &language_server::StateSnapshot, config: &ConfigSnapshot, - maybe_lint_config: Option<LintConfig>, + lint_options: &LintOptions, token: CancellationToken, ) -> DiagnosticVec { let documents = snapshot.documents.documents(true, true); let workspace_settings = config.settings.workspace.clone(); - + let lint_rules = get_configured_rules(lint_options.rules.clone()); let mut diagnostics_vec = Vec::new(); if workspace_settings.lint { for document in documents { @@ -470,7 +472,8 @@ async fn generate_lint_diagnostics( version, generate_document_lint_diagnostics( config, - &maybe_lint_config, + lint_options, + lint_rules.clone(), &document, ), )); @@ -481,23 +484,21 @@ async fn generate_lint_diagnostics( fn generate_document_lint_diagnostics( config: &ConfigSnapshot, - maybe_lint_config: &Option<LintConfig>, + lint_options: &LintOptions, + lint_rules: Vec<Arc<dyn LintRule>>, document: &Document, ) -> Vec<lsp::Diagnostic> { if !config.specifier_enabled(document.specifier()) { return Vec::new(); } - if let Some(lint_config) = &maybe_lint_config { - if !lint_config.files.matches_specifier(document.specifier()) { - return Vec::new(); - } + if !lint_options.files.matches_specifier(document.specifier()) { + return Vec::new(); } match document.maybe_parsed_source() { Some(Ok(parsed_source)) => { - if let Ok(references) = analysis::get_lint_references( - &parsed_source, - maybe_lint_config.as_ref(), - ) { + if let Ok(references) = + analysis::get_lint_references(&parsed_source, lint_rules) + { references .into_iter() .map(|r| r.to_diagnostic()) @@ -1080,7 +1081,7 @@ let c: number = "a"; let diagnostics = generate_lint_diagnostics( &snapshot, &enabled_config, - None, + &Default::default(), Default::default(), ) .await; @@ -1121,7 +1122,7 @@ let c: number = "a"; let diagnostics = generate_lint_diagnostics( &snapshot, &disabled_config, - None, + &Default::default(), Default::default(), ) .await; |