mirror of
				https://github.com/rust-lang/rust-analyzer.git
				synced 2025-11-03 13:13:18 +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,
 | 
			
		||||
    token: InFile<SyntaxToken>,
 | 
			
		||||
) -> Option<InFile<SyntaxToken>> {
 | 
			
		||||
    let (mapped, origin) = expansion.map_token_up(db, token.as_ref())?;
 | 
			
		||||
    if origin != Origin::Call {
 | 
			
		||||
        return None;
 | 
			
		||||
    let mut mapping = expansion.map_token_up(db, token.as_ref())?;
 | 
			
		||||
    while let (mapped, Origin::Call) = mapping {
 | 
			
		||||
        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) {
 | 
			
		||||
        return ascend_call_token(db, &info, mapped);
 | 
			
		||||
    }
 | 
			
		||||
    Some(mapped)
 | 
			
		||||
    None
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl InFile<SyntaxToken> {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user