Remove confusing API

This commit is contained in:
Aleksey Kladov 2020-06-30 13:27:13 +02:00
parent 34072d53b6
commit af7e300041
4 changed files with 32 additions and 27 deletions

View file

@ -330,11 +330,12 @@ pub(crate) fn handle_workspace_symbol(
fn exec_query(snap: &GlobalStateSnapshot, query: Query) -> Result<Vec<SymbolInformation>> {
let mut res = Vec::new();
for nav in snap.analysis.symbol_search(query)? {
let container_name = nav.container_name().map(|v| v.to_string());
let info = SymbolInformation {
name: nav.name().to_string(),
kind: to_proto::symbol_kind(nav.kind()),
location: to_proto::location(snap, nav.file_range())?,
container_name: nav.container_name().map(|v| v.to_string()),
location: to_proto::location_from_nav(snap, nav)?,
container_name,
deprecated: None,
};
res.push(info);
@ -1213,8 +1214,8 @@ fn show_impl_command_link(
let position = to_proto::position(&line_index, position.offset);
let locations: Vec<_> = nav_data
.info
.iter()
.filter_map(|it| to_proto::location(snap, it.file_range()).ok())
.into_iter()
.filter_map(|nav| to_proto::location_from_nav(snap, nav).ok())
.collect();
let title = implementation_title(locations.len());
let command = show_references_command(title, &uri, position, locations);

View file

@ -446,6 +446,18 @@ pub(crate) fn location(
Ok(loc)
}
/// Perefer using `location_link`, if the client has the cap.
pub(crate) fn location_from_nav(
snap: &GlobalStateSnapshot,
nav: NavigationTarget,
) -> Result<lsp_types::Location> {
let url = url(snap, nav.file_id());
let line_index = snap.analysis.file_line_index(nav.file_id())?;
let range = range(&line_index, nav.full_range());
let loc = lsp_types::Location::new(url, range);
Ok(loc)
}
pub(crate) fn location_link(
snap: &GlobalStateSnapshot,
src: Option<FileRange>,