Fix missing parenthesis in suboptimal floating point help
This commit is contained in:
parent
2f0f4ddcf7
commit
1ed1001440
@ -323,9 +323,9 @@ fn check_powi(cx: &LateContext<'_>, expr: &Expr<'_>, receiver: &Expr<'_>, args:
|
||||
let maybe_neg_sugg = |expr, hir_id| {
|
||||
let sugg = Sugg::hir(cx, expr, "..");
|
||||
if matches!(op, BinOpKind::Sub) && hir_id == rhs.hir_id {
|
||||
format!("-{}", sugg.maybe_par())
|
||||
-sugg
|
||||
} else {
|
||||
sugg.to_string()
|
||||
sugg
|
||||
}
|
||||
};
|
||||
|
||||
@ -470,25 +470,13 @@ fn check_mul_add(cx: &LateContext<'_>, expr: &Expr<'_>) {
|
||||
|
||||
let maybe_neg_sugg = |expr| {
|
||||
let sugg = Sugg::hir(cx, expr, "..");
|
||||
if let BinOpKind::Sub = op {
|
||||
format!("-{sugg}")
|
||||
} else {
|
||||
sugg.to_string()
|
||||
}
|
||||
if let BinOpKind::Sub = op { -sugg } else { sugg }
|
||||
};
|
||||
|
||||
let (recv, arg1, arg2) = if let Some((inner_lhs, inner_rhs)) = is_float_mul_expr(cx, lhs) {
|
||||
(
|
||||
inner_lhs,
|
||||
Sugg::hir(cx, inner_rhs, "..").to_string(),
|
||||
maybe_neg_sugg(rhs),
|
||||
)
|
||||
(inner_lhs, Sugg::hir(cx, inner_rhs, ".."), maybe_neg_sugg(rhs))
|
||||
} else if let Some((inner_lhs, inner_rhs)) = is_float_mul_expr(cx, rhs) {
|
||||
(
|
||||
inner_lhs,
|
||||
maybe_neg_sugg(inner_rhs),
|
||||
Sugg::hir(cx, lhs, "..").to_string(),
|
||||
)
|
||||
(inner_lhs, maybe_neg_sugg(inner_rhs), Sugg::hir(cx, lhs, ".."))
|
||||
} else {
|
||||
return;
|
||||
};
|
||||
|
@ -465,7 +465,10 @@ fn sub(self, rhs: &Sugg<'_>) -> Sugg<'static> {
|
||||
impl Neg for Sugg<'_> {
|
||||
type Output = Sugg<'static>;
|
||||
fn neg(self) -> Sugg<'static> {
|
||||
make_unop("-", self)
|
||||
match &self {
|
||||
Self::BinOp(AssocOp::As, ..) => Sugg::MaybeParen(format!("-({self})").into()),
|
||||
_ => make_unop("-", self),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -33,6 +33,9 @@ fn main() {
|
||||
|
||||
let _ = a.mul_add(a, b).sqrt();
|
||||
|
||||
let u = 1usize;
|
||||
let _ = b.mul_add(-(u as f64), a);
|
||||
|
||||
// Cases where the lint shouldn't be applied
|
||||
let _ = (a * a + b * b).sqrt();
|
||||
}
|
||||
|
@ -33,6 +33,9 @@ fn main() {
|
||||
|
||||
let _ = (a * a + b).sqrt();
|
||||
|
||||
let u = 1usize;
|
||||
let _ = a - (b * u as f64);
|
||||
|
||||
// Cases where the lint shouldn't be applied
|
||||
let _ = (a * a + b * b).sqrt();
|
||||
}
|
||||
|
@ -73,5 +73,11 @@ error: multiply and add expressions can be calculated more efficiently and accur
|
||||
LL | let _ = (a * a + b).sqrt();
|
||||
| ^^^^^^^^^^^ help: consider using: `a.mul_add(a, b)`
|
||||
|
||||
error: aborting due to 12 previous errors
|
||||
error: multiply and add expressions can be calculated more efficiently and accurately
|
||||
--> $DIR/floating_point_mul_add.rs:37:13
|
||||
|
|
||||
LL | let _ = a - (b * u as f64);
|
||||
| ^^^^^^^^^^^^^^^^^^ help: consider using: `b.mul_add(-(u as f64), a)`
|
||||
|
||||
error: aborting due to 13 previous errors
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user