2021-06-27 01:22:46 -05:00
|
|
|
// edition:2021
|
|
|
|
|
2021-02-25 17:03:41 -06:00
|
|
|
#![feature(never_type)]
|
|
|
|
|
|
|
|
// Should fake read the discriminant and throw an error
|
|
|
|
fn test1() {
|
|
|
|
let x: !;
|
|
|
|
let c1 = || match x { };
|
2022-06-21 13:57:45 -05:00
|
|
|
//~^ ERROR E0381
|
2021-02-25 17:03:41 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
// Should fake read the discriminant and throw an error
|
|
|
|
fn test2() {
|
|
|
|
let x: !;
|
|
|
|
let c2 = || match x { _ => () };
|
2022-06-21 13:57:45 -05:00
|
|
|
//~^ ERROR E0381
|
2021-02-25 17:03:41 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
// Testing single variant patterns
|
|
|
|
enum SingleVariant {
|
|
|
|
Points(u32)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Should fake read the discriminant and throw an error
|
|
|
|
fn test3() {
|
|
|
|
let variant: !;
|
|
|
|
let c = || {
|
2022-06-21 13:57:45 -05:00
|
|
|
//~^ ERROR E0381
|
2021-02-25 17:03:41 -06:00
|
|
|
match variant {
|
|
|
|
SingleVariant::Points(_) => {}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
c();
|
|
|
|
}
|
|
|
|
|
|
|
|
// Should fake read the discriminant and throw an error
|
|
|
|
fn test4() {
|
|
|
|
let variant: !;
|
2022-06-21 13:57:45 -05:00
|
|
|
let c = || { //~ ERROR E0381
|
2021-02-25 17:03:41 -06:00
|
|
|
match variant {
|
|
|
|
SingleVariant::Points(a) => {
|
|
|
|
println!("{:?}", a);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
c();
|
|
|
|
}
|
|
|
|
|
|
|
|
fn test5() {
|
|
|
|
let t: !;
|
|
|
|
let g: !;
|
|
|
|
|
|
|
|
let a = || {
|
2022-06-21 13:57:45 -05:00
|
|
|
match g { }; //~ ERROR E0381
|
2021-02-25 17:03:41 -06:00
|
|
|
let c = || {
|
2022-06-21 13:57:45 -05:00
|
|
|
match t { }; //~ ERROR E0381
|
2021-02-25 17:03:41 -06:00
|
|
|
};
|
|
|
|
|
|
|
|
c();
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// Should fake read the discriminant and throw an error
|
|
|
|
fn test6() {
|
|
|
|
let x: u8;
|
|
|
|
let c1 = || match x { };
|
2022-06-21 13:57:45 -05:00
|
|
|
//~^ ERROR E0381
|
2021-02-25 17:03:41 -06:00
|
|
|
//~| ERROR: non-exhaustive patterns: type `u8` is non-empty
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
test1();
|
|
|
|
test2();
|
|
|
|
test3();
|
|
|
|
test4();
|
|
|
|
test5();
|
|
|
|
test6();
|
|
|
|
}
|