diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-07-25 09:07:59 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-25 09:07:59 -0400 |
commit | 763f05e74dfd0032b238603f625893a52e363591 (patch) | |
tree | c6a71559472755919358afa53eecac206cad80a9 /cli/lsp/config.rs | |
parent | ef78d317f084ffe633253acd138a48a425113fa7 (diff) |
fix(unstable): move sloppy-import warnings to lint rule (#24710)
Adds a new `no-sloppy-imports` lint rule and cleans up the lint code.
Closes #22844
Closes https://github.com/denoland/deno_lint/issues/1293
Diffstat (limited to 'cli/lsp/config.rs')
-rw-r--r-- | cli/lsp/config.rs | 45 |
1 files changed, 34 insertions, 11 deletions
diff --git a/cli/lsp/config.rs b/cli/lsp/config.rs index ec5430e8a..8a44c26dd 100644 --- a/cli/lsp/config.rs +++ b/cli/lsp/config.rs @@ -52,12 +52,16 @@ use crate::args::discover_npmrc_from_workspace; use crate::args::has_flag_env_var; use crate::args::CliLockfile; use crate::args::ConfigFile; +use crate::args::LintFlags; +use crate::args::LintOptions; use crate::args::DENO_FUTURE; use crate::cache::FastInsecureHasher; use crate::file_fetcher::FileFetcher; use crate::lsp::logging::lsp_warn; -use crate::tools::lint::get_configured_rules; -use crate::tools::lint::ConfiguredRules; +use crate::resolver::SloppyImportsResolver; +use crate::tools::lint::CliLinter; +use crate::tools::lint::CliLinterOptions; +use crate::tools::lint::LintRuleProvider; use crate::util::fs::canonicalize_path_maybe_not_exists; pub const SETTINGS_SECTION: &str = "deno"; @@ -1116,8 +1120,7 @@ pub struct ConfigData { pub lint_config: Arc<LintConfig>, pub test_config: Arc<TestConfig>, pub exclude_files: Arc<PathOrPatternSet>, - pub deno_lint_config: DenoLintConfig, - pub lint_rules: Arc<ConfiguredRules>, + pub linter: Arc<CliLinter>, pub ts_config: Arc<LspTsConfig>, pub byonm: bool, pub node_modules_dir: Option<PathBuf>, @@ -1125,6 +1128,7 @@ pub struct ConfigData { pub lockfile: Option<Arc<CliLockfile>>, pub npmrc: Option<Arc<ResolvedNpmRc>>, pub resolver: Arc<WorkspaceResolver>, + pub sloppy_imports_resolver: Option<Arc<SloppyImportsResolver>>, pub import_map_from_settings: Option<ModuleSpecifier>, watched_files: HashMap<ModuleSpecifier, ConfigWatchedFileType>, } @@ -1310,10 +1314,7 @@ impl ConfigData { LintConfig::new_with_base(default_file_pattern_base.clone()) }), ); - let lint_rules = Arc::new(get_configured_rules( - lint_config.options.rules.clone(), - member_dir.maybe_deno_json().map(|c| c.as_ref()), - )); + let test_config = Arc::new( member_dir .to_test_config(FilePatterns::new_with_base(member_dir.dir_path())) @@ -1532,16 +1533,38 @@ impl ConfigData { .join("\n") ); } + let unstable_sloppy_imports = std::env::var("DENO_UNSTABLE_SLOPPY_IMPORTS") + .is_ok() + || member_dir.workspace.has_unstable("sloppy-imports"); + let sloppy_imports_resolver = unstable_sloppy_imports.then(|| { + Arc::new(SloppyImportsResolver::new_without_stat_cache(Arc::new( + deno_runtime::deno_fs::RealFs, + ))) + }); + let resolver = Arc::new(resolver); + let lint_rule_provider = LintRuleProvider::new( + sloppy_imports_resolver.clone(), + Some(resolver.clone()), + ); + let linter = Arc::new(CliLinter::new(CliLinterOptions { + configured_rules: lint_rule_provider.resolve_lint_rules( + LintOptions::resolve((*lint_config).clone(), &LintFlags::default()) + .rules, + member_dir.maybe_deno_json().map(|c| c.as_ref()), + ), + fix: false, + deno_lint_config, + })); ConfigData { scope, member_dir, - resolver: Arc::new(resolver), + resolver, + sloppy_imports_resolver, fmt_config, lint_config, test_config, - deno_lint_config, - lint_rules, + linter, exclude_files, ts_config: Arc::new(ts_config), byonm, |