Unclutter NavigationTarget API

This commit is contained in:
Aleksey Kladov
2020-07-17 12:42:48 +02:00
parent f157a0983a
commit d7548a36a7
11 changed files with 166 additions and 198 deletions

View File

@@ -497,9 +497,9 @@ 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 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)
}
@@ -531,12 +531,12 @@ fn location_info(
snap: &GlobalStateSnapshot,
target: NavigationTarget,
) -> Result<(lsp_types::Url, lsp_types::Range, lsp_types::Range)> {
let line_index = snap.analysis.file_line_index(target.file_id())?;
let line_index = snap.analysis.file_line_index(target.file_id)?;
let target_uri = url(snap, target.file_id());
let target_range = range(&line_index, target.full_range());
let target_uri = url(snap, target.file_id);
let target_range = range(&line_index, target.full_range);
let target_selection_range =
target.focus_range().map(|it| range(&line_index, it)).unwrap_or(target_range);
target.focus_range.map(|it| range(&line_index, it)).unwrap_or(target_range);
Ok((target_uri, target_range, target_selection_range))
}
@@ -555,13 +555,7 @@ pub(crate) fn goto_definition_response(
let locations = targets
.into_iter()
.map(|nav| {
location(
snap,
FileRange {
file_id: nav.file_id(),
range: nav.focus_range().unwrap_or(nav.range()),
},
)
location(snap, FileRange { file_id: nav.file_id, range: nav.focus_or_full_range() })
})
.collect::<Result<Vec<_>>>()?;
Ok(locations.into())
@@ -666,9 +660,9 @@ pub(crate) fn call_hierarchy_item(
snap: &GlobalStateSnapshot,
target: NavigationTarget,
) -> Result<lsp_types::CallHierarchyItem> {
let name = target.name().to_string();
let detail = target.description().map(|it| it.to_string());
let kind = symbol_kind(target.kind());
let name = target.name.to_string();
let detail = target.description.clone();
let kind = symbol_kind(target.kind);
let (uri, range, selection_range) = location_info(snap, target)?;
Ok(lsp_types::CallHierarchyItem { name, kind, tags: None, detail, uri, range, selection_range })
}