From be2b9a3e5d3582007b98d3e52019db1cdca316ab Mon Sep 17 00:00:00 2001 From: Steve Dignam Date: Tue, 27 Jan 2026 20:14:21 -0500 Subject: [PATCH] server: simplify GotoDefinitionResponse creation --- crates/squawk_server/src/lib.rs | 44 ++++++++++----------------------- 1 file changed, 13 insertions(+), 31 deletions(-) diff --git a/crates/squawk_server/src/lib.rs b/crates/squawk_server/src/lib.rs index 95368a88..8fc483f1 100644 --- a/crates/squawk_server/src/lib.rs +++ b/crates/squawk_server/src/lib.rs @@ -192,39 +192,21 @@ fn handle_goto_definition( let line_index = LineIndex::new(content); let offset = lsp_utils::offset(&line_index, position).unwrap(); - let ranges = goto_definition(file, offset); - - let result = if ranges.is_empty() { - GotoDefinitionResponse::Array(vec![]) - } else if ranges.len() == 1 { - // TODO: can we just always use the array response? - let target_range = ranges[0]; - debug_assert!( - !target_range.contains(offset), - "Our target destination range must not include the source range otherwise go to def won't work in vscode." - ); - GotoDefinitionResponse::Scalar(Location { - uri: uri.clone(), - range: lsp_utils::range(&line_index, target_range), + let ranges = goto_definition(file, offset) + .into_iter() + .map(|target_range| { + debug_assert!( + !target_range.contains(offset), + "Our target destination range must not include the source range otherwise go to def won't work in vscode." + ); + Location { + uri: uri.clone(), + range: lsp_utils::range(&line_index, target_range), + } }) - } else { - GotoDefinitionResponse::Array( - ranges - .into_iter() - .map(|target_range| { - debug_assert!( - !target_range.contains(offset), - "Our target destination range must not include the source range otherwise go to def won't work in vscode." - ); - Location { - uri: uri.clone(), - range: lsp_utils::range(&line_index, target_range), - } - }) - .collect(), - ) - }; + .collect(); + let result = GotoDefinitionResponse::Array(ranges); let resp = Response { id: req.id, result: Some(serde_json::to_value(&result).unwrap()),