| // | |
| //@ run-pass | |
| // | |
| // Description - ensure block metavariables can act as valid function bodies | |
| // Covered cases: free functions, struct methods, and default trait functions | |
| macro_rules! def_fn { | |
| ($body:block) => { | |
| fn bar() $body | |
| } | |
| } | |
| trait Foo { | |
| def_fn!({ println!("foo"); }); | |
| } | |
| struct Baz {} | |
| impl Foo for Baz {} | |
| struct Qux {} | |
| impl Qux { | |
| def_fn!({ println!("qux"); }); | |
| } | |
| def_fn!({ println!("quux"); }); | |
| pub fn main() { | |
| Baz::bar(); | |
| Qux::bar(); | |
| bar(); | |
| } |