diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2021-10-01 17:27:47 -0700 |
|---|---|---|
| committer | Manish Goregaokar <manishsmail@gmail.com> | 2021-10-01 17:27:47 -0700 |
| commit | 6bf5c0b185e37f64661e16938e18d68abd2accc4 (patch) | |
| tree | 15a95932a4521cb4d4f2b76ad5cbc3e6331392e5 | |
| parent | 51160808b8d9821079896baed1023be446555cc4 (diff) | |
| download | rust-6bf5c0b185e37f64661e16938e18d68abd2accc4.tar.gz rust-6bf5c0b185e37f64661e16938e18d68abd2accc4.zip | |
Correctly handle signs in exponents in numeric_literal::format()
| -rw-r--r-- | clippy_utils/src/numeric_literal.rs | 7 | ||||
| -rw-r--r-- | tests/ui/excessive_precision.fixed | 2 | ||||
| -rw-r--r-- | tests/ui/excessive_precision.stderr | 2 |
3 files changed, 9 insertions, 2 deletions
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 |
