diff options
Diffstat (limited to 'cli/lsp/tsc.rs')
-rw-r--r-- | cli/lsp/tsc.rs | 57 |
1 files changed, 27 insertions, 30 deletions
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs index 566c61977..28b1cd0b7 100644 --- a/cli/lsp/tsc.rs +++ b/cli/lsp/tsc.rs @@ -19,9 +19,10 @@ use super::refactor::EXTRACT_TYPE; use super::semantic_tokens; use super::semantic_tokens::SemanticTokensBuilder; use super::text::LineIndex; +use super::urls::uri_to_url; use super::urls::url_to_uri; -use super::urls::LspClientUrl; use super::urls::INVALID_SPECIFIER; +use super::urls::INVALID_URI; use crate::args::jsr_url; use crate::args::FmtOptionsConfig; @@ -2047,7 +2048,7 @@ impl DocumentSpan { let file_referrer = target_asset_or_doc.file_referrer(); let target_uri = language_server .url_map - .normalize_specifier(&target_specifier, file_referrer) + .specifier_to_uri(&target_specifier, file_referrer) .ok()?; let (target_range, target_selection_range) = if let Some(context_span) = &self.context_span { @@ -2072,7 +2073,7 @@ impl DocumentSpan { }; let link = lsp::LocationLink { origin_selection_range, - target_uri: target_uri.to_uri(), + target_uri, target_range, target_selection_range, }; @@ -2092,11 +2093,11 @@ impl DocumentSpan { let line_index = asset_or_doc.line_index(); let range = self.text_span.to_range(line_index); let file_referrer = asset_or_doc.file_referrer(); - let mut target = language_server + let target_uri = language_server .url_map - .normalize_specifier(&specifier, file_referrer) - .ok()? - .into_url(); + .specifier_to_uri(&specifier, file_referrer) + .ok()?; + let mut target = uri_to_url(&target_uri); target.set_fragment(Some(&format!( "L{},{}", range.start.line + 1, @@ -2155,13 +2156,10 @@ impl NavigateToItem { let file_referrer = asset_or_doc.file_referrer(); let uri = language_server .url_map - .normalize_specifier(&specifier, file_referrer) + .specifier_to_uri(&specifier, file_referrer) .ok()?; let range = self.text_span.to_range(line_index); - let location = lsp::Location { - uri: uri.to_uri(), - range, - }; + let location = lsp::Location { uri, range }; let mut tags: Option<Vec<lsp::SymbolTag>> = None; let kind_modifiers = parse_kind_modifier(&self.kind_modifiers); @@ -2414,12 +2412,10 @@ impl ImplementationLocation { let file_referrer = language_server.documents.get_file_referrer(&specifier); let uri = language_server .url_map - .normalize_specifier(&specifier, file_referrer.as_deref()) - .unwrap_or_else(|_| { - LspClientUrl::new(ModuleSpecifier::parse("deno://invalid").unwrap()) - }); + .specifier_to_uri(&specifier, file_referrer.as_deref()) + .unwrap_or_else(|_| INVALID_URI.clone()); lsp::Location { - uri: uri.to_uri(), + uri, range: self.document_span.text_span.to_range(line_index), } } @@ -2475,7 +2471,7 @@ impl RenameLocations { language_server.documents.get_file_referrer(&specifier); let uri = language_server .url_map - .normalize_specifier(&specifier, file_referrer.as_deref())?; + .specifier_to_uri(&specifier, file_referrer.as_deref())?; let asset_or_doc = language_server.get_asset_or_document(&specifier)?; // ensure TextDocumentEdit for `location.file_name`. @@ -2484,7 +2480,7 @@ impl RenameLocations { uri.clone(), lsp::TextDocumentEdit { text_document: lsp::OptionalVersionedTextDocumentIdentifier { - uri: uri.to_uri(), + uri: uri.clone(), version: asset_or_doc.document_lsp_version(), }, edits: @@ -2686,7 +2682,7 @@ impl FileTextChanges { .collect(); Ok(lsp::TextDocumentEdit { text_document: lsp::OptionalVersionedTextDocumentIdentifier { - uri: url_to_uri(&specifier), + uri: url_to_uri(&specifier)?, version: asset_or_doc.document_lsp_version(), }, edits, @@ -2713,7 +2709,7 @@ impl FileTextChanges { if self.is_new_file.unwrap_or(false) { ops.push(lsp::DocumentChangeOperation::Op(lsp::ResourceOp::Create( lsp::CreateFile { - uri: url_to_uri(&specifier), + uri: url_to_uri(&specifier)?, options: Some(lsp::CreateFileOptions { ignore_if_exists: Some(true), overwrite: None, @@ -2730,7 +2726,7 @@ impl FileTextChanges { .collect(); ops.push(lsp::DocumentChangeOperation::Edit(lsp::TextDocumentEdit { text_document: lsp::OptionalVersionedTextDocumentIdentifier { - uri: url_to_uri(&specifier), + uri: url_to_uri(&specifier)?, version: maybe_asset_or_document.and_then(|d| d.document_lsp_version()), }, edits, @@ -3128,10 +3124,10 @@ impl ReferenceEntry { let file_referrer = language_server.documents.get_file_referrer(&specifier); let uri = language_server .url_map - .normalize_specifier(&specifier, file_referrer.as_deref()) - .unwrap_or_else(|_| LspClientUrl::new(INVALID_SPECIFIER.clone())); + .specifier_to_uri(&specifier, file_referrer.as_deref()) + .unwrap_or_else(|_| INVALID_URI.clone()); lsp::Location { - uri: uri.to_uri(), + uri, range: self.document_span.text_span.to_range(line_index), } } @@ -3189,12 +3185,13 @@ impl CallHierarchyItem { .get_file_referrer(&target_specifier); let uri = language_server .url_map - .normalize_specifier(&target_specifier, file_referrer.as_deref()) - .unwrap_or_else(|_| LspClientUrl::new(INVALID_SPECIFIER.clone())); + .specifier_to_uri(&target_specifier, file_referrer.as_deref()) + .unwrap_or_else(|_| INVALID_URI.clone()); let use_file_name = self.is_source_file_item(); - let maybe_file_path = if uri.as_url().scheme() == "file" { - specifier_to_file_path(uri.as_url()).ok() + let maybe_file_path = if uri.scheme().is_some_and(|s| s.as_str() == "file") + { + specifier_to_file_path(&uri_to_url(&uri)).ok() } else { None }; @@ -3238,7 +3235,7 @@ impl CallHierarchyItem { lsp::CallHierarchyItem { name, tags, - uri: uri.to_uri(), + uri, detail: Some(detail), kind: self.kind.clone().into(), range: self.span.to_range(line_index.clone()), |