diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2024-04-14 22:42:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-14 22:42:58 +0100 |
commit | 8f1a92f3c39a4db7582824944d2c9319a11efcc0 (patch) | |
tree | ee0e1f861adda0be3b966c9541267eaa7c800a57 /cli/lsp/tsc.rs | |
parent | e277490c821d20280137ca54eede8502caf62bbd (diff) |
refactor(lsp): use fallback resolution in op_resolve() (#23329)
Diffstat (limited to 'cli/lsp/tsc.rs')
-rw-r--r-- | cli/lsp/tsc.rs | 55 |
1 files changed, 21 insertions, 34 deletions
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs index 5c52a8eb0..ac4871dfc 100644 --- a/cli/lsp/tsc.rs +++ b/cli/lsp/tsc.rs @@ -4043,37 +4043,24 @@ fn op_resolve_inner( let state = state.borrow_mut::<State>(); let mark = state.performance.mark_with_args("tsc.op.op_resolve", &args); let referrer = state.specifier_map.normalize(&args.base)?; - let specifiers = match state.get_asset_or_document(&referrer) { - Some(referrer_doc) => { - let resolved = state.state_snapshot.documents.resolve( - args.specifiers, - &referrer_doc, - state.state_snapshot.npm.as_ref(), - ); - resolved - .into_iter() - // Resolved `node:` specifier means the user doesn't have @types/node, - // resolve to stub. - .map(|o| match o.filter(|(s, _)| s.scheme() != "node") { - Some((s, mt)) => Some(( - state.specifier_map.denormalize(&s), - mt.as_ts_extension().to_string(), - )), - None => Some(( - MISSING_DEPENDENCY_SPECIFIER.to_string(), - MediaType::Dts.as_ts_extension().to_string(), - )), - }) - .collect() - } - None => { - lsp_warn!( - "Error resolving. Referring specifier \"{}\" was not found.", - args.base - ); - vec![None; args.specifiers.len()] - } - }; + let specifiers = state + .state_snapshot + .documents + .resolve( + &args.specifiers, + &referrer, + state.state_snapshot.npm.as_ref(), + ) + .into_iter() + .map(|o| { + o.map(|(s, mt)| { + ( + state.specifier_map.denormalize(&s), + mt.as_ts_extension().to_string(), + ) + }) + }) + .collect(); state.performance.measure(mark); Ok(specifiers) @@ -5572,7 +5559,7 @@ mod tests { } #[tokio::test] - async fn resolve_unknown_dependency_to_stub_module() { + async fn resolve_unknown_dependency() { let temp_dir = TempDir::new(); let (_, snapshot, _) = setup( &temp_dir, @@ -5597,8 +5584,8 @@ mod tests { assert_eq!( resolved, vec![Some(( - MISSING_DEPENDENCY_SPECIFIER.to_string(), - MediaType::Dts.as_ts_extension().to_string() + "file:///b.ts".to_string(), + MediaType::TypeScript.as_ts_extension().to_string() ))] ); } |