Skip to content

Commit c0c1f1f

Browse files
author
Giorgio Gambino
committed
Fix #3335 rev2: bool_comparison triggers 3 times on same code
1 parent 62f1680 commit c0c1f1f

File tree

1 file changed

+51
-50
lines changed

1 file changed

+51
-50
lines changed

clippy_lints/src/needless_bool.rs

Lines changed: 51 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -133,56 +133,57 @@ impl LintPass for BoolComparison {
133133

134134
impl<'a, 'tcx> LateLintPass<'a, 'tcx> for BoolComparison {
135135
fn check_expr(&mut self, cx: &LateContext<'a, 'tcx>, e: &'tcx Expr) {
136-
if !in_macro(e.span) {
137-
use self::Expression::*;
138-
if let ExprKind::Binary(Spanned { node: BinOpKind::Eq, .. }, ref left_side, ref right_side) = e.node {
139-
match (fetch_bool_expr(left_side), fetch_bool_expr(right_side)) {
140-
(Bool(true), Other) => {
141-
let hint = snippet(cx, right_side.span, "..").into_owned();
142-
span_lint_and_sugg(
143-
cx,
144-
BOOL_COMPARISON,
145-
e.span,
146-
"equality checks against true are unnecessary",
147-
"try simplifying it as shown",
148-
hint,
149-
);
150-
},
151-
(Other, Bool(true)) => {
152-
let hint = snippet(cx, left_side.span, "..").into_owned();
153-
span_lint_and_sugg(
154-
cx,
155-
BOOL_COMPARISON,
156-
e.span,
157-
"equality checks against true are unnecessary",
158-
"try simplifying it as shown",
159-
hint,
160-
);
161-
},
162-
(Bool(false), Other) => {
163-
let hint = Sugg::hir(cx, right_side, "..");
164-
span_lint_and_sugg(
165-
cx,
166-
BOOL_COMPARISON,
167-
e.span,
168-
"equality checks against false can be replaced by a negation",
169-
"try simplifying it as shown",
170-
(!hint).to_string(),
171-
);
172-
},
173-
(Other, Bool(false)) => {
174-
let hint = Sugg::hir(cx, left_side, "..");
175-
span_lint_and_sugg(
176-
cx,
177-
BOOL_COMPARISON,
178-
e.span,
179-
"equality checks against false can be replaced by a negation",
180-
"try simplifying it as shown",
181-
(!hint).to_string(),
182-
);
183-
},
184-
_ => (),
185-
}
136+
if in_macro(e.span) {
137+
return;
138+
}
139+
use self::Expression::*;
140+
if let ExprKind::Binary(Spanned { node: BinOpKind::Eq, .. }, ref left_side, ref right_side) = e.node {
141+
match (fetch_bool_expr(left_side), fetch_bool_expr(right_side)) {
142+
(Bool(true), Other) => {
143+
let hint = snippet(cx, right_side.span, "..").into_owned();
144+
span_lint_and_sugg(
145+
cx,
146+
BOOL_COMPARISON,
147+
e.span,
148+
"equality checks against true are unnecessary",
149+
"try simplifying it as shown",
150+
hint,
151+
);
152+
},
153+
(Other, Bool(true)) => {
154+
let hint = snippet(cx, left_side.span, "..").into_owned();
155+
span_lint_and_sugg(
156+
cx,
157+
BOOL_COMPARISON,
158+
e.span,
159+
"equality checks against true are unnecessary",
160+
"try simplifying it as shown",
161+
hint,
162+
);
163+
},
164+
(Bool(false), Other) => {
165+
let hint = Sugg::hir(cx, right_side, "..");
166+
span_lint_and_sugg(
167+
cx,
168+
BOOL_COMPARISON,
169+
e.span,
170+
"equality checks against false can be replaced by a negation",
171+
"try simplifying it as shown",
172+
(!hint).to_string(),
173+
);
174+
},
175+
(Other, Bool(false)) => {
176+
let hint = Sugg::hir(cx, left_side, "..");
177+
span_lint_and_sugg(
178+
cx,
179+
BOOL_COMPARISON,
180+
e.span,
181+
"equality checks against false can be replaced by a negation",
182+
"try simplifying it as shown",
183+
(!hint).to_string(),
184+
);
185+
},
186+
_ => (),
186187
}
187188
}
188189
}

0 commit comments

Comments
 (0)