summaryrefslogtreecommitdiff
path: root/cli/lsp/diagnostics.rs
diff options
context:
space:
mode:
authorNayeem Rahman <nayeemrmn99@gmail.com>2024-08-28 05:15:48 +0100
committerGitHub <noreply@github.com>2024-08-28 05:15:48 +0100
commit97d1635343dc6e93c8dcf4b116922de5b9c57af3 (patch)
tree6edb8630d4ec473c73c47ace90a7053a898f5570 /cli/lsp/diagnostics.rs
parentefcabce1c117a2e0fed8604d887695a0a19a37ad (diff)
fix(lsp): panic on url_to_uri() (#25238)
Diffstat (limited to 'cli/lsp/diagnostics.rs')
-rw-r--r--cli/lsp/diagnostics.rs39
1 files changed, 18 insertions, 21 deletions
diff --git a/cli/lsp/diagnostics.rs b/cli/lsp/diagnostics.rs
index d871ffbe4..9d9a0ae45 100644
--- a/cli/lsp/diagnostics.rs
+++ b/cli/lsp/diagnostics.rs
@@ -13,7 +13,6 @@ use super::performance::Performance;
use super::tsc;
use super::tsc::TsServer;
use super::urls::url_to_uri;
-use super::urls::LspClientUrl;
use super::urls::LspUrlMap;
use crate::graph_util;
@@ -164,15 +163,14 @@ impl DiagnosticsPublisher {
.state
.update(&record.specifier, version, &all_specifier_diagnostics);
let file_referrer = documents.get_file_referrer(&record.specifier);
+ let Ok(uri) =
+ url_map.specifier_to_uri(&record.specifier, file_referrer.as_deref())
+ else {
+ continue;
+ };
self
.client
- .publish_diagnostics(
- url_map
- .normalize_specifier(&record.specifier, file_referrer.as_deref())
- .unwrap_or(LspClientUrl::new(record.specifier)),
- all_specifier_diagnostics,
- version,
- )
+ .publish_diagnostics(uri, all_specifier_diagnostics, version)
.await;
messages_sent += 1;
}
@@ -195,15 +193,14 @@ impl DiagnosticsPublisher {
// clear out any diagnostics for this specifier
self.state.update(specifier, removed_value.version, &[]);
let file_referrer = documents.get_file_referrer(specifier);
+ let Ok(uri) =
+ url_map.specifier_to_uri(specifier, file_referrer.as_deref())
+ else {
+ continue;
+ };
self
.client
- .publish_diagnostics(
- url_map
- .normalize_specifier(specifier, file_referrer.as_deref())
- .unwrap_or_else(|_| LspClientUrl::new(specifier.clone())),
- Vec::new(),
- removed_value.version,
- )
+ .publish_diagnostics(uri, Vec::new(), removed_value.version)
.await;
messages_sent += 1;
}
@@ -1074,7 +1071,7 @@ impl DenoDiagnostic {
diagnostics: Some(vec![diagnostic.clone()]),
edit: Some(lsp::WorkspaceEdit {
changes: Some(HashMap::from([(
- url_to_uri(specifier),
+ url_to_uri(specifier)?,
vec![lsp::TextEdit {
new_text: format!("\"{to}\""),
range: diagnostic.range,
@@ -1091,7 +1088,7 @@ impl DenoDiagnostic {
diagnostics: Some(vec![diagnostic.clone()]),
edit: Some(lsp::WorkspaceEdit {
changes: Some(HashMap::from([(
- url_to_uri(specifier),
+ url_to_uri(specifier)?,
vec![lsp::TextEdit {
new_text: " with { type: \"json\" }".to_string(),
range: lsp::Range {
@@ -1142,7 +1139,7 @@ impl DenoDiagnostic {
diagnostics: Some(vec![diagnostic.clone()]),
edit: Some(lsp::WorkspaceEdit {
changes: Some(HashMap::from([(
- url_to_uri(specifier),
+ url_to_uri(specifier)?,
vec![lsp::TextEdit {
new_text: format!(
"\"{}\"",
@@ -1168,7 +1165,7 @@ impl DenoDiagnostic {
diagnostics: Some(vec![diagnostic.clone()]),
edit: Some(lsp::WorkspaceEdit {
changes: Some(HashMap::from([(
- url_to_uri(specifier),
+ url_to_uri(specifier)?,
vec![lsp::TextEdit {
new_text: format!(
"\"{}\"",
@@ -1194,7 +1191,7 @@ impl DenoDiagnostic {
diagnostics: Some(vec![diagnostic.clone()]),
edit: Some(lsp::WorkspaceEdit {
changes: Some(HashMap::from([(
- url_to_uri(specifier),
+ url_to_uri(specifier)?,
vec![lsp::TextEdit {
new_text: format!("\"node:{}\"", data.specifier),
range: diagnostic.range,
@@ -1642,7 +1639,7 @@ mod tests {
fn mock_config() -> Config {
let root_url = resolve_url("file:///").unwrap();
- let root_uri = url_to_uri(&root_url);
+ let root_uri = url_to_uri(&root_url).unwrap();
Config {
settings: Arc::new(Settings {
unscoped: Arc::new(WorkspaceSettings {