Make print_macro_backtrace non-recursive
This commit is contained in:
parent
9577e42682
commit
49d8b0dcbe
1 changed files with 26 additions and 22 deletions
|
@ -727,7 +727,9 @@ impl EmitterWriter {
|
|||
cm: &codemap::CodeMap,
|
||||
sp: Span)
|
||||
-> io::Result<()> {
|
||||
let cs = try!(cm.with_expn_info(sp.expn_id, |expn_info| -> io::Result<_> {
|
||||
let mut sp_opt = Some(sp);
|
||||
while let Some(sp) = sp_opt {
|
||||
sp_opt = try!(cm.with_expn_info(sp.expn_id, |expn_info| -> io::Result<_> {
|
||||
match expn_info {
|
||||
Some(ei) => {
|
||||
let ss = ei.callee.span.map_or(String::new(),
|
||||
|
@ -750,7 +752,9 @@ impl EmitterWriter {
|
|||
None => Ok(None)
|
||||
}
|
||||
}));
|
||||
cs.map_or(Ok(()), |call_site| self.print_macro_backtrace(cm, call_site))
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue