Skip to content

Commit 1c77f36

Browse files
committed
internal: Make ascend_call_token iterative instead of recursive
1 parent 1dee488 commit 1c77f36

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

crates/hir_expand/src/lib.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -710,14 +710,14 @@ fn ascend_call_token(
710710
expansion: &ExpansionInfo,
711711
token: InFile<SyntaxToken>,
712712
) -> Option<InFile<SyntaxToken>> {
713-
let (mapped, origin) = expansion.map_token_up(db, token.as_ref())?;
714-
if origin != Origin::Call {
715-
return None;
716-
}
717-
if let Some(info) = mapped.file_id.expansion_info(db) {
718-
return ascend_call_token(db, &info, mapped);
713+
let mut mapping = expansion.map_token_up(db, token.as_ref())?;
714+
while let (mapped, Origin::Call) = mapping {
715+
match mapped.file_id.expansion_info(db) {
716+
Some(info) => mapping = info.map_token_up(db, mapped.as_ref())?,
717+
None => return Some(mapped),
718+
}
719719
}
720-
Some(mapped)
720+
None
721721
}
722722

723723
impl InFile<SyntaxToken> {

0 commit comments

Comments
 (0)