aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2022-03-03 14:26:23 +0100
committerArthur Cohen <arthur.cohen@embecosm.com>2022-03-03 15:21:09 +0100
commit0c7e16e1258b67ba8efa1b019802bee4d802d4a5 (patch)
tree89dfecb7d84cb7a94abf40b63a4eb48fb7069e04 /gcc
parent4fde21b37a2de2d2915d13d108395e86980aef96 (diff)
downloadgcc-0c7e16e1258b67ba8efa1b019802bee4d802d4a5.zip
gcc-0c7e16e1258b67ba8efa1b019802bee4d802d4a5.tar.gz
gcc-0c7e16e1258b67ba8efa1b019802bee4d802d4a5.tar.bz2
macros: Add test cases for macro repetition separators
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/rust/compile/macro9.rs17
-rw-r--r--gcc/testsuite/rust/execute/torture/macros19.rs14
-rw-r--r--gcc/testsuite/rust/execute/torture/macros20.rs14
3 files changed, 45 insertions, 0 deletions
diff --git a/gcc/testsuite/rust/compile/macro9.rs b/gcc/testsuite/rust/compile/macro9.rs
new file mode 100644
index 0000000..9a59089
--- /dev/null
+++ b/gcc/testsuite/rust/compile/macro9.rs
@@ -0,0 +1,17 @@
+macro_rules! add {
+ ($e:expr, $($es:expr),*) => {
+ $e + add!($($es),*)
+ };
+ ($e:expr) => {
+ $e
+ };
+}
+
+fn main() -> i32 {
+ let a = add!(15 2 9); // { dg-error "Failed to match any rule within macro" }
+ let b = add!(15);
+ let b = add!(15 14); // { dg-error "Failed to match any rule within macro" }
+ let b = add!(15, 14,); // { dg-error "Failed to match any rule within macro" }
+
+ 0
+}
diff --git a/gcc/testsuite/rust/execute/torture/macros19.rs b/gcc/testsuite/rust/execute/torture/macros19.rs
new file mode 100644
index 0000000..4732545
--- /dev/null
+++ b/gcc/testsuite/rust/execute/torture/macros19.rs
@@ -0,0 +1,14 @@
+macro_rules! add {
+ ($e:expr, $($es:expr),*) => {
+ $e + add!($($es),*)
+ };
+ ($e:expr) => {
+ $e
+ };
+}
+
+fn main() -> i32 {
+ let a = add!(15, 2, 9); // 26
+
+ a - 26
+}
diff --git a/gcc/testsuite/rust/execute/torture/macros20.rs b/gcc/testsuite/rust/execute/torture/macros20.rs
new file mode 100644
index 0000000..fc116d0
--- /dev/null
+++ b/gcc/testsuite/rust/execute/torture/macros20.rs
@@ -0,0 +1,14 @@
+macro_rules! add {
+ ($e:expr big_tok $($es:expr) big_tok *) => {
+ $e + add!($($es) big_tok *)
+ };
+ ($e:expr) => {
+ $e
+ };
+}
+
+fn main() -> i32 {
+ let a = add!(15 big_tok 2 big_tok 9); // 26
+
+ a - 26
+}