diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2023-03-23 10:23:04 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-23 14:23:04 +0000 |
commit | 6e5a631fe094fa77209d51b65adfcc52d738e197 (patch) | |
tree | 75b872b56490af578b28f8a973a438403af80a62 /cli/lsp/language_server.rs | |
parent | a3529d02329e0d2127ad2a5bb78b4c476ddd6984 (diff) |
refactor(lsp): add `LspClientUrl` (#18376)
This will make it a bit harder to accidentally use a client url in the
wrong place. I don't fully understand why we do this mapping, but this
will help prevent bugs like #18373
Closes #18374
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r-- | cli/lsp/language_server.rs | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index 519d1c94f..72beb04bb 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -59,6 +59,7 @@ use super::tsc::Assets; use super::tsc::AssetsSnapshot; use super::tsc::TsServer; use super::urls; +use super::urls::LspClientUrl; use crate::args::get_root_cert_store; use crate::args::package_json; use crate::args::resolve_import_map_from_specifier; @@ -338,7 +339,10 @@ impl LanguageServer { match &ls.config.workspace_folders { Some(entry) => { for (specifier, folder) in entry { - specifiers.insert(specifier.clone(), folder.uri.clone()); + specifiers.insert( + specifier.clone(), + LspClientUrl::new(folder.uri.clone()), + ); } } None => { @@ -2868,9 +2872,10 @@ impl tower_lsp::LanguageServer for LanguageServer { let (client, client_uri, specifier, had_specifier_settings) = { let mut inner = self.0.write().await; let client = inner.client.clone(); - let client_uri = params.text_document.uri.clone(); - let specifier = - inner.url_map.normalize_url(&client_uri, LspUrlKind::File); + let client_uri = LspClientUrl::new(params.text_document.uri.clone()); + let specifier = inner + .url_map + .normalize_url(client_uri.as_url(), LspUrlKind::File); let document = inner.did_open(&specifier, params).await; let has_specifier_settings = inner.config.has_specifier_settings(&specifier); |