From 75e2dcf56b380c5c941d68a46f321c748cd807a7 Mon Sep 17 00:00:00 2001 From: Michael Wright Date: Thu, 14 Nov 2019 07:42:04 +0200 Subject: [PATCH] literal representation: simplification Simplify calculation in grouping. Add test case to ensure `count()` can't be zero in that branch. --- clippy_lints/src/literal_representation.rs | 2 +- tests/ui/inconsistent_digit_grouping.fixed | 3 +++ tests/ui/inconsistent_digit_grouping.rs | 3 +++ tests/ui/inconsistent_digit_grouping.stderr | 8 +++++++- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/clippy_lints/src/literal_representation.rs b/clippy_lints/src/literal_representation.rs index b6f641d1b8cf..f95a27aae344 100644 --- a/clippy_lints/src/literal_representation.rs +++ b/clippy_lints/src/literal_representation.rs @@ -268,7 +268,7 @@ impl<'a> NumericLiteral<'a> { let first_group_size; if partial_group_first { - first_group_size = (digits.clone().count() + group_size - 1) % group_size + 1; + first_group_size = (digits.clone().count() - 1) % group_size + 1; if pad { for _ in 0..group_size - first_group_size { output.push('0'); diff --git a/tests/ui/inconsistent_digit_grouping.fixed b/tests/ui/inconsistent_digit_grouping.fixed index a95b7e0392d7..6ae93d5375ab 100644 --- a/tests/ui/inconsistent_digit_grouping.fixed +++ b/tests/ui/inconsistent_digit_grouping.fixed @@ -18,4 +18,7 @@ fn main() { let _ = 0x0100_0000; let _ = 0x1000_0000; let _ = 0x0001_0000_0000_u64; + + // Test suggestion when fraction has no digits + let _: f32 = 123_456.; } diff --git a/tests/ui/inconsistent_digit_grouping.rs b/tests/ui/inconsistent_digit_grouping.rs index e316e140de86..c594bdc64c58 100644 --- a/tests/ui/inconsistent_digit_grouping.rs +++ b/tests/ui/inconsistent_digit_grouping.rs @@ -18,4 +18,7 @@ fn main() { let _ = 0x1000000; let _ = 0x10000000; let _ = 0x100000000_u64; + + // Test suggestion when fraction has no digits + let _: f32 = 1_23_456.; } diff --git a/tests/ui/inconsistent_digit_grouping.stderr b/tests/ui/inconsistent_digit_grouping.stderr index 31acea2c5e0a..81c53af1d145 100644 --- a/tests/ui/inconsistent_digit_grouping.stderr +++ b/tests/ui/inconsistent_digit_grouping.stderr @@ -56,5 +56,11 @@ error: long literal lacking separators LL | let _ = 0x100000000_u64; | ^^^^^^^^^^^^^^^ help: consider: `0x0001_0000_0000_u64` -error: aborting due to 9 previous errors +error: digits grouped inconsistently by underscores + --> $DIR/inconsistent_digit_grouping.rs:23:18 + | +LL | let _: f32 = 1_23_456.; + | ^^^^^^^^^ help: consider: `123_456.` + +error: aborting due to 10 previous errors