| //@ check-pass |
| //@ aux-build:test-macros.rs |
| |
| #![feature(decl_macro)] |
| #![feature(stmt_expr_attributes)] |
| |
| #![no_std] // Don't load unnecessary hygiene information from std |
| extern crate std; |
| |
| #[macro_use] |
| extern crate test_macros; |
| |
| macro mac { |
| (expr $expr:expr) => { |
| #[derive(Print)] |
| enum E { |
| V = { let _ = $expr; 0 }, |
| } |
| }, |
| (stmt $stmt:stmt) => { |
| #[derive(Print)] |
| enum E { |
| V = { let _ = { $stmt }; 0 }, |
| } |
| }, |
| } |
| |
| const PATH: u8 = 2; |
| |
| fn main() { |
| mac!(expr #[allow(warnings)] 0); |
| mac!(stmt 0); |
| mac!(stmt {}); |
| mac!(stmt PATH); |
| mac!(stmt 0 + 1); |
| mac!(stmt PATH + 1); |
| } |