| // `macro_rules` items produced by transparent macros have correct hygiene in basic cases. |
| // Local variables and labels are hygienic, items are not hygienic. |
| // `$crate` refers to the crate that defines `macro_rules` and not the outer transparent macro. |
| |
| //@ aux-build:gen-macro-rules-hygiene.rs |
| |
| #[macro_use] |
| extern crate gen_macro_rules_hygiene; |
| |
| struct ItemUse; |
| |
| gen_macro_rules!(); |
| //~^ ERROR use of undeclared label `'label_use` |
| //~| ERROR cannot find value `local_use` in this scope |
| |
| fn main() { |
| 'label_use: loop { |
| let local_use = 1; |
| generated!(); |
| ItemDef; // OK |
| local_def; //~ ERROR cannot find value `local_def` in this scope |
| } |
| } |