diff options
Diffstat (limited to '')
-rw-r--r-- | src/test/ui/macros/macro-as-fn-body.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/test/ui/macros/macro-as-fn-body.rs b/src/test/ui/macros/macro-as-fn-body.rs new file mode 100644 index 000000000..6781c9a9e --- /dev/null +++ b/src/test/ui/macros/macro-as-fn-body.rs @@ -0,0 +1,33 @@ +// +// run-pass +// +// Description - ensure Interpolated blocks 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(); +} |