mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-13 21:54:42 +00:00
Use the selection range when resolving call hierarchy items
Add a test in call_hierarchy that already passed Fixes #5103
This commit is contained in:
parent
248b656c21
commit
20d864807d
2 changed files with 39 additions and 2 deletions
|
@ -355,4 +355,41 @@ fn caller3() {
|
||||||
&["caller3 FN_DEF FileId(1) 66..83 69..76 : [52..59]"],
|
&["caller3 FN_DEF FileId(1) 66..83 69..76 : [52..59]"],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_call_hierarchy_issue_5103() {
|
||||||
|
check_hierarchy(
|
||||||
|
r#"
|
||||||
|
fn a() {
|
||||||
|
b()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn b() {}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
a<|>()
|
||||||
|
}
|
||||||
|
"#,
|
||||||
|
"a FN_DEF FileId(1) 0..18 3..4",
|
||||||
|
&["main FN_DEF FileId(1) 31..52 34..38 : [47..48]"],
|
||||||
|
&["b FN_DEF FileId(1) 20..29 23..24 : [13..14]"],
|
||||||
|
);
|
||||||
|
|
||||||
|
check_hierarchy(
|
||||||
|
r#"
|
||||||
|
fn a() {
|
||||||
|
b<|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn b() {}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
a()
|
||||||
|
}
|
||||||
|
"#,
|
||||||
|
"b FN_DEF FileId(1) 20..29 23..24",
|
||||||
|
&["a FN_DEF FileId(1) 0..18 3..4 : [13..14]"],
|
||||||
|
&[],
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1045,7 +1045,7 @@ pub(crate) fn handle_call_hierarchy_incoming(
|
||||||
let item = params.item;
|
let item = params.item;
|
||||||
|
|
||||||
let doc = TextDocumentIdentifier::new(item.uri);
|
let doc = TextDocumentIdentifier::new(item.uri);
|
||||||
let frange = from_proto::file_range(&snap, doc, item.range)?;
|
let frange = from_proto::file_range(&snap, doc, item.selection_range)?;
|
||||||
let fpos = FilePosition { file_id: frange.file_id, offset: frange.range.start() };
|
let fpos = FilePosition { file_id: frange.file_id, offset: frange.range.start() };
|
||||||
|
|
||||||
let call_items = match snap.analysis.incoming_calls(fpos)? {
|
let call_items = match snap.analysis.incoming_calls(fpos)? {
|
||||||
|
@ -1080,7 +1080,7 @@ pub(crate) fn handle_call_hierarchy_outgoing(
|
||||||
let item = params.item;
|
let item = params.item;
|
||||||
|
|
||||||
let doc = TextDocumentIdentifier::new(item.uri);
|
let doc = TextDocumentIdentifier::new(item.uri);
|
||||||
let frange = from_proto::file_range(&snap, doc, item.range)?;
|
let frange = from_proto::file_range(&snap, doc, item.selection_range)?;
|
||||||
let fpos = FilePosition { file_id: frange.file_id, offset: frange.range.start() };
|
let fpos = FilePosition { file_id: frange.file_id, offset: frange.range.start() };
|
||||||
|
|
||||||
let call_items = match snap.analysis.outgoing_calls(fpos)? {
|
let call_items = match snap.analysis.outgoing_calls(fpos)? {
|
||||||
|
|
Loading…
Reference in a new issue