diff options
author | Kitson Kelly <me@kitsonkelly.com> | 2021-07-25 15:33:42 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-25 15:33:42 +1000 |
commit | 72ac9c3ae0c5db99af1e1f5d2191fb82dc092acd (patch) | |
tree | d1120201acc158155ea9a76d4b7896221489c9e9 /cli/lsp/tsc.rs | |
parent | 74c7559d2029539eb6ab7459c06061c00b3e0c1a (diff) |
fix(lsp): handle importmaps properly (#11496)
Fixes: #11146
Fixes: #11456
Fixes: #10439
Diffstat (limited to 'cli/lsp/tsc.rs')
-rw-r--r-- | cli/lsp/tsc.rs | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs index aed1dda9d..3f52beb6b 100644 --- a/cli/lsp/tsc.rs +++ b/cli/lsp/tsc.rs @@ -10,6 +10,7 @@ use super::semantic_tokens::SemanticTokensBuilder; use super::semantic_tokens::TsTokenEncodingConsts; use super::text; use super::text::LineIndex; +use super::urls::INVALID_SPECIFIER; use crate::config_file::TsConfig; use crate::media_type::MediaType; @@ -577,7 +578,7 @@ impl DocumentSpan { line_index: &LineIndex, language_server: &mut language_server::Inner, ) -> Option<lsp::LocationLink> { - let target_specifier = normalize_specifier(&self.file_name).unwrap(); + let target_specifier = normalize_specifier(&self.file_name).ok()?; let target_line_index = language_server .get_line_index(target_specifier.clone()) .await @@ -585,7 +586,7 @@ impl DocumentSpan { let target_uri = language_server .url_map .normalize_specifier(&target_specifier) - .unwrap(); + .ok()?; let (target_range, target_selection_range) = if let Some(context_span) = &self.context_span { ( @@ -778,11 +779,12 @@ impl ImplementationLocation { line_index: &LineIndex, language_server: &mut language_server::Inner, ) -> lsp::Location { - let specifier = normalize_specifier(&self.document_span.file_name).unwrap(); + let specifier = normalize_specifier(&self.document_span.file_name) + .unwrap_or_else(|_| ModuleSpecifier::parse("deno://invalid").unwrap()); let uri = language_server .url_map .normalize_specifier(&specifier) - .unwrap(); + .unwrap_or_else(|_| ModuleSpecifier::parse("deno://invalid").unwrap()); lsp::Location { uri, range: self.document_span.text_span.to_range(line_index), @@ -1107,11 +1109,12 @@ impl ReferenceEntry { line_index: &LineIndex, language_server: &mut language_server::Inner, ) -> lsp::Location { - let specifier = normalize_specifier(&self.document_span.file_name).unwrap(); + let specifier = normalize_specifier(&self.document_span.file_name) + .unwrap_or_else(|_| INVALID_SPECIFIER.clone()); let uri = language_server .url_map .normalize_specifier(&specifier) - .unwrap(); + .unwrap_or_else(|_| INVALID_SPECIFIER.clone()); lsp::Location { uri, range: self.document_span.text_span.to_range(line_index), @@ -1139,7 +1142,7 @@ impl CallHierarchyItem { language_server: &mut language_server::Inner, maybe_root_path: Option<&Path>, ) -> Option<lsp::CallHierarchyItem> { - let target_specifier = normalize_specifier(&self.file).unwrap(); + let target_specifier = normalize_specifier(&self.file).ok()?; let target_line_index = language_server .get_line_index(target_specifier) .await @@ -1158,11 +1161,12 @@ impl CallHierarchyItem { language_server: &mut language_server::Inner, maybe_root_path: Option<&Path>, ) -> lsp::CallHierarchyItem { - let target_specifier = normalize_specifier(&self.file).unwrap(); + let target_specifier = normalize_specifier(&self.file) + .unwrap_or_else(|_| INVALID_SPECIFIER.clone()); let uri = language_server .url_map .normalize_specifier(&target_specifier) - .unwrap(); + .unwrap_or_else(|_| INVALID_SPECIFIER.clone()); let use_file_name = self.is_source_file_item(); let maybe_file_path = if uri.scheme() == "file" { @@ -1239,7 +1243,7 @@ impl CallHierarchyIncomingCall { language_server: &mut language_server::Inner, maybe_root_path: Option<&Path>, ) -> Option<lsp::CallHierarchyIncomingCall> { - let target_specifier = normalize_specifier(&self.from.file).unwrap(); + let target_specifier = normalize_specifier(&self.from.file).ok()?; let target_line_index = language_server .get_line_index(target_specifier) .await @@ -1274,7 +1278,7 @@ impl CallHierarchyOutgoingCall { language_server: &mut language_server::Inner, maybe_root_path: Option<&Path>, ) -> Option<lsp::CallHierarchyOutgoingCall> { - let target_specifier = normalize_specifier(&self.to.file).unwrap(); + let target_specifier = normalize_specifier(&self.to.file).ok()?; let target_line_index = language_server .get_line_index(target_specifier) .await |