From 834c4137ec272f275de01ae73d896b96348a6076 Mon Sep 17 00:00:00 2001 From: Krishna Ketan Rai Date: Thu, 31 Jul 2025 19:51:51 +0530 Subject: [PATCH] Fix cast_sign_loss false positive for float to uint casts The cast_sign_loss lint was incorrectly triggering on float to unsigned integer casts, which cannot actually lose sign information since floats don't have the same sign semantics as signed integers. This change modifies the should_lint function to exclude float to uint casts from the cast_sign_loss lint. changelog: Fix [] false positive for float to unsigned integer casts fixed tests --- clippy_lints/src/casts/cast_sign_loss.rs | 5 +- tests/ui/cast.rs | 4 - tests/ui/cast.stderr | 192 ++++++++++------------- 3 files changed, 86 insertions(+), 115 deletions(-) diff --git a/clippy_lints/src/casts/cast_sign_loss.rs b/clippy_lints/src/casts/cast_sign_loss.rs index a70bd8861919..1835afe1aaf7 100644 --- a/clippy_lints/src/casts/cast_sign_loss.rs +++ b/clippy_lints/src/casts/cast_sign_loss.rs @@ -76,9 +76,8 @@ fn should_lint<'cx>(cx: &LateContext<'cx>, cast_op: &Expr<'_>, cast_from: Ty<'cx true }, - (false, true) => !cast_to.is_signed(), - - (_, _) => false, + // Don't lint float -> int casts as they have different semantics + _ => false, } } diff --git a/tests/ui/cast.rs b/tests/ui/cast.rs index 525be8216500..4d982413b3a3 100644 --- a/tests/ui/cast.rs +++ b/tests/ui/cast.rs @@ -47,7 +47,6 @@ fn main() { 1f32 as u32; //~^ cast_possible_truncation - //~| cast_sign_loss 1f64 as f32; //~^ cast_possible_truncation @@ -63,12 +62,10 @@ fn main() { 1f64 as usize; //~^ cast_possible_truncation - //~| cast_sign_loss 1f32 as u32 as u16; //~^ cast_possible_truncation //~| cast_possible_truncation - //~| cast_sign_loss { let _x: i8 = 1i32 as _; @@ -82,7 +79,6 @@ fn main() { 1f32 as u8; //~^ cast_possible_truncation - //~| cast_sign_loss } // Test clippy::cast_possible_wrap 1u8 as i8; diff --git a/tests/ui/cast.stderr b/tests/ui/cast.stderr index 1cb30d956679..8c9f4b9ef847 100644 --- a/tests/ui/cast.stderr +++ b/tests/ui/cast.stderr @@ -55,17 +55,8 @@ LL | 1f32 as u32; | = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... -error: casting `f32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:48:5 - | -LL | 1f32 as u32; - | ^^^^^^^^^^^ - | - = note: `-D clippy::cast-sign-loss` implied by `-D warnings` - = help: to override `-D warnings` add `#[allow(clippy::cast_sign_loss)]` - error: casting `f64` to `f32` may truncate the value - --> tests/ui/cast.rs:52:5 + --> tests/ui/cast.rs:51:5 | LL | 1f64 as f32; | ^^^^^^^^^^^ @@ -73,7 +64,7 @@ LL | 1f64 as f32; = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... error: casting `i32` to `i8` may truncate the value - --> tests/ui/cast.rs:55:5 + --> tests/ui/cast.rs:54:5 | LL | 1i32 as i8; | ^^^^^^^^^^ @@ -86,7 +77,7 @@ LL + i8::try_from(1i32); | error: casting `i32` to `u8` may truncate the value - --> tests/ui/cast.rs:58:5 + --> tests/ui/cast.rs:57:5 | LL | 1i32 as u8; | ^^^^^^^^^^ @@ -99,7 +90,7 @@ LL + u8::try_from(1i32); | error: casting `f64` to `isize` may truncate the value - --> tests/ui/cast.rs:61:5 + --> tests/ui/cast.rs:60:5 | LL | 1f64 as isize; | ^^^^^^^^^^^^^ @@ -107,21 +98,15 @@ LL | 1f64 as isize; = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... error: casting `f64` to `usize` may truncate the value - --> tests/ui/cast.rs:64:5 + --> tests/ui/cast.rs:63:5 | LL | 1f64 as usize; | ^^^^^^^^^^^^^ | = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... -error: casting `f64` to `usize` may lose the sign of the value - --> tests/ui/cast.rs:64:5 - | -LL | 1f64 as usize; - | ^^^^^^^^^^^^^ - error: casting `u32` to `u16` may truncate the value - --> tests/ui/cast.rs:68:5 + --> tests/ui/cast.rs:66:5 | LL | 1f32 as u32 as u16; | ^^^^^^^^^^^^^^^^^^ @@ -134,21 +119,15 @@ LL + u16::try_from(1f32 as u32); | error: casting `f32` to `u32` may truncate the value - --> tests/ui/cast.rs:68:5 + --> tests/ui/cast.rs:66:5 | LL | 1f32 as u32 as u16; | ^^^^^^^^^^^ | = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... -error: casting `f32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:68:5 - | -LL | 1f32 as u32 as u16; - | ^^^^^^^^^^^ - error: casting `i32` to `i8` may truncate the value - --> tests/ui/cast.rs:74:22 + --> tests/ui/cast.rs:71:22 | LL | let _x: i8 = 1i32 as _; | ^^^^^^^^^ @@ -161,7 +140,7 @@ LL + let _x: i8 = 1i32.try_into(); | error: casting `f32` to `i32` may truncate the value - --> tests/ui/cast.rs:77:9 + --> tests/ui/cast.rs:74:9 | LL | 1f32 as i32; | ^^^^^^^^^^^ @@ -169,7 +148,7 @@ LL | 1f32 as i32; = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... error: casting `f64` to `i32` may truncate the value - --> tests/ui/cast.rs:80:9 + --> tests/ui/cast.rs:77:9 | LL | 1f64 as i32; | ^^^^^^^^^^^ @@ -177,21 +156,15 @@ LL | 1f64 as i32; = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... error: casting `f32` to `u8` may truncate the value - --> tests/ui/cast.rs:83:9 + --> tests/ui/cast.rs:80:9 | LL | 1f32 as u8; | ^^^^^^^^^^ | = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... -error: casting `f32` to `u8` may lose the sign of the value - --> tests/ui/cast.rs:83:9 - | -LL | 1f32 as u8; - | ^^^^^^^^^^ - error: casting `u8` to `i8` may wrap around the value - --> tests/ui/cast.rs:88:5 + --> tests/ui/cast.rs:84:5 | LL | 1u8 as i8; | ^^^^^^^^^ @@ -200,31 +173,31 @@ LL | 1u8 as i8; = help: to override `-D warnings` add `#[allow(clippy::cast_possible_wrap)]` error: casting `u16` to `i16` may wrap around the value - --> tests/ui/cast.rs:91:5 + --> tests/ui/cast.rs:87:5 | LL | 1u16 as i16; | ^^^^^^^^^^^ error: casting `u32` to `i32` may wrap around the value - --> tests/ui/cast.rs:94:5 + --> tests/ui/cast.rs:90:5 | LL | 1u32 as i32; | ^^^^^^^^^^^ error: casting `u64` to `i64` may wrap around the value - --> tests/ui/cast.rs:97:5 + --> tests/ui/cast.rs:93:5 | LL | 1u64 as i64; | ^^^^^^^^^^^ error: casting `usize` to `isize` may wrap around the value - --> tests/ui/cast.rs:100:5 + --> tests/ui/cast.rs:96:5 | LL | 1usize as isize; | ^^^^^^^^^^^^^^^ error: casting `usize` to `i8` may truncate the value - --> tests/ui/cast.rs:104:5 + --> tests/ui/cast.rs:100:5 | LL | 1usize as i8; | ^^^^^^^^^^^^ @@ -237,7 +210,7 @@ LL + i8::try_from(1usize); | error: casting `usize` to `i16` may truncate the value - --> tests/ui/cast.rs:108:5 + --> tests/ui/cast.rs:104:5 | LL | 1usize as i16; | ^^^^^^^^^^^^^ @@ -250,7 +223,7 @@ LL + i16::try_from(1usize); | error: casting `usize` to `i16` may wrap around the value on targets with 16-bit wide pointers - --> tests/ui/cast.rs:108:5 + --> tests/ui/cast.rs:104:5 | LL | 1usize as i16; | ^^^^^^^^^^^^^ @@ -259,7 +232,7 @@ LL | 1usize as i16; = note: for more information see https://doc.rust-lang.org/reference/types/numeric.html#machine-dependent-integer-types error: casting `usize` to `i32` may truncate the value on targets with 64-bit wide pointers - --> tests/ui/cast.rs:113:5 + --> tests/ui/cast.rs:109:5 | LL | 1usize as i32; | ^^^^^^^^^^^^^ @@ -272,19 +245,19 @@ LL + i32::try_from(1usize); | error: casting `usize` to `i32` may wrap around the value on targets with 32-bit wide pointers - --> tests/ui/cast.rs:113:5 + --> tests/ui/cast.rs:109:5 | LL | 1usize as i32; | ^^^^^^^^^^^^^ error: casting `usize` to `i64` may wrap around the value on targets with 64-bit wide pointers - --> tests/ui/cast.rs:118:5 + --> tests/ui/cast.rs:114:5 | LL | 1usize as i64; | ^^^^^^^^^^^^^ error: casting `u16` to `isize` may wrap around the value on targets with 16-bit wide pointers - --> tests/ui/cast.rs:124:5 + --> tests/ui/cast.rs:120:5 | LL | 1u16 as isize; | ^^^^^^^^^^^^^ @@ -293,13 +266,13 @@ LL | 1u16 as isize; = note: for more information see https://doc.rust-lang.org/reference/types/numeric.html#machine-dependent-integer-types error: casting `u32` to `isize` may wrap around the value on targets with 32-bit wide pointers - --> tests/ui/cast.rs:128:5 + --> tests/ui/cast.rs:124:5 | LL | 1u32 as isize; | ^^^^^^^^^^^^^ error: casting `u64` to `isize` may truncate the value on targets with 32-bit wide pointers - --> tests/ui/cast.rs:132:5 + --> tests/ui/cast.rs:128:5 | LL | 1u64 as isize; | ^^^^^^^^^^^^^ @@ -312,55 +285,58 @@ LL + isize::try_from(1u64); | error: casting `u64` to `isize` may wrap around the value on targets with 64-bit wide pointers - --> tests/ui/cast.rs:132:5 + --> tests/ui/cast.rs:128:5 | LL | 1u64 as isize; | ^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:138:5 + --> tests/ui/cast.rs:134:5 | LL | -1i32 as u32; | ^^^^^^^^^^^^ + | + = note: `-D clippy::cast-sign-loss` implied by `-D warnings` + = help: to override `-D warnings` add `#[allow(clippy::cast_sign_loss)]` error: casting `isize` to `usize` may lose the sign of the value - --> tests/ui/cast.rs:142:5 + --> tests/ui/cast.rs:138:5 | LL | -1isize as usize; | ^^^^^^^^^^^^^^^^ error: casting `i8` to `u8` may lose the sign of the value - --> tests/ui/cast.rs:154:5 + --> tests/ui/cast.rs:150:5 | LL | (i8::MIN).abs() as u8; | ^^^^^^^^^^^^^^^^^^^^^ error: casting `i64` to `u64` may lose the sign of the value - --> tests/ui/cast.rs:159:5 + --> tests/ui/cast.rs:155:5 | LL | (-1i64).abs() as u64; | ^^^^^^^^^^^^^^^^^^^^ error: casting `isize` to `usize` may lose the sign of the value - --> tests/ui/cast.rs:161:5 + --> tests/ui/cast.rs:157:5 | LL | (-1isize).abs() as usize; | ^^^^^^^^^^^^^^^^^^^^^^^^ error: casting `i64` to `u64` may lose the sign of the value - --> tests/ui/cast.rs:169:5 + --> tests/ui/cast.rs:165:5 | LL | (unsafe { (-1i64).checked_abs().unwrap_unchecked() }) as u64; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: casting `i64` to `u64` may lose the sign of the value - --> tests/ui/cast.rs:185:5 + --> tests/ui/cast.rs:181:5 | LL | (unsafe { (-1i64).checked_isqrt().unwrap_unchecked() }) as u64; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: casting `i64` to `i8` may truncate the value - --> tests/ui/cast.rs:237:5 + --> tests/ui/cast.rs:233:5 | LL | (-99999999999i64).min(1) as i8; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -373,7 +349,7 @@ LL + i8::try_from((-99999999999i64).min(1)); | error: casting `u64` to `u8` may truncate the value - --> tests/ui/cast.rs:251:5 + --> tests/ui/cast.rs:247:5 | LL | 999999u64.clamp(0, 256) as u8; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -386,7 +362,7 @@ LL + u8::try_from(999999u64.clamp(0, 256)); | error: casting `main::E2` to `u8` may truncate the value - --> tests/ui/cast.rs:274:21 + --> tests/ui/cast.rs:270:21 | LL | let _ = self as u8; | ^^^^^^^^^^ @@ -399,7 +375,7 @@ LL + let _ = u8::try_from(self); | error: casting `main::E2::B` to `u8` will truncate the value - --> tests/ui/cast.rs:277:21 + --> tests/ui/cast.rs:273:21 | LL | let _ = Self::B as u8; | ^^^^^^^^^^^^^ @@ -408,7 +384,7 @@ LL | let _ = Self::B as u8; = help: to override `-D warnings` add `#[allow(clippy::cast_enum_truncation)]` error: casting `main::E5` to `i8` may truncate the value - --> tests/ui/cast.rs:319:21 + --> tests/ui/cast.rs:315:21 | LL | let _ = self as i8; | ^^^^^^^^^^ @@ -421,13 +397,13 @@ LL + let _ = i8::try_from(self); | error: casting `main::E5::A` to `i8` will truncate the value - --> tests/ui/cast.rs:322:21 + --> tests/ui/cast.rs:318:21 | LL | let _ = Self::A as i8; | ^^^^^^^^^^^^^ error: casting `main::E6` to `i16` may truncate the value - --> tests/ui/cast.rs:340:21 + --> tests/ui/cast.rs:336:21 | LL | let _ = self as i16; | ^^^^^^^^^^^ @@ -440,7 +416,7 @@ LL + let _ = i16::try_from(self); | error: casting `main::E7` to `usize` may truncate the value on targets with 32-bit wide pointers - --> tests/ui/cast.rs:360:21 + --> tests/ui/cast.rs:356:21 | LL | let _ = self as usize; | ^^^^^^^^^^^^^ @@ -453,7 +429,7 @@ LL + let _ = usize::try_from(self); | error: casting `main::E10` to `u16` may truncate the value - --> tests/ui/cast.rs:408:21 + --> tests/ui/cast.rs:404:21 | LL | let _ = self as u16; | ^^^^^^^^^^^ @@ -466,7 +442,7 @@ LL + let _ = u16::try_from(self); | error: casting `u32` to `u8` may truncate the value - --> tests/ui/cast.rs:420:13 + --> tests/ui/cast.rs:416:13 | LL | let c = (q >> 16) as u8; | ^^^^^^^^^^^^^^^ @@ -479,7 +455,7 @@ LL + let c = u8::try_from(q >> 16); | error: casting `u32` to `u8` may truncate the value - --> tests/ui/cast.rs:425:13 + --> tests/ui/cast.rs:421:13 | LL | let c = (q / 1000) as u8; | ^^^^^^^^^^^^^^^^ @@ -492,85 +468,85 @@ LL + let c = u8::try_from(q / 1000); | error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:438:9 + --> tests/ui/cast.rs:434:9 | LL | (x * x) as u32; | ^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:444:32 + --> tests/ui/cast.rs:440:32 | LL | let _a = |x: i32| -> u32 { (x * x * x * x) as u32 }; | ^^^^^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:447:5 + --> tests/ui/cast.rs:443:5 | LL | (2_i32).checked_pow(3).unwrap() as u32; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:449:5 + --> tests/ui/cast.rs:445:5 | LL | (-2_i32).pow(3) as u32; | ^^^^^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:454:5 + --> tests/ui/cast.rs:450:5 | LL | (-5_i32 % 2) as u32; | ^^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:457:5 + --> tests/ui/cast.rs:453:5 | LL | (-5_i32 % -2) as u32; | ^^^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:461:5 + --> tests/ui/cast.rs:457:5 | LL | (-2_i32 >> 1) as u32; | ^^^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:465:5 + --> tests/ui/cast.rs:461:5 | LL | (x * x) as u32; | ^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:467:5 + --> tests/ui/cast.rs:463:5 | LL | (x * x * x) as u32; | ^^^^^^^^^^^^^^^^^^ error: casting `i16` to `u16` may lose the sign of the value - --> tests/ui/cast.rs:471:5 + --> tests/ui/cast.rs:467:5 | LL | (y * y * y * y * -2) as u16; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: casting `i16` to `u16` may lose the sign of the value - --> tests/ui/cast.rs:474:5 + --> tests/ui/cast.rs:470:5 | LL | (y * y * y / y * 2) as u16; | ^^^^^^^^^^^^^^^^^^^^^^^^^^ error: casting `i16` to `u16` may lose the sign of the value - --> tests/ui/cast.rs:476:5 + --> tests/ui/cast.rs:472:5 | LL | (y * y / y * 2) as u16; | ^^^^^^^^^^^^^^^^^^^^^^ error: casting `i16` to `u16` may lose the sign of the value - --> tests/ui/cast.rs:479:5 + --> tests/ui/cast.rs:475:5 | LL | (y / y * y * -2) as u16; | ^^^^^^^^^^^^^^^^^^^^^^^ error: equal expressions as operands to `/` - --> tests/ui/cast.rs:479:6 + --> tests/ui/cast.rs:475:6 | LL | (y / y * y * -2) as u16; | ^^^^^ @@ -578,97 +554,97 @@ LL | (y / y * y * -2) as u16; = note: `#[deny(clippy::eq_op)]` on by default error: casting `i16` to `u16` may lose the sign of the value - --> tests/ui/cast.rs:483:5 + --> tests/ui/cast.rs:479:5 | LL | (y + y + y + -2) as u16; | ^^^^^^^^^^^^^^^^^^^^^^^ error: casting `i16` to `u16` may lose the sign of the value - --> tests/ui/cast.rs:486:5 + --> tests/ui/cast.rs:482:5 | LL | (y + y + y + 2) as u16; | ^^^^^^^^^^^^^^^^^^^^^^ error: casting `i16` to `u16` may lose the sign of the value - --> tests/ui/cast.rs:490:5 + --> tests/ui/cast.rs:486:5 | LL | (z + -2) as u16; | ^^^^^^^^^^^^^^^ error: casting `i16` to `u16` may lose the sign of the value - --> tests/ui/cast.rs:493:5 + --> tests/ui/cast.rs:489:5 | LL | (z + z + 2) as u16; | ^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:497:9 + --> tests/ui/cast.rs:493:9 | LL | (a * a * b * b * c * c) as u32; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:499:9 + --> tests/ui/cast.rs:495:9 | LL | (a * b * c) as u32; | ^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:502:9 + --> tests/ui/cast.rs:498:9 | LL | (a * -b * c) as u32; | ^^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:505:9 + --> tests/ui/cast.rs:501:9 | LL | (a * b * c * c) as u32; | ^^^^^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:507:9 + --> tests/ui/cast.rs:503:9 | LL | (a * -2) as u32; | ^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:510:9 + --> tests/ui/cast.rs:506:9 | LL | (a * b * c * -2) as u32; | ^^^^^^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:513:9 + --> tests/ui/cast.rs:509:9 | LL | (a / b) as u32; | ^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:515:9 + --> tests/ui/cast.rs:511:9 | LL | (a / b * c) as u32; | ^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:518:9 + --> tests/ui/cast.rs:514:9 | LL | (a / b + b * c) as u32; | ^^^^^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:521:9 + --> tests/ui/cast.rs:517:9 | LL | a.saturating_pow(3) as u32; | ^^^^^^^^^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:524:9 + --> tests/ui/cast.rs:520:9 | LL | (a.abs() * b.pow(2) / c.abs()) as u32 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: casting `i32` to `u32` may lose the sign of the value - --> tests/ui/cast.rs:532:21 + --> tests/ui/cast.rs:528:21 | LL | let _ = i32::MIN as u32; // cast_sign_loss | ^^^^^^^^^^^^^^^ @@ -679,7 +655,7 @@ LL | m!(); = note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info) error: casting `u32` to `u8` may truncate the value - --> tests/ui/cast.rs:535:21 + --> tests/ui/cast.rs:531:21 | LL | let _ = u32::MAX as u8; // cast_possible_truncation | ^^^^^^^^^^^^^^ @@ -696,7 +672,7 @@ LL + let _ = u8::try_from(u32::MAX); // cast_possible_truncation | error: casting `f64` to `f32` may truncate the value - --> tests/ui/cast.rs:538:21 + --> tests/ui/cast.rs:534:21 | LL | let _ = std::f64::consts::PI as f32; // cast_possible_truncation | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -708,7 +684,7 @@ LL | m!(); = note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info) error: casting `i64` to `usize` may truncate the value on targets with 32-bit wide pointers - --> tests/ui/cast.rs:549:5 + --> tests/ui/cast.rs:545:5 | LL | bar.unwrap().unwrap() as usize | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -721,13 +697,13 @@ LL + usize::try_from(bar.unwrap().unwrap()) | error: casting `i64` to `usize` may lose the sign of the value - --> tests/ui/cast.rs:549:5 + --> tests/ui/cast.rs:545:5 | LL | bar.unwrap().unwrap() as usize | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: casting `u64` to `u8` may truncate the value - --> tests/ui/cast.rs:566:5 + --> tests/ui/cast.rs:562:5 | LL | (256 & 999999u64) as u8; | ^^^^^^^^^^^^^^^^^^^^^^^ @@ -740,7 +716,7 @@ LL + u8::try_from(256 & 999999u64); | error: casting `u64` to `u8` may truncate the value - --> tests/ui/cast.rs:569:5 + --> tests/ui/cast.rs:565:5 | LL | (255 % 999999u64) as u8; | ^^^^^^^^^^^^^^^^^^^^^^^ @@ -752,5 +728,5 @@ LL - (255 % 999999u64) as u8; LL + u8::try_from(255 % 999999u64); | -error: aborting due to 92 previous errors +error: aborting due to 88 previous errors