1 // edition:2021
2 
3 macro_rules! demo2 {
4     ( $a:tt $b:tt ) => { println!("two tokens") };
5 }
6 
7 macro_rules! demo3 {
8     ( $a:tt $b:tt $c:tt ) => { println!("three tokens") };
9 }
10 
11 macro_rules! demo4 {
12     ( $a:tt $b:tt $c:tt $d:tt ) => { println!("four tokens") };
13 }
14 
main()15 fn main() {
16     demo3!(foo#bar);   //~ ERROR prefix `foo` is unknown
17     demo2!(foo"bar");  //~ ERROR prefix `foo` is unknown
18     demo2!(foo'b');    //~ ERROR prefix `foo` is unknown
19 
20     demo2!(foo'b);     //~ ERROR prefix `foo` is unknown
21     demo3!(foo# bar);  //~ ERROR prefix `foo` is unknown
22     demo4!(foo#! bar); //~ ERROR prefix `foo` is unknown
23     demo4!(foo## bar); //~ ERROR prefix `foo` is unknown
24 
25     demo4!(foo#bar#);
26     //~^ ERROR prefix `foo` is unknown
27     //~| ERROR prefix `bar` is unknown
28 
29     demo3!(foo # bar);
30     demo3!(foo #bar);
31     demo4!(foo!#bar);
32     demo4!(foo ##bar);
33 
34     demo3!(r"foo"#bar);
35     demo3!(r#foo#bar);
36 }
37