aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/rust/compile/macro32.rs
blob: d1d6305e6bdd005a0a696037926389ae9767c85b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
macro_rules! s {
    ($s:stmt) => {{}};
}

macro_rules! multi_s {
    ($($s:stmt)+) => {{}};
}

fn main() -> i32 {
    s!(let a = 15);
    s!(;); // Empty statement
    s!(let a = 15;); // { dg-error "Failed to match any rule within macro" }
    multi_s!(let a = 15;);
    // ^ this actually gets parsed as two statements - one LetStmt and one
    // empty statement. This is the same behavior as rustc, which you can
    // see using a count!() macro

    32
}