2 #![feature(exhaustive_patterns, never_type)]
3 #![allow(dead_code, unreachable_code, unused_variables)]
4 #![allow(clippy::let_and_return)]
6 enum SingleVariantEnum {
10 struct TupleStruct(i32);
14 fn infallible_destructuring_match_enum() {
15 let wrapper = SingleVariantEnum::Variant(0);
18 let SingleVariantEnum::Variant(data) = wrapper;
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 TupleStruct(data) = wrapper;
40 let data = match wrapper {
44 // Neither should this!
45 let data = match wrapper {
49 let TupleStruct(data) = wrapper;
53 let wrapper: Result<i32, !> = Ok(23);
56 let Ok(data) = wrapper;
59 let data = match wrapper {
63 // Neither should this!
64 let data = match wrapper {
68 let Ok(data) = wrapper;
72 fn match_on(&self) -> ! {
73 // The lint shouldn't pick this up, as `let` won't work here!
74 let data = match *self {};