| #![warn(clippy::short_circuit_statement)] | |
| #![allow(clippy::nonminimal_bool)] | |
| fn main() { | |
| f() && g(); | |
| //~^ short_circuit_statement | |
| f() || g(); | |
| //~^ short_circuit_statement | |
| 1 == 2 || g(); | |
| //~^ short_circuit_statement | |
| (f() || g()) && (H * 2); | |
| //~^ short_circuit_statement | |
| (f() || g()) || (H * 2); | |
| //~^ short_circuit_statement | |
| macro_rules! mac { | |
| ($f:ident or $g:ident) => { | |
| $f() || $g() | |
| }; | |
| ($f:ident and $g:ident) => { | |
| $f() && $g() | |
| }; | |
| () => { | |
| f() && g() | |
| }; | |
| } | |
| mac!() && mac!(); | |
| //~^ short_circuit_statement | |
| mac!() || mac!(); | |
| //~^ short_circuit_statement | |
| // Do not lint if the expression comes from a macro | |
| mac!(); | |
| } | |
| fn f() -> bool { | |
| true | |
| } | |
| fn g() -> bool { | |
| false | |
| } | |
| struct H; | |
| impl std::ops::Mul<u32> for H { | |
| type Output = bool; | |
| fn mul(self, other: u32) -> Self::Output { | |
| true | |
| } | |
| } |