summaryrefslogtreecommitdiff
path: root/cli/lsp/analysis.rs
diff options
context:
space:
mode:
authorNayeem Rahman <nayeemrmn99@gmail.com>2024-05-23 17:31:56 +0100
committerGitHub <noreply@github.com>2024-05-23 17:31:56 +0100
commit0a30897925fd8940884231b97474f4ea76e5ed28 (patch)
treeca0081c4eb455e6ac1ebe71b24853b2262f4c63a /cli/lsp/analysis.rs
parent143ea4759fa32bcd32ff983caeaec08929a52e80 (diff)
refactor(lsp): determine file referrer for each document (#23867)
Diffstat (limited to 'cli/lsp/analysis.rs')
-rw-r--r--cli/lsp/analysis.rs19
1 files changed, 16 insertions, 3 deletions
diff --git a/cli/lsp/analysis.rs b/cli/lsp/analysis.rs
index 133f5f0ac..9c7025781 100644
--- a/cli/lsp/analysis.rs
+++ b/cli/lsp/analysis.rs
@@ -248,6 +248,8 @@ impl<'a> TsResponseImportMapper<'a> {
}
}
+ let file_referrer = self.documents.get_file_referrer(referrer);
+
if let Some(jsr_path) = specifier.as_str().strip_prefix(jsr_url().as_str())
{
let mut segments = jsr_path.split('/');
@@ -259,7 +261,11 @@ impl<'a> TsResponseImportMapper<'a> {
let version = Version::parse_standard(segments.next()?).ok()?;
let nv = PackageNv { name, version };
let path = segments.collect::<Vec<_>>().join("/");
- let export = self.resolver.jsr_lookup_export_for_path(&nv, &path)?;
+ let export = self.resolver.jsr_lookup_export_for_path(
+ &nv,
+ &path,
+ file_referrer.as_deref(),
+ )?;
let sub_path = (export != ".").then_some(export);
let mut req = None;
req = req.or_else(|| {
@@ -281,7 +287,11 @@ impl<'a> TsResponseImportMapper<'a> {
}
None
});
- req = req.or_else(|| self.resolver.jsr_lookup_req_for_nv(&nv));
+ req = req.or_else(|| {
+ self
+ .resolver
+ .jsr_lookup_req_for_nv(&nv, file_referrer.as_deref())
+ });
let spec_str = if let Some(req) = req {
let req_ref = PackageReqReference { req, sub_path };
JsrPackageReqReference::new(req_ref).to_string()
@@ -298,7 +308,10 @@ impl<'a> TsResponseImportMapper<'a> {
return Some(spec_str);
}
- if let Some(npm_resolver) = self.resolver.maybe_managed_npm_resolver() {
+ if let Some(npm_resolver) = self
+ .resolver
+ .maybe_managed_npm_resolver(file_referrer.as_deref())
+ {
if npm_resolver.in_npm_package(specifier) {
if let Ok(Some(pkg_id)) =
npm_resolver.resolve_pkg_id_from_specifier(specifier)