diff options
author | Arthur Cohen <arthur.cohen@embecosm.com> | 2022-03-01 11:32:31 +0100 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2022-03-01 15:20:31 +0100 |
commit | 82fc107e3d1929ec41135353d62a11c42979f831 (patch) | |
tree | 8587cfb57556a5a73d50fe697558c57a0555d62c /gcc | |
parent | c8499831fd6c4adba5e72a0e042859a7c5a15893 (diff) | |
download | gcc-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.rs | 14 | ||||
-rw-r--r-- | gcc/testsuite/rust/execute/torture/macros17.rs | 17 | ||||
-rw-r--r-- | gcc/testsuite/rust/execute/torture/macros18.rs | 14 |
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 +} |