Open jorendorff opened 7 years ago
Since println
and panic
now lead to only one expansion, here's a new MCVE:
macro_rules! start { () => { end!() }; }
macro_rules! end { () => { () }; }
fn main() { start!(); }
With -Ztrace-macros
:
note: trace_macro
--> hw.rs:4:13
|
4 | fn main() { start!(); }
| ^^^^^^^^
|
= note: expanding `start! { }`
= note: to `end! ()`
= note: expanding `end! { }`
= note: to `()`
(filed per https://github.com/rust-lang/rust/pull/42103#issuecomment-303183649 )
trace_macro
output now contains both "before" and "after" text.But often a macro-call expands to another macro-call. In that case, we get redundant lines from
trace_macro
:The second "
expanding
" note is basically the same as the previous line. We could eliminate that.Note that it's also common for a macro-call to expand to code that merely contains another macro-call somewhere, and in that case we probably shouldn't elide anything.