| #![warn(clippy::short_circuit_statement)] | |
| fn main() { | |
| if f() { g(); } | |
| //~^ short_circuit_statement | |
| if !f() { g(); } | |
| //~^ short_circuit_statement | |
| if 1 != 2 { g(); } | |
| //~^ short_circuit_statement | |
| if f() || g() { H * 2; } | |
| //~^ short_circuit_statement | |
| if !(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() | |
| }; | |
| } | |
| if mac!() { mac!(); } | |
| //~^ short_circuit_statement | |
| if !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 | |
| } | |
| } |