]> git.proxmox.com Git - rustc.git/blame - src/tools/clippy/tests/ui/pattern_type_mismatch/pattern_tuples.rs
Update upstream source from tag 'upstream/1.52.1+dfsg1'
[rustc.git] / src / tools / clippy / tests / ui / pattern_type_mismatch / pattern_tuples.rs
CommitLineData
f20569fa
XL
1#![allow(clippy::all)]
2#![warn(clippy::pattern_type_mismatch)]
3
4fn main() {}
5
6fn 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
22fn 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
44fn 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}