]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/wildcard_enum_match_arm.fixed
Auto merge of #84620 - Dylan-DPC:rollup-wkv97im, r=Dylan-DPC
[rust.git] / src / tools / clippy / tests / ui / wildcard_enum_match_arm.fixed
1 // run-rustfix
2
3 #![deny(clippy::wildcard_enum_match_arm)]
4 #![allow(
5     unreachable_code,
6     unused_variables,
7     dead_code,
8     clippy::single_match,
9     clippy::wildcard_in_or_patterns,
10     clippy::unnested_or_patterns,
11     clippy::diverging_sub_expression
12 )]
13
14 use std::io::ErrorKind;
15
16 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
17 enum Color {
18     Red,
19     Green,
20     Blue,
21     Rgb(u8, u8, u8),
22     Cyan,
23 }
24
25 impl Color {
26     fn is_monochrome(self) -> bool {
27         match self {
28             Color::Red | Color::Green | Color::Blue => true,
29             Color::Rgb(r, g, b) => r | g == 0 || r | b == 0 || g | b == 0,
30             Color::Cyan => false,
31         }
32     }
33 }
34
35 fn main() {
36     let color = Color::Rgb(0, 0, 127);
37     match color {
38         Color::Red => println!("Red"),
39         Color::Green | Color::Blue | Color::Rgb(..) | Color::Cyan => eprintln!("Not red"),
40     };
41     match color {
42         Color::Red => println!("Red"),
43         _not_red @ Color::Green | _not_red @ Color::Blue | _not_red @ Color::Rgb(..) | _not_red @ Color::Cyan => eprintln!("Not red"),
44     };
45     let _str = match color {
46         Color::Red => "Red".to_owned(),
47         not_red @ Color::Green | not_red @ Color::Blue | not_red @ Color::Rgb(..) | not_red @ Color::Cyan => format!("{:?}", not_red),
48     };
49     match color {
50         Color::Red => {},
51         Color::Green => {},
52         Color::Blue => {},
53         Color::Cyan => {},
54         c if c.is_monochrome() => {},
55         Color::Rgb(_, _, _) => {},
56     };
57     let _str = match color {
58         Color::Red => "Red",
59         c @ Color::Green | c @ Color::Blue | c @ Color::Rgb(_, _, _) | c @ Color::Cyan => "Not red",
60     };
61     match color {
62         Color::Rgb(r, _, _) if r > 0 => "Some red",
63         Color::Red | Color::Green | Color::Blue | Color::Rgb(..) | Color::Cyan => "No red",
64     };
65     match color {
66         Color::Red | Color::Green | Color::Blue | Color::Cyan => {},
67         Color::Rgb(..) => {},
68     };
69     let x: u8 = unimplemented!();
70     match x {
71         0 => {},
72         140 => {},
73         _ => {},
74     };
75     // We need to use an enum not defined in this test because non_exhaustive is ignored for the
76     // purposes of dead code analysis within a crate.
77     let error_kind = ErrorKind::NotFound;
78     match error_kind {
79         ErrorKind::NotFound => {},
80         ErrorKind::PermissionDenied | ErrorKind::ConnectionRefused | ErrorKind::ConnectionReset | ErrorKind::ConnectionAborted | ErrorKind::NotConnected | ErrorKind::AddrInUse | ErrorKind::AddrNotAvailable | ErrorKind::BrokenPipe | ErrorKind::AlreadyExists | ErrorKind::WouldBlock | ErrorKind::InvalidInput | ErrorKind::InvalidData | ErrorKind::TimedOut | ErrorKind::WriteZero | ErrorKind::Interrupted | ErrorKind::Other | ErrorKind::UnexpectedEof | ErrorKind::Unsupported | _ => {},
81     }
82     match error_kind {
83         ErrorKind::NotFound => {},
84         ErrorKind::PermissionDenied => {},
85         ErrorKind::ConnectionRefused => {},
86         ErrorKind::ConnectionReset => {},
87         ErrorKind::ConnectionAborted => {},
88         ErrorKind::NotConnected => {},
89         ErrorKind::AddrInUse => {},
90         ErrorKind::AddrNotAvailable => {},
91         ErrorKind::BrokenPipe => {},
92         ErrorKind::AlreadyExists => {},
93         ErrorKind::WouldBlock => {},
94         ErrorKind::InvalidInput => {},
95         ErrorKind::InvalidData => {},
96         ErrorKind::TimedOut => {},
97         ErrorKind::WriteZero => {},
98         ErrorKind::Interrupted => {},
99         ErrorKind::Other => {},
100         ErrorKind::UnexpectedEof => {},
101         ErrorKind::Unsupported => {},
102         _ => {},
103     }
104 }