diff options
Diffstat (limited to 'cli/lsp')
-rw-r--r-- | cli/lsp/diagnostics.rs | 16 | ||||
-rw-r--r-- | cli/lsp/documents.rs | 20 |
2 files changed, 25 insertions, 11 deletions
diff --git a/cli/lsp/diagnostics.rs b/cli/lsp/diagnostics.rs index 9ec273d7f..cb368b1f2 100644 --- a/cli/lsp/diagnostics.rs +++ b/cli/lsp/diagnostics.rs @@ -1236,10 +1236,14 @@ fn diagnose_resolution( } else if let Ok(pkg_ref) = NpmPackageReqReference::from_specifier(specifier) { - if let Some(npm) = &snapshot.npm { + if let Some(npm_resolver) = snapshot + .npm + .as_ref() + .and_then(|n| n.npm_resolver.as_managed()) + { // show diagnostics for npm package references that aren't cached let req = pkg_ref.into_inner().req; - if !npm.npm_resolver.is_pkg_req_folder_cached(&req) { + if !npm_resolver.is_pkg_req_folder_cached(&req) { diagnostics .push(DenoDiagnostic::NoCacheNpm(req, specifier.clone())); } @@ -1249,10 +1253,14 @@ fn diagnose_resolution( if !deno_node::is_builtin_node_module(module_name) { diagnostics .push(DenoDiagnostic::InvalidNodeSpecifier(specifier.clone())); - } else if let Some(npm) = &snapshot.npm { + } else if let Some(npm_resolver) = snapshot + .npm + .as_ref() + .and_then(|n| n.npm_resolver.as_managed()) + { // check that a @types/node package exists in the resolver let types_node_req = PackageReq::from_str("@types/node").unwrap(); - if !npm.npm_resolver.is_pkg_req_folder_cached(&types_node_req) { + if !npm_resolver.is_pkg_req_folder_cached(&types_node_req) { diagnostics.push(DenoDiagnostic::NoCacheNpm( types_node_req, ModuleSpecifier::parse("npm:@types/node").unwrap(), diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs index 30f419249..92c2e0a3b 100644 --- a/cli/lsp/documents.rs +++ b/cli/lsp/documents.rs @@ -1183,9 +1183,9 @@ impl Documents { dependencies.as_ref().and_then(|d| d.deps.get(&specifier)) { if let Some(specifier) = dep.maybe_type.maybe_specifier() { - results.push(self.resolve_dependency(specifier, maybe_npm)); + results.push(self.resolve_dependency(specifier, maybe_npm, referrer)); } else if let Some(specifier) = dep.maybe_code.maybe_specifier() { - results.push(self.resolve_dependency(specifier, maybe_npm)); + results.push(self.resolve_dependency(specifier, maybe_npm, referrer)); } else { results.push(None); } @@ -1193,11 +1193,15 @@ impl Documents { .resolve_imports_dependency(&specifier) .and_then(|r| r.maybe_specifier()) { - results.push(self.resolve_dependency(specifier, maybe_npm)); + results.push(self.resolve_dependency(specifier, maybe_npm, referrer)); } else if let Ok(npm_req_ref) = NpmPackageReqReference::from_str(&specifier) { - results.push(node_resolve_npm_req_ref(npm_req_ref, maybe_npm)); + results.push(node_resolve_npm_req_ref( + npm_req_ref, + maybe_npm, + referrer, + )); } else { results.push(None); } @@ -1528,6 +1532,7 @@ impl Documents { &self, specifier: &ModuleSpecifier, maybe_npm: Option<&StateNpmSnapshot>, + referrer: &ModuleSpecifier, ) -> Option<(ModuleSpecifier, MediaType)> { if let Some(module_name) = specifier.as_str().strip_prefix("node:") { if deno_node::is_builtin_node_module(module_name) { @@ -1539,7 +1544,7 @@ impl Documents { } if let Ok(npm_ref) = NpmPackageReqReference::from_specifier(specifier) { - return node_resolve_npm_req_ref(npm_ref, maybe_npm); + return node_resolve_npm_req_ref(npm_ref, maybe_npm, referrer); } let doc = self.get(specifier)?; let maybe_module = doc.maybe_esm_module().and_then(|r| r.as_ref().ok()); @@ -1548,7 +1553,7 @@ impl Documents { if let Some(specifier) = maybe_types_dependency.and_then(|d| d.maybe_specifier()) { - self.resolve_dependency(specifier, maybe_npm) + self.resolve_dependency(specifier, maybe_npm, referrer) } else { let media_type = doc.media_type(); Some((doc.specifier().clone(), media_type)) @@ -1572,12 +1577,13 @@ impl Documents { fn node_resolve_npm_req_ref( npm_req_ref: NpmPackageReqReference, maybe_npm: Option<&StateNpmSnapshot>, + referrer: &ModuleSpecifier, ) -> Option<(ModuleSpecifier, MediaType)> { maybe_npm.map(|npm| { NodeResolution::into_specifier_and_media_type( npm .npm_resolver - .resolve_pkg_folder_from_deno_module_req(npm_req_ref.req()) + .resolve_pkg_folder_from_deno_module_req(npm_req_ref.req(), referrer) .ok() .and_then(|package_folder| { npm |