summaryrefslogtreecommitdiff
path: root/cli/lsp/tsc.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp/tsc.rs')
-rw-r--r--cli/lsp/tsc.rs11
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,