rust/tests/ui/closures/2229_closure_analysis/match/pattern-matching-should-fail.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

80 lines
1.3 KiB
Rust
Raw Normal View History

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 { };
//~^ 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 { _ => () };
//~^ 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 = || {
//~^ 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: !;
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 = || {
match g { }; //~ ERROR E0381
2021-02-25 17:03:41 -06:00
let c = || {
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 { };
//~^ 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();
}