Fix error message shown for goto references (#9382)

This commit is contained in:
Nick 2024-01-25 10:41:12 +05:30 committed by GitHub
parent cda8ea991e
commit d8b8d2fda6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1007,6 +1007,7 @@ pub fn apply_workspace_edit(
Ok(()) Ok(())
} }
/// Precondition: `locations` should be non-empty.
fn goto_impl( fn goto_impl(
editor: &mut Editor, editor: &mut Editor,
compositor: &mut Compositor, compositor: &mut Compositor,
@ -1019,9 +1020,7 @@ fn goto_impl(
[location] => { [location] => {
jump_to_location(editor, location, offset_encoding, Action::Replace); jump_to_location(editor, location, offset_encoding, Action::Replace);
} }
[] => { [] => unreachable!("`locations` should be non-empty for `goto_impl`"),
editor.set_error("No definition found.");
}
_locations => { _locations => {
let picker = Picker::new(locations, cwdir, move |cx, location, action| { let picker = Picker::new(locations, cwdir, move |cx, location, action| {
jump_to_location(cx.editor, location, offset_encoding, action) jump_to_location(cx.editor, location, offset_encoding, action)
@ -1063,7 +1062,11 @@ fn goto_single_impl<P, F>(cx: &mut Context, feature: LanguageServerFeature, requ
future, future,
move |editor, compositor, response: Option<lsp::GotoDefinitionResponse>| { move |editor, compositor, response: Option<lsp::GotoDefinitionResponse>| {
let items = to_locations(response); let items = to_locations(response);
goto_impl(editor, compositor, items, offset_encoding); if items.is_empty() {
editor.set_error("No definition found.");
} else {
goto_impl(editor, compositor, items, offset_encoding);
}
}, },
); );
} }
@ -1123,7 +1126,11 @@ pub fn goto_reference(cx: &mut Context) {
future, future,
move |editor, compositor, response: Option<Vec<lsp::Location>>| { move |editor, compositor, response: Option<Vec<lsp::Location>>| {
let items = response.unwrap_or_default(); let items = response.unwrap_or_default();
goto_impl(editor, compositor, items, offset_encoding); if items.is_empty() {
editor.set_error("No references found.");
} else {
goto_impl(editor, compositor, items, offset_encoding);
}
}, },
); );
} }