//@ check-pass | |
//@ edition:2018 | |
//@ compile-flags: -Z span-debug | |
//@ aux-build:test-macros.rs | |
// Tests that we properly pass tokens to proc-macro when nested | |
// nonterminals are involved. | |
#![no_std] // Don't load unnecessary hygiene information from std | |
extern crate std; | |
#[macro_use] | |
extern crate test_macros; | |
macro_rules! wrap { | |
(first, $e:expr) => { wrap!(second, $e + 1) }; | |
(second, $e:expr) => { wrap!(third, $e + 2) }; | |
(third, $e:expr) => { | |
print_bang!($e + 3) | |
}; | |
} | |
fn main() { | |
let _ = wrap!(first, 0); | |
} |