diff --git a/clippy_lints/src/misc_early.rs b/clippy_lints/src/misc_early.rs index b5791ad0c194..a34590518e91 100644 --- a/clippy_lints/src/misc_early.rs +++ b/clippy_lints/src/misc_early.rs @@ -367,12 +367,12 @@ impl MiscEarly { db.span_suggestion( lit.span, "if you mean to use a decimal constant, remove the `0` to remove confusion:", - src[1..].to_string(), + src.trim_left_matches('0').to_string(), ); db.span_suggestion( lit.span, "if you mean to use an octal constant, use `0o`:", - format!("0o{}", &src[1..]), + format!("0o{}", src.trim_left_matches('0')), ); }); } diff --git a/clippy_tests/examples/literals.rs b/clippy_tests/examples/literals.rs index 5fc22f238d0b..fa76d3308786 100644 --- a/clippy_tests/examples/literals.rs +++ b/clippy_tests/examples/literals.rs @@ -14,6 +14,7 @@ fn main() { let fail1 = 0xabCD; let fail2 = 0xabCD_u32; let fail2 = 0xabCD_isize; + let fail_multi_zero = 000123usize; let ok6 = 1234_i32; let ok7 = 1234_f32; diff --git a/clippy_tests/examples/literals.stderr b/clippy_tests/examples/literals.stderr index d38500f01593..66951886c915 100644 --- a/clippy_tests/examples/literals.stderr +++ b/clippy_tests/examples/literals.stderr @@ -23,17 +23,29 @@ error: inconsistent casing in hexadecimal literal = note: `-D mixed-case-hex-literals` implied by `-D warnings` error: integer type suffix should be separated by an underscore - --> literals.rs:21:17 + --> literals.rs:17:27 | -21 | let fail3 = 1234i32; - | ^^^^^^^ +17 | let fail_multi_zero = 000123usize; + | ^^^^^^^^^^^ | = note: `-D unseparated-literal-suffix` implied by `-D warnings` +error: this is a decimal constant + --> literals.rs:17:27 + | +17 | let fail_multi_zero = 000123usize; + | ^^^^^^^^^^^ + | + = note: `-D zero-prefixed-literal` implied by `-D warnings` +help: if you mean to use a decimal constant, remove the `0` to remove confusion: + | let fail_multi_zero = 123usize; +help: if you mean to use an octal constant, use `0o`: + | let fail_multi_zero = 0o123usize; + error: integer type suffix should be separated by an underscore --> literals.rs:22:17 | -22 | let fail4 = 1234u32; +22 | let fail3 = 1234i32; | ^^^^^^^ | = note: `-D unseparated-literal-suffix` implied by `-D warnings` @@ -41,31 +53,39 @@ error: integer type suffix should be separated by an underscore error: integer type suffix should be separated by an underscore --> literals.rs:23:17 | -23 | let fail5 = 1234isize; - | ^^^^^^^^^ +23 | let fail4 = 1234u32; + | ^^^^^^^ | = note: `-D unseparated-literal-suffix` implied by `-D warnings` error: integer type suffix should be separated by an underscore --> literals.rs:24:17 | -24 | let fail6 = 1234usize; +24 | let fail5 = 1234isize; + | ^^^^^^^^^ + | + = note: `-D unseparated-literal-suffix` implied by `-D warnings` + +error: integer type suffix should be separated by an underscore + --> literals.rs:25:17 + | +25 | let fail6 = 1234usize; | ^^^^^^^^^ | = note: `-D unseparated-literal-suffix` implied by `-D warnings` error: float type suffix should be separated by an underscore - --> literals.rs:25:17 + --> literals.rs:26:17 | -25 | let fail7 = 1.5f32; +26 | let fail7 = 1.5f32; | ^^^^^^ | = note: `-D unseparated-literal-suffix` implied by `-D warnings` error: this is a decimal constant - --> literals.rs:29:17 + --> literals.rs:30:17 | -29 | let fail8 = 0123; +30 | let fail8 = 0123; | ^^^^ | = note: `-D zero-prefixed-literal` implied by `-D warnings`