deal with multiple prefixed zeros in literals

This commit is contained in:
Andre Bogus 2017-06-12 20:41:00 +02:00
parent b1e9c1b7e7
commit 3a8e4c33bd
3 changed files with 34 additions and 13 deletions

View File

@ -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')),
);
});
}

View File

@ -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;

View File

@ -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`