1 // run-rustfix
2
3 #![warn(clippy::match_wildcard_for_single_variants)]
4 #![allow(dead_code)]
5
6 enum Foo {
7 A,
8 B,
9 C,
10 }
11
12 enum Color {
13 Red,
14 Green,
15 Blue,
16 Rgb(u8, u8, u8),
17 }
18 impl Color {
f(self)19 fn f(self) {
20 match self {
21 Self::Red => (),
22 Self::Green => (),
23 Self::Blue => (),
24 _ => (),
25 };
26 }
27 }
28
main()29 fn main() {
30 let f = Foo::A;
31 match f {
32 Foo::A => {},
33 Foo::B => {},
34 _ => {},
35 }
36
37 let color = Color::Red;
38
39 // check exhaustive bindings
40 match color {
41 Color::Red => {},
42 Color::Green => {},
43 Color::Rgb(_r, _g, _b) => {},
44 _ => {},
45 }
46
47 // check exhaustive wild
48 match color {
49 Color::Red => {},
50 Color::Green => {},
51 Color::Rgb(..) => {},
52 _ => {},
53 }
54 match color {
55 Color::Red => {},
56 Color::Green => {},
57 Color::Rgb(_, _, _) => {},
58 _ => {},
59 }
60
61 // shouldn't lint as there is one missing variant
62 // and one that isn't exhaustively covered
63 match color {
64 Color::Red => {},
65 Color::Green => {},
66 Color::Rgb(255, _, _) => {},
67 _ => {},
68 }
69
70 // References shouldn't change anything
71 match &color {
72 &Color::Red => (),
73 Color::Green => (),
74 &Color::Rgb(..) => (),
75 &_ => (),
76 }
77
78 use self::Color as C;
79
80 match color {
81 C::Red => (),
82 C::Green => (),
83 C::Rgb(..) => (),
84 _ => (),
85 }
86
87 match color {
88 C::Red => (),
89 Color::Green => (),
90 Color::Rgb(..) => (),
91 _ => (),
92 }
93
94 match Some(0) {
95 Some(0) => 0,
96 Some(_) => 1,
97 _ => 2,
98 };
99
100 #[non_exhaustive]
101 enum Bar {
102 A,
103 B,
104 C,
105 }
106 match Bar::A {
107 Bar::A => (),
108 Bar::B => (),
109 _ => (),
110 };
111
112 //#6984
113 {
114 #![allow(clippy::manual_non_exhaustive)]
115 pub enum Enum {
116 A,
117 B,
118 C,
119 #[doc(hidden)]
120 __Private,
121 }
122 match Enum::A {
123 Enum::A => (),
124 Enum::B => (),
125 Enum::C => (),
126 _ => (),
127 }
128 match Enum::A {
129 Enum::A => (),
130 Enum::B => (),
131 _ => (),
132 }
133 }
134 }
135