Skip to content

Commit 1ee4f6f

Browse files
committed
Add a new test.
It covers some patterns that are relevant for upcoming changes to `parse_literal_maybe_minus`.
1 parent 6de928d commit 1ee4f6f

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
// Tests some cases relating to `parse_literal_maybe_minus`, which used to
2+
// accept more interpolated expressions than it should have.
3+
4+
const A: u32 = 0;
5+
const B: u32 = 1;
6+
7+
macro_rules! identity {
8+
($val:expr) => { $val }
9+
}
10+
11+
macro_rules! range1 {
12+
($min:expr) => {
13+
$min..
14+
}
15+
}
16+
17+
macro_rules! range2 {
18+
($min:expr, $max:expr) => {
19+
$min ..= $max
20+
}
21+
}
22+
23+
macro_rules! range3 {
24+
($max:expr) => {
25+
.. $max
26+
}
27+
}
28+
29+
macro_rules! m {
30+
($a:expr, $b:ident, $identity_mac_call:expr) => {
31+
fn _f() {
32+
match [1, 2] {
33+
[$a, $b] => {} // FIXME: doesn't compile, probably should
34+
_ => {}
35+
}
36+
37+
match (1, 2) {
38+
($a, $b) => {} // FIXME: doesn't compile, probably should
39+
_ => {}
40+
}
41+
42+
match 3 {
43+
$identity_mac_call => {}
44+
0..$identity_mac_call => {}
45+
_ => {}
46+
}
47+
}
48+
};
49+
}
50+
51+
m!(A, B, identity!(10));
52+
//~^ ERROR arbitrary expressions aren't allowed in patterns
53+
//~| ERROR arbitrary expressions aren't allowed in patterns
54+
55+
fn main() {
56+
match 3 {
57+
identity!(A) => {} // FIXME: doesn't compile, probably should
58+
//~^ ERROR arbitrary expressions aren't allowed in patterns
59+
range1!(A) => {}
60+
range2!(A, B) => {}
61+
range3!(B) => {}
62+
_ => {}
63+
}
64+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
error: arbitrary expressions aren't allowed in patterns
2+
--> $DIR/parse-literal-maybe-minus.rs:57:19
3+
|
4+
LL | identity!(A) => {} // FIXME: doesn't compile, probably should
5+
| ^
6+
|
7+
= note: the `expr` fragment specifier forces the metavariable's content to be an expression
8+
9+
error: arbitrary expressions aren't allowed in patterns
10+
--> $DIR/parse-literal-maybe-minus.rs:51:4
11+
|
12+
LL | m!(A, B, identity!(10));
13+
| ^
14+
|
15+
= note: the `expr` fragment specifier forces the metavariable's content to be an expression
16+
17+
error: arbitrary expressions aren't allowed in patterns
18+
--> $DIR/parse-literal-maybe-minus.rs:51:4
19+
|
20+
LL | m!(A, B, identity!(10));
21+
| ^
22+
|
23+
= note: the `expr` fragment specifier forces the metavariable's content to be an expression
24+
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
25+
26+
error: aborting due to 3 previous errors
27+

0 commit comments

Comments
 (0)