mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 04:19:13 +00:00
Allow navigation targets to be duplicated when the focus range lies in the macro definition site
This commit is contained in:
parent
9b7ec5e31b
commit
9cb13b6efb
38 changed files with 851 additions and 488 deletions
|
@ -1,5 +1,7 @@
|
|||
//! Entry point for call-hierarchy
|
||||
|
||||
use std::iter;
|
||||
|
||||
use hir::{DescendPreference, Semantics};
|
||||
use ide_db::{
|
||||
defs::{Definition, NameClass, NameRefClass},
|
||||
|
@ -66,7 +68,10 @@ pub(crate) fn incoming_calls(
|
|||
def.try_to_nav(sema.db)
|
||||
});
|
||||
if let Some(nav) = nav {
|
||||
calls.add(nav, sema.original_range(name.syntax()).range);
|
||||
calls.add(nav.call_site, sema.original_range(name.syntax()).range);
|
||||
if let Some(other) = nav.def_site {
|
||||
calls.add(other, sema.original_range(name.syntax()).range);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -117,8 +122,9 @@ pub(crate) fn outgoing_calls(
|
|||
function.try_to_nav(db).zip(Some(range))
|
||||
}
|
||||
}?;
|
||||
Some((nav_target, range))
|
||||
Some(nav_target.into_iter().zip(iter::repeat(range)))
|
||||
})
|
||||
.flatten()
|
||||
.for_each(|(nav, range)| calls.add(nav, range));
|
||||
|
||||
Some(calls.into_items())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue