Don't suggest a.mul_add(b, c) if parameters are not float

clippy::suboptimal_flops used to not check if the second parameter to f32/f64.mul_add() was float. Since the method is
only defined to take `Self` as paremters, the suggestion was wrong.

Fixes #11831
This commit is contained in:
Lukas Lueg 2023-11-18 13:50:18 +01:00
parent e8e9510219
commit a2e396badf
3 changed files with 42 additions and 2 deletions

View file

@ -39,3 +39,21 @@ fn main() {
// Cases where the lint shouldn't be applied
let _ = (a * a + b * b).sqrt();
}
fn _issue11831() {
struct NotAFloat;
impl std::ops::Add<f64> for NotAFloat {
type Output = Self;
fn add(self, _: f64) -> Self {
NotAFloat
}
}
let a = NotAFloat;
let b = 1.0_f64;
let c = 1.0;
let _ = a + b * c;
}

View file

@ -39,3 +39,21 @@ fn main() {
// Cases where the lint shouldn't be applied
let _ = (a * a + b * b).sqrt();
}
fn _issue11831() {
struct NotAFloat;
impl std::ops::Add<f64> for NotAFloat {
type Output = Self;
fn add(self, _: f64) -> Self {
NotAFloat
}
}
let a = NotAFloat;
let b = 1.0_f64;
let c = 1.0;
let _ = a + b * c;
}