24 lines
678 B
Rust
24 lines
678 B
Rust
|
// `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
|
||
|
}
|
||
|
}
|