diff options
Diffstat (limited to 'cli/lsp/tsc.rs')
-rw-r--r-- | cli/lsp/tsc.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs index 20edf31d9..00a5d2bc7 100644 --- a/cli/lsp/tsc.rs +++ b/cli/lsp/tsc.rs @@ -1,6 +1,7 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. use super::analysis::CodeActionData; +use super::analysis::TsResponseImportMapper; use super::code_lens; use super::config; use super::documents::AssetOrDocument; @@ -2326,6 +2327,7 @@ fn parse_code_actions( update_import_statement( tc.as_text_edit(asset_or_doc.line_index()), data, + Some(&language_server.get_ts_response_import_mapper()), ) })); } else { @@ -2521,6 +2523,7 @@ struct CompletionEntryDataImport { fn update_import_statement( mut text_edit: lsp::TextEdit, item_data: &CompletionItemData, + maybe_import_mapper: Option<&TsResponseImportMapper>, ) -> lsp::TextEdit { if let Some(data) = &item_data.data { if let Ok(import_data) = @@ -2528,8 +2531,11 @@ fn update_import_statement( { if let Ok(import_specifier) = normalize_specifier(&import_data.file_name) { - if let Some(new_module_specifier) = - relative_specifier(&item_data.specifier, &import_specifier) + if let Some(new_module_specifier) = maybe_import_mapper + .and_then(|m| m.check_specifier(&import_specifier)) + .or_else(|| { + relative_specifier(&item_data.specifier, &import_specifier) + }) { text_edit.new_text = text_edit .new_text @@ -4716,6 +4722,7 @@ mod tests { new_text: orig_text.to_string(), }, &item_data, + None, ); assert_eq!( actual, |