| // { dg-output "macro\r*\nmacro\r*\nmacro\r*\nmacro\r*\n" } | |
| #![feature(no_core)] | |
| #![no_core] | |
| extern "C" { | |
| fn printf(s: *const i8, ...); | |
| } | |
| fn f() { | |
| let r_s = "macro\n\0"; | |
| let s_p = r_s as *const str; | |
| let c_p = s_p as *const i8; | |
| printf(c_p); | |
| } | |
| macro_rules! empty0 { | |
| () => ( f() ); | |
| } | |
| macro_rules! empty1 { | |
| {} => { f() }; | |
| } | |
| macro_rules! empty2 { | |
| [] => [ f() ]; | |
| } | |
| // using multiple parens/brackets/curlies variants allows us to make sure we | |
| // parse everything properly | |
| fn main() { | |
| empty0!(); | |
| empty1!{}; | |
| empty2![]; | |
| } |