Change cast_lossless message for bools only

This commit is contained in:
5225225 2021-11-12 17:01:35 +00:00
parent 6e84f00045
commit d4c8cb63a4
2 changed files with 26 additions and 17 deletions

View File

@ -40,14 +40,23 @@ pub(super) fn check(
}, },
); );
let message = if cast_from.is_bool() {
format!(
"casting `{0:}` to `{1:}` is more cleanly stated with `{1:}::from(_)`",
cast_from, cast_to
)
} else {
format!(
"casting `{}` to `{}` may become silently lossy if you later change the type",
cast_from, cast_to
)
};
span_lint_and_sugg( span_lint_and_sugg(
cx, cx,
CAST_LOSSLESS, CAST_LOSSLESS,
expr.span, expr.span,
&format!( &message,
"casting `{}` to `{}` may become silently lossy if you later change the type",
cast_from, cast_to
),
"try", "try",
format!("{}::from({})", cast_to, sugg), format!("{}::from({})", cast_to, sugg),
applicability, applicability,

View File

@ -1,4 +1,4 @@
error: casting `bool` to `u8` may become silently lossy if you later change the type error: casting `bool` to `u8` is more cleanly stated with `u8::from(_)`
--> $DIR/cast_lossless_bool.rs:8:13 --> $DIR/cast_lossless_bool.rs:8:13
| |
LL | let _ = true as u8; LL | let _ = true as u8;
@ -6,73 +6,73 @@ LL | let _ = true as u8;
| |
= note: `-D clippy::cast-lossless` implied by `-D warnings` = note: `-D clippy::cast-lossless` implied by `-D warnings`
error: casting `bool` to `u16` may become silently lossy if you later change the type error: casting `bool` to `u16` is more cleanly stated with `u16::from(_)`
--> $DIR/cast_lossless_bool.rs:9:13 --> $DIR/cast_lossless_bool.rs:9:13
| |
LL | let _ = true as u16; LL | let _ = true as u16;
| ^^^^^^^^^^^ help: try: `u16::from(true)` | ^^^^^^^^^^^ help: try: `u16::from(true)`
error: casting `bool` to `u32` may become silently lossy if you later change the type error: casting `bool` to `u32` is more cleanly stated with `u32::from(_)`
--> $DIR/cast_lossless_bool.rs:10:13 --> $DIR/cast_lossless_bool.rs:10:13
| |
LL | let _ = true as u32; LL | let _ = true as u32;
| ^^^^^^^^^^^ help: try: `u32::from(true)` | ^^^^^^^^^^^ help: try: `u32::from(true)`
error: casting `bool` to `u64` may become silently lossy if you later change the type error: casting `bool` to `u64` is more cleanly stated with `u64::from(_)`
--> $DIR/cast_lossless_bool.rs:11:13 --> $DIR/cast_lossless_bool.rs:11:13
| |
LL | let _ = true as u64; LL | let _ = true as u64;
| ^^^^^^^^^^^ help: try: `u64::from(true)` | ^^^^^^^^^^^ help: try: `u64::from(true)`
error: casting `bool` to `u128` may become silently lossy if you later change the type error: casting `bool` to `u128` is more cleanly stated with `u128::from(_)`
--> $DIR/cast_lossless_bool.rs:12:13 --> $DIR/cast_lossless_bool.rs:12:13
| |
LL | let _ = true as u128; LL | let _ = true as u128;
| ^^^^^^^^^^^^ help: try: `u128::from(true)` | ^^^^^^^^^^^^ help: try: `u128::from(true)`
error: casting `bool` to `usize` may become silently lossy if you later change the type error: casting `bool` to `usize` is more cleanly stated with `usize::from(_)`
--> $DIR/cast_lossless_bool.rs:13:13 --> $DIR/cast_lossless_bool.rs:13:13
| |
LL | let _ = true as usize; LL | let _ = true as usize;
| ^^^^^^^^^^^^^ help: try: `usize::from(true)` | ^^^^^^^^^^^^^ help: try: `usize::from(true)`
error: casting `bool` to `i8` may become silently lossy if you later change the type error: casting `bool` to `i8` is more cleanly stated with `i8::from(_)`
--> $DIR/cast_lossless_bool.rs:15:13 --> $DIR/cast_lossless_bool.rs:15:13
| |
LL | let _ = true as i8; LL | let _ = true as i8;
| ^^^^^^^^^^ help: try: `i8::from(true)` | ^^^^^^^^^^ help: try: `i8::from(true)`
error: casting `bool` to `i16` may become silently lossy if you later change the type error: casting `bool` to `i16` is more cleanly stated with `i16::from(_)`
--> $DIR/cast_lossless_bool.rs:16:13 --> $DIR/cast_lossless_bool.rs:16:13
| |
LL | let _ = true as i16; LL | let _ = true as i16;
| ^^^^^^^^^^^ help: try: `i16::from(true)` | ^^^^^^^^^^^ help: try: `i16::from(true)`
error: casting `bool` to `i32` may become silently lossy if you later change the type error: casting `bool` to `i32` is more cleanly stated with `i32::from(_)`
--> $DIR/cast_lossless_bool.rs:17:13 --> $DIR/cast_lossless_bool.rs:17:13
| |
LL | let _ = true as i32; LL | let _ = true as i32;
| ^^^^^^^^^^^ help: try: `i32::from(true)` | ^^^^^^^^^^^ help: try: `i32::from(true)`
error: casting `bool` to `i64` may become silently lossy if you later change the type error: casting `bool` to `i64` is more cleanly stated with `i64::from(_)`
--> $DIR/cast_lossless_bool.rs:18:13 --> $DIR/cast_lossless_bool.rs:18:13
| |
LL | let _ = true as i64; LL | let _ = true as i64;
| ^^^^^^^^^^^ help: try: `i64::from(true)` | ^^^^^^^^^^^ help: try: `i64::from(true)`
error: casting `bool` to `i128` may become silently lossy if you later change the type error: casting `bool` to `i128` is more cleanly stated with `i128::from(_)`
--> $DIR/cast_lossless_bool.rs:19:13 --> $DIR/cast_lossless_bool.rs:19:13
| |
LL | let _ = true as i128; LL | let _ = true as i128;
| ^^^^^^^^^^^^ help: try: `i128::from(true)` | ^^^^^^^^^^^^ help: try: `i128::from(true)`
error: casting `bool` to `isize` may become silently lossy if you later change the type error: casting `bool` to `isize` is more cleanly stated with `isize::from(_)`
--> $DIR/cast_lossless_bool.rs:20:13 --> $DIR/cast_lossless_bool.rs:20:13
| |
LL | let _ = true as isize; LL | let _ = true as isize;
| ^^^^^^^^^^^^^ help: try: `isize::from(true)` | ^^^^^^^^^^^^^ help: try: `isize::from(true)`
error: casting `bool` to `u16` may become silently lossy if you later change the type error: casting `bool` to `u16` is more cleanly stated with `u16::from(_)`
--> $DIR/cast_lossless_bool.rs:23:13 --> $DIR/cast_lossless_bool.rs:23:13
| |
LL | let _ = (true | false) as u16; LL | let _ = (true | false) as u16;