Closed
Description
E.g.
#![feature(macro_rules)]
// minimal junk
#![no_std]
macro_rules! foo {
($x: ident) => { y + $x }
}
fn bar() {
let x = 1;
foo!(x)
}
becomes
#![feature(macro_rules)]
// minimal junk
#![no_std]
fn bar /* 61#0 */() { let x /* 58#2 */ = 1; y /* 60#4 */ + x /* 58#5 */ }
Specifically, the syntax contexts of x /* 58#2 */
and x /* 58#5 */
are linked (the x
s refer to the same identifier, even with hygiene) but this is not represented in the output at all, so one might interpret them as being distinct identifiers.