1
Fork 0

fix: fix overflowing hex wrong suggestion

Signed-off-by: 11happy <soni5happy@gmail.com>

rebase

Signed-off-by: 11happy <soni5happy@gmail.com>

fix: rebless

Signed-off-by: 11happy <soni5happy@gmail.com>
This commit is contained in:
11happy 2025-02-02 11:11:48 +05:30
parent f45d4acf1b
commit dbf8fe068a
3 changed files with 22 additions and 5 deletions

View file

@ -186,7 +186,7 @@ fn report_bin_hex_error(
lit_no_suffix, lit_no_suffix,
negative_val: actually.clone(), negative_val: actually.clone(),
int_ty: int_ty.name_str(), int_ty: int_ty.name_str(),
uint_ty: int_ty.to_unsigned().name_str(), uint_ty: Integer::fit_unsigned(val).uint_ty_str(),
}) })
}) })
.flatten(); .flatten();

View file

@ -41,8 +41,12 @@ fn main() {
let fail = 0x8FFF_FFFF_FFFF_FFFE; //~WARNING literal out of range for `i32` let fail = 0x8FFF_FFFF_FFFF_FFFE; //~WARNING literal out of range for `i32`
//~| HELP consider using the type `u64` instead //~| HELP consider using the type `u64` instead
//~| HELP //~| HELP consider using the type `u64` for the literal and cast it to `i32`
let fail = -0b1111_1111i8; //~WARNING literal out of range for `i8` let fail = -0b1111_1111i8; //~WARNING literal out of range for `i8`
//~| HELP consider using the type `i16` instead //~| HELP consider using the type `i16` instead
let fail = 0x8000_0000_0000_0000_0000_0000_FFFF_FFFE; //~WARNING literal out of range for `i32`
//~| HELP consider using the type `u128` instead
//~| HELP consider using the type `u128` for the literal and cast it to `i32`
} }

View file

@ -112,9 +112,9 @@ LL | let fail = 0x8FFF_FFFF_FFFF_FFFE;
| |
= note: the literal `0x8FFF_FFFF_FFFF_FFFE` (decimal `10376293541461622782`) does not fit into the type `i32` and will become `-2i32` = note: the literal `0x8FFF_FFFF_FFFF_FFFE` (decimal `10376293541461622782`) does not fit into the type `i32` and will become `-2i32`
= help: consider using the type `u64` instead = help: consider using the type `u64` instead
help: to use as a negative number (decimal `-2`), consider using the type `u32` for the literal and cast it to `i32` help: to use as a negative number (decimal `-2`), consider using the type `u64` for the literal and cast it to `i32`
| |
LL | let fail = 0x8FFF_FFFF_FFFF_FFFEu32 as i32; LL | let fail = 0x8FFF_FFFF_FFFF_FFFEu64 as i32;
| ++++++++++ | ++++++++++
warning: literal out of range for `i8` warning: literal out of range for `i8`
@ -126,5 +126,18 @@ LL | let fail = -0b1111_1111i8;
= note: the literal `0b1111_1111i8` (decimal `255`) does not fit into the type `i8` = note: the literal `0b1111_1111i8` (decimal `255`) does not fit into the type `i8`
= note: and the value `-0b1111_1111i8` will become `1i8` = note: and the value `-0b1111_1111i8` will become `1i8`
warning: 11 warnings emitted warning: literal out of range for `i32`
--> $DIR/type-overflow.rs:49:16
|
LL | let fail = 0x8000_0000_0000_0000_0000_0000_FFFF_FFFE;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: the literal `0x8000_0000_0000_0000_0000_0000_FFFF_FFFE` (decimal `170141183460469231731687303720179073022`) does not fit into the type `i32` and will become `-2i32`
= help: consider using the type `u128` instead
help: to use as a negative number (decimal `-2`), consider using the type `u128` for the literal and cast it to `i32`
|
LL | let fail = 0x8000_0000_0000_0000_0000_0000_FFFF_FFFEu128 as i32;
| +++++++++++
warning: 12 warnings emitted