summaryrefslogtreecommitdiff
path: root/cli/lsp/config.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-07-25 09:07:59 -0400
committerGitHub <noreply@github.com>2024-07-25 09:07:59 -0400
commit763f05e74dfd0032b238603f625893a52e363591 (patch)
treec6a71559472755919358afa53eecac206cad80a9 /cli/lsp/config.rs
parentef78d317f084ffe633253acd138a48a425113fa7 (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.rs45
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,