mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-10 15:14:29 +00:00
56 lines
2.5 KiB
Rust
56 lines
2.5 KiB
Rust
//@ignore-32bit
|
|
#[warn(
|
|
clippy::cast_precision_loss,
|
|
clippy::cast_possible_truncation,
|
|
clippy::cast_sign_loss,
|
|
clippy::cast_possible_wrap,
|
|
clippy::cast_lossless
|
|
)]
|
|
#[allow(clippy::no_effect, clippy::unnecessary_operation)]
|
|
fn main() {
|
|
// Casting from *size
|
|
1isize as i8;
|
|
//~^ ERROR: casting `isize` to `i8` may truncate the value
|
|
let x0 = 1isize;
|
|
let x1 = 1usize;
|
|
x0 as f64;
|
|
//~^ ERROR: casting `isize` to `f64` causes a loss of precision on targets with 64-bit
|
|
//~| NOTE: `-D clippy::cast-precision-loss` implied by `-D warnings`
|
|
x1 as f64;
|
|
//~^ ERROR: casting `usize` to `f64` causes a loss of precision on targets with 64-bit
|
|
x0 as f32;
|
|
//~^ ERROR: casting `isize` to `f32` causes a loss of precision (`isize` is 32 or 64 b
|
|
x1 as f32;
|
|
//~^ ERROR: casting `usize` to `f32` causes a loss of precision (`usize` is 32 or 64 b
|
|
1isize as i32;
|
|
//~^ ERROR: casting `isize` to `i32` may truncate the value on targets with 64-bit wid
|
|
1isize as u32;
|
|
//~^ ERROR: casting `isize` to `u32` may truncate the value on targets with 64-bit wid
|
|
1usize as u32;
|
|
//~^ ERROR: casting `usize` to `u32` may truncate the value on targets with 64-bit wid
|
|
1usize as i32;
|
|
//~^ ERROR: casting `usize` to `i32` may truncate the value on targets with 64-bit wid
|
|
//~| ERROR: casting `usize` to `i32` may wrap around the value on targets with 32-bit
|
|
//~| NOTE: `-D clippy::cast-possible-wrap` implied by `-D warnings`
|
|
// Casting to *size
|
|
1i64 as isize;
|
|
//~^ ERROR: casting `i64` to `isize` may truncate the value on targets with 32-bit wid
|
|
1i64 as usize;
|
|
//~^ ERROR: casting `i64` to `usize` may truncate the value on targets with 32-bit wid
|
|
1u64 as isize;
|
|
//~^ ERROR: casting `u64` to `isize` may truncate the value on targets with 32-bit wid
|
|
//~| ERROR: casting `u64` to `isize` may wrap around the value on targets with 64-bit
|
|
1u64 as usize;
|
|
//~^ ERROR: casting `u64` to `usize` may truncate the value on targets with 32-bit wid
|
|
1u32 as isize;
|
|
//~^ ERROR: casting `u32` to `isize` may wrap around the value on targets with 32-bit
|
|
1u32 as usize; // Should not trigger any lint
|
|
1i32 as isize; // Neither should this
|
|
1i32 as usize;
|
|
// Big integer literal to float
|
|
999_999_999 as f32;
|
|
//~^ ERROR: casting `i32` to `f32` causes a loss of precision (`i32` is 32 bits wide,
|
|
9_999_999_999_999_999usize as f64;
|
|
//~^ ERROR: casting `usize` to `f64` causes a loss of precision on targets with 64-bit
|
|
}
|
|
//@no-rustfix
|