1 #![feature(exhaustive_patterns, never_type)]
2 #![allow(let_and_return)]
4 enum SingleVariantEnum {
8 struct TupleStruct(i32);
12 fn infallible_destructuring_match_enum() {
13 let wrapper = SingleVariantEnum::Variant(0);
16 let data = match wrapper {
17 SingleVariantEnum::Variant(i) => i,
21 let data = match wrapper {
22 SingleVariantEnum::Variant(_) => -1,
25 // Neither should this!
26 let data = match wrapper {
27 SingleVariantEnum::Variant(i) => -1,
30 let SingleVariantEnum::Variant(data) = wrapper;
33 fn infallible_destructuring_match_struct() {
34 let wrapper = TupleStruct(0);
37 let data = match wrapper {
42 let data = match wrapper {
46 // Neither should this!
47 let data = match wrapper {
51 let TupleStruct(data) = wrapper;
55 let wrapper: Result<i32, !> = Ok(23);
58 let data = match wrapper {
63 let data = match wrapper {
67 // Neither should this!
68 let data = match wrapper {
72 let Ok(data) = wrapper;
76 fn match_on(&self) -> ! {
77 // The lint shouldn't pick this up, as `let` won't work here!
78 let data = match *self {};