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/factory.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/factory.rs')
-rw-r--r-- | cli/factory.rs | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/cli/factory.rs b/cli/factory.rs index d701c2719..aeab3cbc4 100644 --- a/cli/factory.rs +++ b/cli/factory.rs @@ -45,6 +45,7 @@ use crate::resolver::SloppyImportsResolver; use crate::standalone::DenoCompileBinaryWriter; use crate::tools::check::TypeChecker; use crate::tools::coverage::CoverageCollector; +use crate::tools::lint::LintRuleProvider; use crate::tools::run::hmr::HmrRunner; use crate::util::file_watcher::WatcherCommunicator; use crate::util::fs::canonicalize_path_maybe_not_exists; @@ -179,6 +180,7 @@ struct CliFactoryServices { node_code_translator: Deferred<Arc<CliNodeCodeTranslator>>, node_resolver: Deferred<Arc<NodeResolver>>, npm_resolver: Deferred<Arc<dyn CliNpmResolver>>, + sloppy_imports_resolver: Deferred<Option<Arc<SloppyImportsResolver>>>, text_only_progress_bar: Deferred<ProgressBar>, type_checker: Deferred<Arc<TypeChecker>>, cjs_resolutions: Deferred<Arc<CjsResolutionStore>>, @@ -397,6 +399,23 @@ impl CliFactory { .await } + pub fn sloppy_imports_resolver( + &self, + ) -> Result<Option<&Arc<SloppyImportsResolver>>, AnyError> { + self + .services + .sloppy_imports_resolver + .get_or_try_init(|| { + Ok( + self + .cli_options()? + .unstable_sloppy_imports() + .then(|| Arc::new(SloppyImportsResolver::new(self.fs().clone()))), + ) + }) + .map(|maybe| maybe.as_ref()) + } + pub async fn workspace_resolver( &self, ) -> Result<&Arc<WorkspaceResolver>, AnyError> { @@ -440,11 +459,7 @@ impl CliFactory { async { let cli_options = self.cli_options()?; Ok(Arc::new(CliGraphResolver::new(CliGraphResolverOptions { - sloppy_imports_resolver: if cli_options.unstable_sloppy_imports() { - Some(SloppyImportsResolver::new(self.fs().clone())) - } else { - None - }, + sloppy_imports_resolver: self.sloppy_imports_resolver()?.cloned(), node_resolver: Some(self.cli_node_resolver().await?.clone()), npm_resolver: if cli_options.no_npm() { None @@ -524,6 +539,13 @@ impl CliFactory { }) } + pub async fn lint_rule_provider(&self) -> Result<LintRuleProvider, AnyError> { + Ok(LintRuleProvider::new( + self.sloppy_imports_resolver()?.cloned(), + Some(self.workspace_resolver().await?.clone()), + )) + } + pub async fn node_resolver(&self) -> Result<&Arc<NodeResolver>, AnyError> { self .services |