]>
Commit | Line | Data |
---|---|---|
f20569fa XL |
1 | #![allow(clippy::all)] |
2 | #![warn(clippy::pattern_type_mismatch)] | |
3 | ||
4 | fn main() {} | |
5 | ||
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 | ||
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 | ||
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 | } |