mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 11:31:15 +00:00
internal: Make ascend_call_token
iterative instead of recursive
This commit is contained in:
parent
1dee488a68
commit
1c77f36311
@ -710,14 +710,14 @@ fn ascend_call_token(
|
|||||||
expansion: &ExpansionInfo,
|
expansion: &ExpansionInfo,
|
||||||
token: InFile<SyntaxToken>,
|
token: InFile<SyntaxToken>,
|
||||||
) -> Option<InFile<SyntaxToken>> {
|
) -> Option<InFile<SyntaxToken>> {
|
||||||
let (mapped, origin) = expansion.map_token_up(db, token.as_ref())?;
|
let mut mapping = expansion.map_token_up(db, token.as_ref())?;
|
||||||
if origin != Origin::Call {
|
while let (mapped, Origin::Call) = mapping {
|
||||||
return None;
|
match mapped.file_id.expansion_info(db) {
|
||||||
|
Some(info) => mapping = info.map_token_up(db, mapped.as_ref())?,
|
||||||
|
None => return Some(mapped),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if let Some(info) = mapped.file_id.expansion_info(db) {
|
None
|
||||||
return ascend_call_token(db, &info, mapped);
|
|
||||||
}
|
|
||||||
Some(mapped)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl InFile<SyntaxToken> {
|
impl InFile<SyntaxToken> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user