| //@ check-pass | |
| //@ compile-flags: -Zunpretty=expanded,hygiene | |
| // Regression test for token hygiene annotations in -Zunpretty=expanded,hygiene | |
| // Previously, tokens in macro_rules! bodies were missing hygiene annotations, | |
| // making it impossible to see how a macro's reference to a shadowed variable | |
| // is distinguished from the shadowing binding. | |
| // Don't break whenever Symbol numbering changes | |
| //@ normalize-stdout: "\d+#" -> "0#" | |
| #![feature /* 0#0 */(no_core /* 0#0 */)] | |
| #![no_core /* 0#0 */] | |
| fn f /* 0#0 */() { | |
| let x /* 0#0 */ = 0; | |
| macro_rules! use_x /* 0#0 */ { () => { x /* 0#0 */ }; } | |
| let x /* 0#0 */ = 1; | |
| x /* 0#1 */; | |
| } | |
| /* | |
| Expansions: | |
| crate0::{{expn0}}: parent: crate0::{{expn0}}, call_site_ctxt: #0, def_site_ctxt: #0, kind: Root | |
| crate0::{{expn1}}: parent: crate0::{{expn0}}, call_site_ctxt: #0, def_site_ctxt: #0, kind: Macro(Bang, "use_x") | |
| SyntaxContexts: | |
| #0: parent: #0, outer_mark: (crate0::{{expn0}}, Opaque) | |
| #1: parent: #0, outer_mark: (crate0::{{expn1}}, SemiOpaque) | |
| */ |