diff options
| author | bors <bors@rust-lang.org> | 2019-02-04 05:52:44 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-02-04 05:52:44 +0000 |
| commit | 4259377ea61e4c830a49deda5be60c05a76a0a90 (patch) | |
| tree | c1660674f2c26666179180cfbdadebe02e401b8a /tests | |
| parent | 7bea43614cbd0d989a17fcf321f7bc0d8b641c0d (diff) | |
| parent | f3ee53d2259299e42bff3456a99def6ae3be8f84 (diff) | |
| download | rust-4259377ea61e4c830a49deda5be60c05a76a0a90.tar.gz rust-4259377ea61e4c830a49deda5be60c05a76a0a90.zip | |
Auto merge of #3725 - mikerite:fix-2728, r=phansch
Fix `cast_sign_loss` false positive This checks if the value is a non-negative constant before linting about losing the sign. Because the `constant` function doesn't handle const functions, we check if the value is from a call to a `max_value` function directly. A utility method called `get_def_path` was added to make checking for the function paths easier. Fixes #2728
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ui/cast.rs | 8 | ||||
| -rw-r--r-- | tests/ui/cast.stderr | 26 | ||||
| -rw-r--r-- | tests/ui/cast_size.stderr | 22 |
3 files changed, 19 insertions, 37 deletions
diff --git a/tests/ui/cast.rs b/tests/ui/cast.rs index 5f4de9894c7..c248b5bf598 100644 --- a/tests/ui/cast.rs +++ b/tests/ui/cast.rs @@ -34,7 +34,15 @@ fn main() { (1u8 + 1u8) as u16; // Test clippy::cast_sign_loss 1i32 as u32; + -1i32 as u32; 1isize as usize; + -1isize as usize; + 0i8 as u8; + i8::max_value() as u8; + i16::max_value() as u16; + i32::max_value() as u32; + i64::max_value() as u64; + i128::max_value() as u128; // Extra checks for *size // Test cast_unnecessary 1i32 as i32; diff --git a/tests/ui/cast.stderr b/tests/ui/cast.stderr index 92587312a53..c01393793f1 100644 --- a/tests/ui/cast.stderr +++ b/tests/ui/cast.stderr @@ -70,12 +70,6 @@ error: casting i32 to i8 may truncate the value LL | 1i32 as i8; | ^^^^^^^^^^ -error: casting i32 to u8 may lose the sign of the value - --> $DIR/cast.rs:22:5 - | -LL | 1i32 as u8; - | ^^^^^^^^^^ - error: casting i32 to u8 may truncate the value --> $DIR/cast.rs:22:5 | @@ -147,19 +141,19 @@ LL | (1u8 + 1u8) as u16; | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(1u8 + 1u8)` error: casting i32 to u32 may lose the sign of the value - --> $DIR/cast.rs:36:5 + --> $DIR/cast.rs:37:5 | -LL | 1i32 as u32; - | ^^^^^^^^^^^ +LL | -1i32 as u32; + | ^^^^^^^^^^^^ error: casting isize to usize may lose the sign of the value - --> $DIR/cast.rs:37:5 + --> $DIR/cast.rs:39:5 | -LL | 1isize as usize; - | ^^^^^^^^^^^^^^^ +LL | -1isize as usize; + | ^^^^^^^^^^^^^^^^ error: casting to the same type is unnecessary (`i32` -> `i32`) - --> $DIR/cast.rs:40:5 + --> $DIR/cast.rs:48:5 | LL | 1i32 as i32; | ^^^^^^^^^^^ @@ -167,16 +161,16 @@ LL | 1i32 as i32; = note: `-D clippy::unnecessary-cast` implied by `-D warnings` error: casting to the same type is unnecessary (`f32` -> `f32`) - --> $DIR/cast.rs:41:5 + --> $DIR/cast.rs:49:5 | LL | 1f32 as f32; | ^^^^^^^^^^^ error: casting to the same type is unnecessary (`bool` -> `bool`) - --> $DIR/cast.rs:42:5 + --> $DIR/cast.rs:50:5 | LL | false as bool; | ^^^^^^^^^^^^^ -error: aborting due to 28 previous errors +error: aborting due to 27 previous errors diff --git a/tests/ui/cast_size.stderr b/tests/ui/cast_size.stderr index 9346deb19ec..a77aafaf11d 100644 --- a/tests/ui/cast_size.stderr +++ b/tests/ui/cast_size.stderr @@ -38,14 +38,6 @@ error: casting isize to i32 may truncate the value on targets with 64-bit wide p LL | 1isize as i32; | ^^^^^^^^^^^^^ -error: casting isize to u32 may lose the sign of the value - --> $DIR/cast_size.rs:17:5 - | -LL | 1isize as u32; - | ^^^^^^^^^^^^^ - | - = note: `-D clippy::cast-sign-loss` implied by `-D warnings` - error: casting isize to u32 may truncate the value on targets with 64-bit wide pointers --> $DIR/cast_size.rs:17:5 | @@ -78,12 +70,6 @@ error: casting i64 to isize may truncate the value on targets with 32-bit wide p LL | 1i64 as isize; | ^^^^^^^^^^^^^ -error: casting i64 to usize may lose the sign of the value - --> $DIR/cast_size.rs:22:5 - | -LL | 1i64 as usize; - | ^^^^^^^^^^^^^ - error: casting i64 to usize may truncate the value on targets with 32-bit wide pointers --> $DIR/cast_size.rs:22:5 | @@ -114,11 +100,5 @@ error: casting u32 to isize may wrap around the value on targets with 32-bit wid LL | 1u32 as isize; | ^^^^^^^^^^^^^ -error: casting i32 to usize may lose the sign of the value - --> $DIR/cast_size.rs:28:5 - | -LL | 1i32 as usize; - | ^^^^^^^^^^^^^ - -error: aborting due to 19 previous errors +error: aborting due to 16 previous errors |
