summaryrefslogtreecommitdiff
path: root/cli/factory.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/factory.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/factory.rs')
-rw-r--r--cli/factory.rs32
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