aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2022-03-01 11:32:31 +0100
committerArthur Cohen <arthur.cohen@embecosm.com>2022-03-01 15:20:31 +0100
commit82fc107e3d1929ec41135353d62a11c42979f831 (patch)
tree8587cfb57556a5a73d50fe697558c57a0555d62c /gcc
parentc8499831fd6c4adba5e72a0e042859a7c5a15893 (diff)
downloadgcc-82fc107e3d1929ec41135353d62a11c42979f831.zip
gcc-82fc107e3d1929ec41135353d62a11c42979f831.tar.gz
gcc-82fc107e3d1929ec41135353d62a11c42979f831.tar.bz2
macros: Add test cases for recursive macro invocation
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/rust/execute/torture/macros16.rs14
-rw-r--r--gcc/testsuite/rust/execute/torture/macros17.rs17
-rw-r--r--gcc/testsuite/rust/execute/torture/macros18.rs14
3 files changed, 45 insertions, 0 deletions
diff --git a/gcc/testsuite/rust/execute/torture/macros16.rs b/gcc/testsuite/rust/execute/torture/macros16.rs
new file mode 100644
index 0000000..47ab241
--- /dev/null
+++ b/gcc/testsuite/rust/execute/torture/macros16.rs
@@ -0,0 +1,14 @@
+macro_rules! add {
+ ($e:literal) => {
+ 0 + $e
+ };
+ ($e:literal $($es:literal)*) => {
+ $e + add!($($es)*)
+ };
+}
+
+fn main() -> i32 {
+ let a = add!(1 2 3 10); // 16
+
+ a - 16
+}
diff --git a/gcc/testsuite/rust/execute/torture/macros17.rs b/gcc/testsuite/rust/execute/torture/macros17.rs
new file mode 100644
index 0000000..e007bb3
--- /dev/null
+++ b/gcc/testsuite/rust/execute/torture/macros17.rs
@@ -0,0 +1,17 @@
+macro_rules! two {
+ (2) => {
+ 3
+ };
+}
+
+macro_rules! one {
+ (1) => {
+ two!(2)
+ };
+}
+
+fn main() -> i32 {
+ let a = one!(1);
+
+ a - 3
+}
diff --git a/gcc/testsuite/rust/execute/torture/macros18.rs b/gcc/testsuite/rust/execute/torture/macros18.rs
new file mode 100644
index 0000000..61df17e
--- /dev/null
+++ b/gcc/testsuite/rust/execute/torture/macros18.rs
@@ -0,0 +1,14 @@
+macro_rules! add {
+ ($e:literal) => {
+ 0 + $e
+ };
+ ($e:literal $($es:literal)*) => {
+ $e + add!($($es)*)
+ };
+}
+
+fn main() -> i32 {
+ let a = add!(3 4); // 7
+
+ a - 7
+}