Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/navigation_target.rs')
-rw-r--r--crates/ide/src/navigation_target.rs35
1 files changed, 19 insertions, 16 deletions
diff --git a/crates/ide/src/navigation_target.rs b/crates/ide/src/navigation_target.rs
index d67aaac06f..9334b73fc7 100644
--- a/crates/ide/src/navigation_target.rs
+++ b/crates/ide/src/navigation_target.rs
@@ -5,19 +5,20 @@ use std::fmt;
use arrayvec::ArrayVec;
use either::Either;
use hir::{
- db::ExpandDatabase, symbols::FileSymbol, AssocItem, FieldSource, HasContainer, HasCrate,
- HasSource, HirDisplay, HirFileId, InFile, LocalSource, ModuleSource,
+ AssocItem, FieldSource, HasContainer, HasCrate, HasSource, HirDisplay, HirFileId, InFile,
+ LocalSource, ModuleSource, db::ExpandDatabase, symbols::FileSymbol,
};
use ide_db::{
+ FileId, FileRange, RootDatabase, SymbolKind,
defs::Definition,
documentation::{Documentation, HasDocs},
- FileId, FileRange, RootDatabase, SymbolKind,
};
use span::Edition;
use stdx::never;
use syntax::{
+ AstNode, SmolStr, SyntaxNode, TextRange, ToSmolStr,
ast::{self, HasName},
- format_smolstr, AstNode, SmolStr, SyntaxNode, TextRange, ToSmolStr,
+ format_smolstr,
};
/// `NavigationTarget` represents an element in the editor's UI which you can
@@ -816,14 +817,10 @@ pub(crate) fn orig_range_with_focus_r(
) -> UpmappingResult<(FileRange, Option<TextRange>)> {
let Some(name) = focus_range else { return orig_range_r(db, hir_file, value) };
- let call_kind =
- || db.lookup_intern_macro_call(hir_file.macro_file().unwrap().macro_call_id).kind;
+ let call_kind = || db.lookup_intern_macro_call(hir_file.macro_file().unwrap()).kind;
- let def_range = || {
- db.lookup_intern_macro_call(hir_file.macro_file().unwrap().macro_call_id)
- .def
- .definition_range(db)
- };
+ let def_range =
+ || db.lookup_intern_macro_call(hir_file.macro_file().unwrap()).def.definition_range(db);
// FIXME: Also make use of the syntax context to determine which site we are at?
let value_range = InFile::new(hir_file, value).original_node_file_range_opt(db);
@@ -900,7 +897,7 @@ pub(crate) fn orig_range_with_focus_r(
UpmappingResult {
call_site: (
- call_site_range.into(),
+ call_site_range.into_file_id(db),
call_site_focus.and_then(|hir::FileRange { file_id, range }| {
if call_site_range.file_id == file_id && call_site_range.range.contains_range(range)
{
@@ -912,7 +909,7 @@ pub(crate) fn orig_range_with_focus_r(
),
def_site: def_site.map(|(def_site_range, def_site_focus)| {
(
- def_site_range.into(),
+ def_site_range.into_file_id(db),
def_site_focus.and_then(|hir::FileRange { file_id, range }| {
if def_site_range.file_id == file_id
&& def_site_range.range.contains_range(range)
@@ -933,7 +930,10 @@ fn orig_range(
value: &SyntaxNode,
) -> UpmappingResult<(FileRange, Option<TextRange>)> {
UpmappingResult {
- call_site: (InFile::new(hir_file, value).original_file_range_rooted(db).into(), None),
+ call_site: (
+ InFile::new(hir_file, value).original_file_range_rooted(db).into_file_id(db),
+ None,
+ ),
def_site: None,
}
}
@@ -944,7 +944,10 @@ fn orig_range_r(
value: TextRange,
) -> UpmappingResult<(FileRange, Option<TextRange>)> {
UpmappingResult {
- call_site: (InFile::new(hir_file, value).original_node_file_range(db).0.into(), None),
+ call_site: (
+ InFile::new(hir_file, value).original_node_file_range(db).0.into_file_id(db),
+ None,
+ ),
def_site: None,
}
}
@@ -953,7 +956,7 @@ fn orig_range_r(
mod tests {
use expect_test::expect;
- use crate::{fixture, Query};
+ use crate::{Query, fixture};
#[test]
fn test_nav_for_symbol() {