]> git.lizzy.rs Git - rust.git/blob - tests/ui/needless_bool.rs
Auto merge of #4314 - chansuke:add-negation-to-is_empty, r=flip1995
[rust.git] / tests / ui / needless_bool.rs
1 #![warn(clippy::needless_bool)]
2
3 use std::cell::Cell;
4
5 macro_rules! bool_comparison_trigger {
6     ($($i:ident: $def:expr, $stb:expr );+  $(;)*) => (
7
8         #[derive(Clone)]
9         pub struct Trigger {
10             $($i: (Cell<bool>, bool, bool)),+
11         }
12
13         #[allow(dead_code)]
14         impl Trigger {
15             pub fn trigger(&self, key: &str) -> bool {
16                 $(
17                     if let stringify!($i) = key {
18                         return self.$i.1 && self.$i.2 == $def;
19                     }
20                  )+
21                 false
22             }
23         }
24     )
25 }
26
27 #[allow(clippy::if_same_then_else)]
28 fn main() {
29     let x = true;
30     let y = false;
31     if x {
32         true
33     } else {
34         true
35     };
36     if x {
37         false
38     } else {
39         false
40     };
41     if x {
42         true
43     } else {
44         false
45     };
46     if x {
47         false
48     } else {
49         true
50     };
51     if x && y {
52         false
53     } else {
54         true
55     };
56     if x {
57         x
58     } else {
59         false
60     }; // would also be questionable, but we don't catch this yet
61     bool_ret(x);
62     bool_ret2(x);
63     bool_ret3(x);
64     bool_ret5(x, x);
65     bool_ret4(x);
66     bool_ret6(x, x);
67     needless_bool(x);
68     needless_bool2(x);
69     needless_bool3(x);
70 }
71
72 #[allow(clippy::if_same_then_else, clippy::needless_return)]
73 fn bool_ret(x: bool) -> bool {
74     if x {
75         return true;
76     } else {
77         return true;
78     };
79 }
80
81 #[allow(clippy::if_same_then_else, clippy::needless_return)]
82 fn bool_ret2(x: bool) -> bool {
83     if x {
84         return false;
85     } else {
86         return false;
87     };
88 }
89
90 #[allow(clippy::needless_return)]
91 fn bool_ret3(x: bool) -> bool {
92     if x {
93         return true;
94     } else {
95         return false;
96     };
97 }
98
99 #[allow(clippy::needless_return)]
100 fn bool_ret5(x: bool, y: bool) -> bool {
101     if x && y {
102         return true;
103     } else {
104         return false;
105     };
106 }
107
108 #[allow(clippy::needless_return)]
109 fn bool_ret4(x: bool) -> bool {
110     if x {
111         return false;
112     } else {
113         return true;
114     };
115 }
116
117 #[allow(clippy::needless_return)]
118 fn bool_ret6(x: bool, y: bool) -> bool {
119     if x && y {
120         return false;
121     } else {
122         return true;
123     };
124 }
125
126 fn needless_bool(x: bool) {
127     if x == true {};
128 }
129
130 fn needless_bool2(x: bool) {
131     if x == false {};
132 }
133
134 fn needless_bool3(x: bool) {
135     bool_comparison_trigger! {
136         test_one:   false, false;
137         test_three: false, false;
138         test_two:   true, true;
139     }
140
141     if x == true {};
142     if x == false {};
143 }
144
145 fn needless_bool_in_the_suggestion_wraps_the_predicate_of_if_else_statement_in_brackets() {
146     let b = false;
147     let returns_bool = || false;
148
149     let x = if b {
150         true
151     } else if returns_bool() {
152         false
153     } else {
154         true
155     };
156 }