about summary refs log tree commit diff
path: root/tests/ui/macros/metavar-expressions/out-of-bounds-arguments.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/macros/metavar-expressions/out-of-bounds-arguments.rs')
-rw-r--r--tests/ui/macros/metavar-expressions/out-of-bounds-arguments.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/ui/macros/metavar-expressions/out-of-bounds-arguments.rs b/tests/ui/macros/metavar-expressions/out-of-bounds-arguments.rs
new file mode 100644
index 00000000000..0caa3ea89e4
--- /dev/null
+++ b/tests/ui/macros/metavar-expressions/out-of-bounds-arguments.rs
@@ -0,0 +1,43 @@
+#![feature(macro_metavar_expr)]
+
+macro_rules! a {
+    ( $( { $( [ $( ( $( $foo:ident )* ) )* ] )* } )* ) => {
+        (
+            ${count($foo, 0)},
+            ${count($foo, 10)},
+            //~^ ERROR depth parameter of meta-variable expression `count` must be less than 4
+        )
+    };
+}
+
+macro_rules! b {
+    ( $( { $( [ $( $foo:ident )* ] )* } )* ) => {
+        (
+            $( $( $(
+                ${ignore($foo)}
+                ${index(0)},
+                ${index(10)},
+                //~^ ERROR depth parameter of meta-variable expression `index` must be less than 3
+            )* )* )*
+        )
+    };
+}
+
+macro_rules! c {
+    ( $( { $( $foo:ident )* } )* ) => {
+        (
+            $( $(
+                ${ignore($foo)}
+                ${len(0)}
+                ${len(10)}
+                //~^ ERROR depth parameter of meta-variable expression `len` must be less than 2
+            )* )*
+        )
+    };
+}
+
+fn main() {
+    a!( { [ (a) ] [ (b c) ] } );
+    b!( { [ a b ] } );
+    c!({ a });
+}