30 lines
528 B
Rust
30 lines
528 B
Rust
// Ensure macro metavariables are compared with legacy hygiene
|
|
|
|
#![feature(rustc_attrs)]
|
|
|
|
//@ run-pass
|
|
|
|
macro_rules! make_mac {
|
|
( $($dollar:tt $arg:ident),+ ) => {
|
|
macro_rules! mac {
|
|
( $($dollar $arg : ident),+ ) => {
|
|
$( $dollar $arg )-+
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
macro_rules! show_hygiene {
|
|
( $dollar:tt $arg:ident ) => {
|
|
make_mac!($dollar $arg, $dollar arg);
|
|
}
|
|
}
|
|
|
|
show_hygiene!( $arg );
|
|
|
|
fn main() {
|
|
let x = 5;
|
|
let y = 3;
|
|
assert_eq!(2, mac!(x, y));
|
|
}
|