blob: 32d466e88fc8b68a193372d96dfef341603f9849 [file] [log] [blame] [edit]
#![warn(clippy::neg_multiply)]
#![allow(clippy::no_effect, clippy::unnecessary_operation, clippy::precedence)]
#![allow(unused)]
use std::ops::Mul;
struct X;
impl Mul<isize> for X {
type Output = X;
fn mul(self, _r: isize) -> Self {
self
}
}
impl Mul<X> for isize {
type Output = X;
fn mul(self, _r: X) -> X {
X
}
}
fn main() {
let x = 0;
-x;
//~^ neg_multiply
-x;
//~^ neg_multiply
100 + -x;
//~^ neg_multiply
-(100 + x);
//~^ neg_multiply
-17;
//~^ neg_multiply
0xcafe | -0xff00;
//~^ neg_multiply
-(3_usize as i32);
//~^ neg_multiply
-(3_usize as i32);
//~^ neg_multiply
-1 * -1; // should be ok
X * -1; // should be ok
-1 * X; // should also be ok
}
fn float() {
let x = 0.0;
-x;
//~^ neg_multiply
-x;
//~^ neg_multiply
100.0 + -x;
//~^ neg_multiply
-(100.0 + x);
//~^ neg_multiply
-17.0;
//~^ neg_multiply
0.0 + -0.0;
//~^ neg_multiply
-(3.0_f32 as f64);
//~^ neg_multiply
-(3.0_f32 as f64);
//~^ neg_multiply
-1.0 * -1.0; // should be ok
}
struct Y {
delta: f64,
}
fn nested() {
let a = Y { delta: 1.0 };
let b = Y { delta: 1.0 };
let _ = (-(a.delta - 0.5).abs()).total_cmp(&1.0);
//~^ neg_multiply
let _ = (-(a.delta - 0.5).abs()).total_cmp(&1.0);
}