diff --git a/clippy_utils/src/numeric_literal.rs b/clippy_utils/src/numeric_literal.rs index 4a28c7dd9a0..98f65039b7d 100644 --- a/clippy_utils/src/numeric_literal.rs +++ b/clippy_utils/src/numeric_literal.rs @@ -177,6 +177,13 @@ impl<'a> NumericLiteral<'a> { let mut digits = input.chars().filter(|&c| c != '_'); + // The exponent may have a sign, output it early, otherwise it will be + // treated as a digit + if let Some('-') = digits.clone().next() { + let _ = digits.next(); + output.push('-'); + } + let first_group_size; if partial_group_first { diff --git a/tests/ui/excessive_precision.fixed b/tests/ui/excessive_precision.fixed index f57191d2ae5..65096d6b219 100644 --- a/tests/ui/excessive_precision.fixed +++ b/tests/ui/excessive_precision.fixed @@ -62,5 +62,5 @@ fn main() { let num = 0.000_000_000_01e-10f64; // issue #7744 - let _ = 2.225_073_858_507_201e-_308_f64; + let _ = 2.225_073_858_507_201e-308_f64; } diff --git a/tests/ui/excessive_precision.stderr b/tests/ui/excessive_precision.stderr index 4c8194b1d86..c9418f73d98 100644 --- a/tests/ui/excessive_precision.stderr +++ b/tests/ui/excessive_precision.stderr @@ -82,7 +82,7 @@ error: float has excessive precision --> $DIR/excessive_precision.rs:65:13 | LL | let _ = 2.225_073_858_507_201_1e-308_f64; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `2.225_073_858_507_201e-_308_f64` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `2.225_073_858_507_201e-308_f64` error: aborting due to 14 previous errors