58 lines
996 B
Rust
58 lines
996 B
Rust
#![warn(clippy::short_circuit_statement)]
|
|
#![allow(clippy::nonminimal_bool)]
|
|
|
|
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
|
|
}
|
|
}
|