2024-02-08 00:09:31 +01:00
|
|
|
// Check that never patterns can't have bodies or guards.
|
2023-11-27 01:08:39 +01:00
|
|
|
#![feature(never_patterns)]
|
|
|
|
#![allow(incomplete_features)]
|
|
|
|
|
|
|
|
enum Void {}
|
|
|
|
|
|
|
|
fn main() {}
|
|
|
|
|
|
|
|
macro_rules! never {
|
|
|
|
() => { ! }
|
|
|
|
}
|
|
|
|
|
|
|
|
fn no_arms_or_guards(x: Void) {
|
|
|
|
match None::<Void> {
|
|
|
|
Some(!) => {}
|
2023-11-27 04:08:09 +01:00
|
|
|
//~^ ERROR a never pattern is always unreachable
|
2023-11-27 01:08:39 +01:00
|
|
|
None => {}
|
|
|
|
}
|
2024-02-28 22:37:11 +01:00
|
|
|
match None::<Void> { //~ ERROR: `Some(!)` not covered
|
2023-11-27 01:08:39 +01:00
|
|
|
Some(!) if true,
|
2023-11-27 03:47:49 +01:00
|
|
|
//~^ ERROR guard on a never pattern
|
2023-11-27 01:08:39 +01:00
|
|
|
None => {}
|
|
|
|
}
|
2024-02-28 22:37:11 +01:00
|
|
|
match None::<Void> { //~ ERROR: `Some(!)` not covered
|
2023-11-27 01:08:39 +01:00
|
|
|
Some(!) if true => {}
|
2023-11-27 04:08:09 +01:00
|
|
|
//~^ ERROR a never pattern is always unreachable
|
2023-11-27 01:08:39 +01:00
|
|
|
None => {}
|
|
|
|
}
|
|
|
|
match None::<Void> {
|
2024-02-01 22:45:00 +00:00
|
|
|
Some(never!()) => {}
|
2023-11-27 04:08:09 +01:00
|
|
|
//~^ ERROR a never pattern is always unreachable
|
2023-11-27 01:08:39 +01:00
|
|
|
None => {}
|
|
|
|
}
|
|
|
|
}
|