1// run-rustfix 2 3#![warn(clippy::match_wildcard_for_single_variants)] 4#![allow(dead_code)] 5 6enum Foo { 7 A, 8 B, 9 C, 10} 11 12enum Color { 13 Red, 14 Green, 15 Blue, 16 Rgb(u8, u8, u8), 17} 18impl Color { 19 fn f(self) { 20 match self { 21 Self::Red => (), 22 Self::Green => (), 23 Self::Blue => (), 24 Self::Rgb(..) => (), 25 }; 26 } 27} 28 29fn main() { 30 let f = Foo::A; 31 match f { 32 Foo::A => {}, 33 Foo::B => {}, 34 Foo::C => {}, 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 Color::Blue => {}, 45 } 46 47 // check exhaustive wild 48 match color { 49 Color::Red => {}, 50 Color::Green => {}, 51 Color::Rgb(..) => {}, 52 Color::Blue => {}, 53 } 54 match color { 55 Color::Red => {}, 56 Color::Green => {}, 57 Color::Rgb(_, _, _) => {}, 58 Color::Blue => {}, 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 Color::Blue => (), 76 } 77 78 use self::Color as C; 79 80 match color { 81 C::Red => (), 82 C::Green => (), 83 C::Rgb(..) => (), 84 C::Blue => (), 85 } 86 87 match color { 88 C::Red => (), 89 Color::Green => (), 90 Color::Rgb(..) => (), 91 Color::Blue => (), 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