summaryrefslogtreecommitdiffstats
path: root/src/test/ui/proc-macro/gen-macro-rules-hygiene.rs
blob: 195bda82e9ce1f3cee048362d59f5650d3549592 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// `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
    }
}