about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/test/run-pass/macro-stmt.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/test/run-pass/macro-stmt.rs b/src/test/run-pass/macro-stmt.rs
new file mode 100644
index 00000000000..e0b88d1c892
--- /dev/null
+++ b/src/test/run-pass/macro-stmt.rs
@@ -0,0 +1,32 @@
+// xfail-pretty - token trees can't pretty print
+
+macro_rules! myfn(
+    ( $f:ident, ( $( $x:ident ),* ), $body:block ) => (
+        fn $f( $( $x : int),* ) -> int $body
+    )
+)
+
+myfn!(add, (a,b), { return a+b; } )
+
+fn main() {
+
+    macro_rules! mylet(
+        ($x:ident, $val:expr) => (
+            let $x = $val;
+        )
+    );
+
+    mylet!(y, 8*2);
+    assert(y == 16);
+
+    myfn!(mult, (a,b), { a*b } );
+
+    assert (mult(2, add(4,4)) == 16);
+
+    macro_rules! actually_an_expr_macro (
+        () => ( 16 )
+    )
+
+    assert { actually_an_expr_macro!() } == 16;
+
+}