1 #![allow(clippy::all)]
2 #![warn(clippy::pattern_type_mismatch)]
3
main()4 fn main() {}
5
tuple_types()6 fn tuple_types() {
7 struct TupleStruct<'a>(&'a Option<i32>);
8 let ref_value = &TupleStruct(&Some(42));
9
10 // not ok
11 let TupleStruct(_) = ref_value;
12 if let &TupleStruct(Some(_)) = ref_value {}
13 if let TupleStruct(Some(_)) = *ref_value {}
14
15 // ok
16 let &TupleStruct(_) = ref_value;
17 let TupleStruct(_) = *ref_value;
18 if let &TupleStruct(&Some(_)) = ref_value {}
19 if let TupleStruct(&Some(_)) = *ref_value {}
20 }
21
tuple_enum_variants()22 fn tuple_enum_variants() {
23 enum TupleEnum<'a> {
24 Empty,
25 Var(&'a Option<i32>),
26 }
27 let ref_value = &TupleEnum::Var(&Some(42));
28
29 // not ok
30 if let TupleEnum::Var(_) = ref_value {}
31 if let &TupleEnum::Var(Some(_)) = ref_value {}
32 if let TupleEnum::Var(Some(_)) = *ref_value {}
33 if let TupleEnum::Empty = ref_value {}
34
35 // ok
36 if let &TupleEnum::Var(_) = ref_value {}
37 if let TupleEnum::Var(_) = *ref_value {}
38 if let &TupleEnum::Var(&Some(_)) = ref_value {}
39 if let TupleEnum::Var(&Some(_)) = *ref_value {}
40 if let &TupleEnum::Empty = ref_value {}
41 if let TupleEnum::Empty = *ref_value {}
42 }
43
plain_tuples()44 fn plain_tuples() {
45 let ref_value = &(&Some(23), &Some(42));
46
47 // not ok
48 let (_a, _b) = ref_value;
49 if let &(_a, Some(_)) = ref_value {}
50 if let (_a, Some(_)) = *ref_value {}
51
52 // ok
53 let &(_a, _b) = ref_value;
54 let (_a, _b) = *ref_value;
55 if let &(_a, &Some(_)) = ref_value {}
56 if let (_a, &Some(_)) = *ref_value {}
57 }
58