6ff77b96f1
Previously, the `cast_lossless` lint would issue a warning on code that converted a `usize` value to `f64`, on 32-bit targets. `usize` to `f64` is a lossless cast on 32-bit targets, however there is no corresponding `f64::from` that takes a `usize`, so `cast_lossless`'s suggested replacement does not compile. This PR disables the lint in the case of casting from `usize` or `isize`. Fixes #3689. changelog: [`cast_lossless`] no longer gives wrong suggestion on usize->f64
119 lines
3.7 KiB
Plaintext
119 lines
3.7 KiB
Plaintext
error: casting `isize` to `i8` may truncate the value
|
|
--> $DIR/cast_size_32bit.rs:12:5
|
|
|
|
|
LL | 1isize as i8;
|
|
| ^^^^^^^^^^^^
|
|
|
|
|
= note: `-D clippy::cast-possible-truncation` implied by `-D warnings`
|
|
|
|
error: casting `isize` to `f64` causes a loss of precision on targets with 64-bit wide pointers (`isize` is 64 bits wide, but `f64`'s mantissa is only 52 bits wide)
|
|
--> $DIR/cast_size_32bit.rs:15:5
|
|
|
|
|
LL | x0 as f64;
|
|
| ^^^^^^^^^
|
|
|
|
|
= note: `-D clippy::cast-precision-loss` implied by `-D warnings`
|
|
|
|
error: casting `usize` to `f64` causes a loss of precision on targets with 64-bit wide pointers (`usize` is 64 bits wide, but `f64`'s mantissa is only 52 bits wide)
|
|
--> $DIR/cast_size_32bit.rs:16:5
|
|
|
|
|
LL | x1 as f64;
|
|
| ^^^^^^^^^
|
|
|
|
error: casting `isize` to `f32` causes a loss of precision (`isize` is 32 or 64 bits wide, but `f32`'s mantissa is only 23 bits wide)
|
|
--> $DIR/cast_size_32bit.rs:17:5
|
|
|
|
|
LL | x0 as f32;
|
|
| ^^^^^^^^^
|
|
|
|
error: casting `usize` to `f32` causes a loss of precision (`usize` is 32 or 64 bits wide, but `f32`'s mantissa is only 23 bits wide)
|
|
--> $DIR/cast_size_32bit.rs:18:5
|
|
|
|
|
LL | x1 as f32;
|
|
| ^^^^^^^^^
|
|
|
|
error: casting `isize` to `i32` may truncate the value on targets with 64-bit wide pointers
|
|
--> $DIR/cast_size_32bit.rs:19:5
|
|
|
|
|
LL | 1isize as i32;
|
|
| ^^^^^^^^^^^^^
|
|
|
|
error: casting `isize` to `u32` may truncate the value on targets with 64-bit wide pointers
|
|
--> $DIR/cast_size_32bit.rs:20:5
|
|
|
|
|
LL | 1isize as u32;
|
|
| ^^^^^^^^^^^^^
|
|
|
|
error: casting `usize` to `u32` may truncate the value on targets with 64-bit wide pointers
|
|
--> $DIR/cast_size_32bit.rs:21:5
|
|
|
|
|
LL | 1usize as u32;
|
|
| ^^^^^^^^^^^^^
|
|
|
|
error: casting `usize` to `i32` may truncate the value on targets with 64-bit wide pointers
|
|
--> $DIR/cast_size_32bit.rs:22:5
|
|
|
|
|
LL | 1usize as i32;
|
|
| ^^^^^^^^^^^^^
|
|
|
|
error: casting `usize` to `i32` may wrap around the value on targets with 32-bit wide pointers
|
|
--> $DIR/cast_size_32bit.rs:22:5
|
|
|
|
|
LL | 1usize as i32;
|
|
| ^^^^^^^^^^^^^
|
|
|
|
|
= note: `-D clippy::cast-possible-wrap` implied by `-D warnings`
|
|
|
|
error: casting `i64` to `isize` may truncate the value on targets with 32-bit wide pointers
|
|
--> $DIR/cast_size_32bit.rs:24:5
|
|
|
|
|
LL | 1i64 as isize;
|
|
| ^^^^^^^^^^^^^
|
|
|
|
error: casting `i64` to `usize` may truncate the value on targets with 32-bit wide pointers
|
|
--> $DIR/cast_size_32bit.rs:25:5
|
|
|
|
|
LL | 1i64 as usize;
|
|
| ^^^^^^^^^^^^^
|
|
|
|
error: casting `u64` to `isize` may truncate the value on targets with 32-bit wide pointers
|
|
--> $DIR/cast_size_32bit.rs:26:5
|
|
|
|
|
LL | 1u64 as isize;
|
|
| ^^^^^^^^^^^^^
|
|
|
|
error: casting `u64` to `isize` may wrap around the value on targets with 64-bit wide pointers
|
|
--> $DIR/cast_size_32bit.rs:26:5
|
|
|
|
|
LL | 1u64 as isize;
|
|
| ^^^^^^^^^^^^^
|
|
|
|
error: casting `u64` to `usize` may truncate the value on targets with 32-bit wide pointers
|
|
--> $DIR/cast_size_32bit.rs:27:5
|
|
|
|
|
LL | 1u64 as usize;
|
|
| ^^^^^^^^^^^^^
|
|
|
|
error: casting `u32` to `isize` may wrap around the value on targets with 32-bit wide pointers
|
|
--> $DIR/cast_size_32bit.rs:28:5
|
|
|
|
|
LL | 1u32 as isize;
|
|
| ^^^^^^^^^^^^^
|
|
|
|
error: casting `i32` to `f32` causes a loss of precision (`i32` is 32 bits wide, but `f32`'s mantissa is only 23 bits wide)
|
|
--> $DIR/cast_size_32bit.rs:33:5
|
|
|
|
|
LL | 999_999_999 as f32;
|
|
| ^^^^^^^^^^^^^^^^^^
|
|
|
|
error: casting integer literal to `f64` is unnecessary
|
|
--> $DIR/cast_size_32bit.rs:34:5
|
|
|
|
|
LL | 3_999_999_999usize as f64;
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `3_999_999_999_f64`
|
|
|
|
|
= note: `-D clippy::unnecessary-cast` implied by `-D warnings`
|
|
|
|
error: aborting due to 20 previous errors
|
|
|