Add tests
This commit is contained in:
parent
bd3a22115f
commit
caa488b96e
30
tests/ui/never_patterns/check.rs
Normal file
30
tests/ui/never_patterns/check.rs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#![feature(never_patterns)]
|
||||||
|
#![allow(incomplete_features)]
|
||||||
|
|
||||||
|
enum Void {}
|
||||||
|
|
||||||
|
fn main() {}
|
||||||
|
|
||||||
|
macro_rules! never {
|
||||||
|
() => { ! }
|
||||||
|
}
|
||||||
|
|
||||||
|
fn no_arms_or_guards(x: Void) {
|
||||||
|
match None::<Void> {
|
||||||
|
Some(!) => {}
|
||||||
|
None => {}
|
||||||
|
}
|
||||||
|
match None::<Void> {
|
||||||
|
Some(!) if true,
|
||||||
|
//~^ ERROR expected one of
|
||||||
|
None => {}
|
||||||
|
}
|
||||||
|
match None::<Void> {
|
||||||
|
Some(!) if true => {}
|
||||||
|
None => {}
|
||||||
|
}
|
||||||
|
match None::<Void> {
|
||||||
|
Some(never!()) => {},
|
||||||
|
None => {}
|
||||||
|
}
|
||||||
|
}
|
8
tests/ui/never_patterns/check.stderr
Normal file
8
tests/ui/never_patterns/check.stderr
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
error: expected one of `.`, `=>`, `?`, or an operator, found `,`
|
||||||
|
--> $DIR/check.rs:18:24
|
||||||
|
|
|
||||||
|
LL | Some(!) if true,
|
||||||
|
| ^ expected one of `.`, `=>`, `?`, or an operator
|
||||||
|
|
||||||
|
error: aborting due to 1 previous error
|
||||||
|
|
68
tests/ui/parser/match-arm-without-body.rs
Normal file
68
tests/ui/parser/match-arm-without-body.rs
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
macro_rules! pat {
|
||||||
|
() => { Some(_) }
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
match Some(false) {
|
||||||
|
Some(_)
|
||||||
|
}
|
||||||
|
//~^ ERROR expected one of
|
||||||
|
match Some(false) {
|
||||||
|
Some(_)
|
||||||
|
_ => {}
|
||||||
|
//~^ ERROR expected one of
|
||||||
|
}
|
||||||
|
match Some(false) {
|
||||||
|
Some(_),
|
||||||
|
//~^ ERROR unexpected `,` in pattern
|
||||||
|
//~| HELP try adding parentheses to match on a tuple
|
||||||
|
//~| HELP or a vertical bar to match on multiple alternatives
|
||||||
|
}
|
||||||
|
match Some(false) {
|
||||||
|
Some(_),
|
||||||
|
//~^ ERROR unexpected `,` in pattern
|
||||||
|
//~| HELP try adding parentheses to match on a tuple
|
||||||
|
//~| HELP or a vertical bar to match on multiple alternatives
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
match Some(false) {
|
||||||
|
Some(_) if true
|
||||||
|
}
|
||||||
|
//~^ ERROR expected one of
|
||||||
|
match Some(false) {
|
||||||
|
Some(_) if true
|
||||||
|
_ => {}
|
||||||
|
//~^ ERROR expected one of
|
||||||
|
}
|
||||||
|
match Some(false) {
|
||||||
|
Some(_) if true,
|
||||||
|
//~^ ERROR expected one of
|
||||||
|
}
|
||||||
|
match Some(false) {
|
||||||
|
Some(_) if true,
|
||||||
|
//~^ ERROR expected one of
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
match Some(false) {
|
||||||
|
pat!()
|
||||||
|
}
|
||||||
|
//~^ ERROR expected one of
|
||||||
|
match Some(false) {
|
||||||
|
pat!(),
|
||||||
|
//~^ ERROR unexpected `,` in pattern
|
||||||
|
}
|
||||||
|
match Some(false) {
|
||||||
|
pat!() if true,
|
||||||
|
//~^ ERROR expected one of
|
||||||
|
}
|
||||||
|
match Some(false) {
|
||||||
|
pat!()
|
||||||
|
_ => {}
|
||||||
|
//~^ ERROR expected one of
|
||||||
|
}
|
||||||
|
match Some(false) {
|
||||||
|
pat!(),
|
||||||
|
//~^ ERROR unexpected `,` in pattern
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
}
|
122
tests/ui/parser/match-arm-without-body.stderr
Normal file
122
tests/ui/parser/match-arm-without-body.stderr
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
error: expected one of `=>`, `if`, or `|`, found `}`
|
||||||
|
--> $DIR/match-arm-without-body.rs:8:5
|
||||||
|
|
|
||||||
|
LL | Some(_)
|
||||||
|
| - expected one of `=>`, `if`, or `|`
|
||||||
|
LL | }
|
||||||
|
| ^ unexpected token
|
||||||
|
|
||||||
|
error: expected one of `=>`, `if`, or `|`, found reserved identifier `_`
|
||||||
|
--> $DIR/match-arm-without-body.rs:12:9
|
||||||
|
|
|
||||||
|
LL | Some(_)
|
||||||
|
| - expected one of `=>`, `if`, or `|`
|
||||||
|
LL | _ => {}
|
||||||
|
| ^ unexpected token
|
||||||
|
|
||||||
|
error: unexpected `,` in pattern
|
||||||
|
--> $DIR/match-arm-without-body.rs:16:16
|
||||||
|
|
|
||||||
|
LL | Some(_),
|
||||||
|
| ^
|
||||||
|
|
|
||||||
|
help: try adding parentheses to match on a tuple...
|
||||||
|
|
|
||||||
|
LL | (Some(_),)
|
||||||
|
| + +
|
||||||
|
help: ...or a vertical bar to match on multiple alternatives
|
||||||
|
|
|
||||||
|
LL | Some(_) |
|
||||||
|
|
|
||||||
|
|
||||||
|
error: unexpected `,` in pattern
|
||||||
|
--> $DIR/match-arm-without-body.rs:22:16
|
||||||
|
|
|
||||||
|
LL | Some(_),
|
||||||
|
| ^
|
||||||
|
|
|
||||||
|
help: try adding parentheses to match on a tuple...
|
||||||
|
|
|
||||||
|
LL ~ (Some(_),
|
||||||
|
LL |
|
||||||
|
LL |
|
||||||
|
LL |
|
||||||
|
LL ~ _) => {}
|
||||||
|
|
|
||||||
|
help: ...or a vertical bar to match on multiple alternatives
|
||||||
|
|
|
||||||
|
LL ~ Some(_) |
|
||||||
|
LL +
|
||||||
|
LL +
|
||||||
|
LL +
|
||||||
|
LL ~ _ => {}
|
||||||
|
|
|
||||||
|
|
||||||
|
error: expected one of `.`, `=>`, `?`, or an operator, found `}`
|
||||||
|
--> $DIR/match-arm-without-body.rs:30:5
|
||||||
|
|
|
||||||
|
LL | Some(_) if true
|
||||||
|
| - expected one of `.`, `=>`, `?`, or an operator
|
||||||
|
LL | }
|
||||||
|
| ^ unexpected token
|
||||||
|
|
||||||
|
error: expected one of `.`, `=>`, `?`, or an operator, found reserved identifier `_`
|
||||||
|
--> $DIR/match-arm-without-body.rs:34:9
|
||||||
|
|
|
||||||
|
LL | Some(_) if true
|
||||||
|
| - expected one of `.`, `=>`, `?`, or an operator
|
||||||
|
LL | _ => {}
|
||||||
|
| ^ unexpected token
|
||||||
|
|
||||||
|
error: expected one of `.`, `=>`, `?`, or an operator, found `,`
|
||||||
|
--> $DIR/match-arm-without-body.rs:38:24
|
||||||
|
|
|
||||||
|
LL | Some(_) if true,
|
||||||
|
| ^ expected one of `.`, `=>`, `?`, or an operator
|
||||||
|
|
||||||
|
error: expected one of `.`, `=>`, `?`, or an operator, found `,`
|
||||||
|
--> $DIR/match-arm-without-body.rs:42:24
|
||||||
|
|
|
||||||
|
LL | Some(_) if true,
|
||||||
|
| ^ expected one of `.`, `=>`, `?`, or an operator
|
||||||
|
|
||||||
|
error: expected one of `=>`, `if`, or `|`, found `}`
|
||||||
|
--> $DIR/match-arm-without-body.rs:48:5
|
||||||
|
|
|
||||||
|
LL | pat!()
|
||||||
|
| - expected one of `=>`, `if`, or `|`
|
||||||
|
LL | }
|
||||||
|
| ^ unexpected token
|
||||||
|
|
||||||
|
error: unexpected `,` in pattern
|
||||||
|
--> $DIR/match-arm-without-body.rs:51:15
|
||||||
|
|
|
||||||
|
LL | pat!(),
|
||||||
|
| ^
|
||||||
|
|
|
||||||
|
= note: macros cannot expand to match arms
|
||||||
|
|
||||||
|
error: expected one of `.`, `=>`, `?`, or an operator, found `,`
|
||||||
|
--> $DIR/match-arm-without-body.rs:55:23
|
||||||
|
|
|
||||||
|
LL | pat!() if true,
|
||||||
|
| ^ expected one of `.`, `=>`, `?`, or an operator
|
||||||
|
|
||||||
|
error: expected one of `=>`, `if`, or `|`, found reserved identifier `_`
|
||||||
|
--> $DIR/match-arm-without-body.rs:60:9
|
||||||
|
|
|
||||||
|
LL | pat!()
|
||||||
|
| - expected one of `=>`, `if`, or `|`
|
||||||
|
LL | _ => {}
|
||||||
|
| ^ unexpected token
|
||||||
|
|
||||||
|
error: unexpected `,` in pattern
|
||||||
|
--> $DIR/match-arm-without-body.rs:64:15
|
||||||
|
|
|
||||||
|
LL | pat!(),
|
||||||
|
| ^
|
||||||
|
|
|
||||||
|
= note: macros cannot expand to match arms
|
||||||
|
|
||||||
|
error: aborting due to 13 previous errors
|
||||||
|
|
@ -84,7 +84,7 @@ fn never_and_bindings() {
|
|||||||
//~^ ERROR: is not bound in all patterns
|
//~^ ERROR: is not bound in all patterns
|
||||||
}
|
}
|
||||||
let (Ok(_x) | Err(&!)) = x;
|
let (Ok(_x) | Err(&!)) = x;
|
||||||
//~^ ERROR: is not bound in all patterns
|
//~^ ERROR: is not bound in all patterns
|
||||||
|
|
||||||
// FIXME(never_patterns): A never pattern mustn't have bindings.
|
// FIXME(never_patterns): A never pattern mustn't have bindings.
|
||||||
match x {
|
match x {
|
||||||
|
Loading…
Reference in New Issue
Block a user