// edition:2021 #![feature(never_type)] // Should fake read the discriminant and throw an error fn test1() { let x: !; let c1 = || match x { }; //~^ ERROR E0381 } // Should fake read the discriminant and throw an error fn test2() { let x: !; let c2 = || match x { _ => () }; //~^ ERROR E0381 } // 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 match variant { SingleVariant::Points(_) => {} } }; c(); } // Should fake read the discriminant and throw an error fn test4() { let variant: !; let c = || { //~ ERROR E0381 match variant { SingleVariant::Points(a) => { println!("{:?}", a); } } }; c(); } fn test5() { let t: !; let g: !; let a = || { match g { }; //~ ERROR E0381 let c = || { match t { }; //~ ERROR E0381 }; c(); }; } // Should fake read the discriminant and throw an error fn test6() { let x: u8; let c1 = || match x { }; //~^ ERROR E0381 //~| ERROR: non-exhaustive patterns: type `u8` is non-empty } fn main() { test1(); test2(); test3(); test4(); test5(); test6(); }