about summary refs log tree commit diff
path: root/tests/ui/proc-macro/gen-macro-rules-hygiene.rs
blob: fb7c830c2edf45a5cf64ef7b02b25d3d42cf8b59 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// `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.

//@ proc-macro: gen-macro-rules-hygiene.rs
//@ ignore-backends: gcc

#[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
    }
}