Skip to content

Commit 18a137b

Browse files
committed
Simplify clippy lint.
1 parent 0ea88cb commit 18a137b

File tree

4 files changed

+61
-84
lines changed

4 files changed

+61
-84
lines changed

src/tools/clippy/clippy_lints/src/transmute/mod.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ declare_clippy_lint! {
257257

258258
declare_clippy_lint! {
259259
/// ### What it does
260-
/// Checks for transmutes from integers to `NonZero*` types, and suggests their `new_unchecked`
260+
/// Checks for transmutes from `T` to `NonZero<T>`, and suggests the `new_unchecked`
261261
/// method instead.
262262
///
263263
/// ### Why is this bad?
@@ -266,13 +266,13 @@ declare_clippy_lint! {
266266
///
267267
/// ### Example
268268
/// ```no_run
269-
/// # use core::num::NonZeroU32;
270-
/// let _non_zero: NonZeroU32 = unsafe { std::mem::transmute(123) };
269+
/// # use core::num::NonZero;
270+
/// let _: NonZero<u32> = unsafe { std::mem::transmute(123) };
271271
/// ```
272272
/// Use instead:
273273
/// ```no_run
274-
/// # use core::num::NonZeroU32;
275-
/// let _non_zero = unsafe { NonZeroU32::new_unchecked(123) };
274+
/// # use core::num::NonZero;
275+
/// let _: NonZero<u32> = unsafe { NonZero::new_unchecked(123) };
276276
/// ```
277277
#[clippy::version = "1.69.0"]
278278
pub TRANSMUTE_INT_TO_NON_ZERO,

src/tools/clippy/clippy_lints/src/transmute/transmute_int_to_non_zero.rs

+5-28
Original file line numberDiff line numberDiff line change
@@ -26,45 +26,22 @@ pub(super) fn check<'tcx>(
2626
return false;
2727
};
2828

29-
// FIXME: This can be simplified once `NonZero<T>` is stable.
30-
let coercible_types = [
31-
("NonZeroU8", tcx.types.u8),
32-
("NonZeroU16", tcx.types.u16),
33-
("NonZeroU32", tcx.types.u32),
34-
("NonZeroU64", tcx.types.u64),
35-
("NonZeroU128", tcx.types.u128),
36-
("NonZeroUsize", tcx.types.usize),
37-
("NonZeroI8", tcx.types.i8),
38-
("NonZeroI16", tcx.types.i16),
39-
("NonZeroI32", tcx.types.i32),
40-
("NonZeroI64", tcx.types.i64),
41-
("NonZeroI128", tcx.types.i128),
42-
("NonZeroIsize", tcx.types.isize),
43-
];
44-
4529
let int_type = substs.type_at(0);
46-
47-
let Some(nonzero_alias) = coercible_types.iter().find_map(|(nonzero_alias, t)| {
48-
if *t == int_type && *t == from_ty {
49-
Some(nonzero_alias)
50-
} else {
51-
None
52-
}
53-
}) else {
54-
return false;
55-
};
30+
if from_ty != int_type {
31+
return false;
32+
}
5633

5734
span_lint_and_then(
5835
cx,
5936
TRANSMUTE_INT_TO_NON_ZERO,
6037
e.span,
61-
format!("transmute from a `{from_ty}` to a `{nonzero_alias}`"),
38+
format!("transmute from a `{from_ty}` to a `{to_ty}`"),
6239
|diag| {
6340
let arg = sugg::Sugg::hir(cx, arg, "..");
6441
diag.span_suggestion(
6542
e.span,
6643
"consider using",
67-
format!("{nonzero_alias}::{}({arg})", sym::new_unchecked),
44+
format!("{}::{}({arg})", sym::NonZero, sym::new_unchecked),
6845
Applicability::Unspecified,
6946
);
7047
},

src/tools/clippy/tests/ui/transmute_int_to_non_zero.fixed

+20-20
Original file line numberDiff line numberDiff line change
@@ -16,38 +16,38 @@ fn main() {
1616
let int_i64: i64 = 1;
1717
let int_i128: i128 = 1;
1818

19-
let _: NonZeroU8 = unsafe { NonZeroU8::new_unchecked(int_u8) };
19+
let _: NonZero<u8> = unsafe { NonZero::new_unchecked(int_u8) };
2020
//~^ ERROR: transmute from a `u8` to a `NonZeroU8`
2121
//~| NOTE: `-D clippy::transmute-int-to-non-zero` implied by `-D warnings`
22-
let _: NonZeroU16 = unsafe { NonZeroU16::new_unchecked(int_u16) };
22+
let _: NonZero<u16> = unsafe { NonZero::new_unchecked(int_u16) };
2323
//~^ ERROR: transmute from a `u16` to a `NonZeroU16`
24-
let _: NonZeroU32 = unsafe { NonZeroU32::new_unchecked(int_u32) };
24+
let _: NonZero<u32> = unsafe { NonZero::new_unchecked(int_u32) };
2525
//~^ ERROR: transmute from a `u32` to a `NonZeroU32`
26-
let _: NonZeroU64 = unsafe { NonZeroU64::new_unchecked(int_u64) };
26+
let _: NonZero<u64> = unsafe { NonZero::new_unchecked(int_u64) };
2727
//~^ ERROR: transmute from a `u64` to a `NonZeroU64`
28-
let _: NonZeroU128 = unsafe { NonZeroU128::new_unchecked(int_u128) };
28+
let _: NonZero<u128> = unsafe { NonZero::new_unchecked(int_u128) };
2929
//~^ ERROR: transmute from a `u128` to a `NonZeroU128`
3030

31-
let _: NonZeroI8 = unsafe { NonZeroI8::new_unchecked(int_i8) };
31+
let _: NonZero<i8> = unsafe { NonZero::new_unchecked(int_i8) };
3232
//~^ ERROR: transmute from a `i8` to a `NonZeroI8`
33-
let _: NonZeroI16 = unsafe { NonZeroI16::new_unchecked(int_i16) };
33+
let _: NonZero<i16> = unsafe { NonZero::new_unchecked(int_i16) };
3434
//~^ ERROR: transmute from a `i16` to a `NonZeroI16`
35-
let _: NonZeroI32 = unsafe { NonZeroI32::new_unchecked(int_i32) };
35+
let _: NonZero<i32> = unsafe { NonZero::new_unchecked(int_i32) };
3636
//~^ ERROR: transmute from a `i32` to a `NonZeroI32`
37-
let _: NonZeroI64 = unsafe { NonZeroI64::new_unchecked(int_i64) };
37+
let _: NonZero<i64> = unsafe { NonZero::new_unchecked(int_i64) };
3838
//~^ ERROR: transmute from a `i64` to a `NonZeroI64`
39-
let _: NonZeroI128 = unsafe { NonZeroI128::new_unchecked(int_i128) };
39+
let _: NonZero<i128> = unsafe { NonZero::new_unchecked(int_i128) };
4040
//~^ ERROR: transmute from a `i128` to a `NonZeroI128`
4141

42-
let _: NonZeroU8 = unsafe { NonZeroU8::new_unchecked(int_u8) };
43-
let _: NonZeroU16 = unsafe { NonZeroU16::new_unchecked(int_u16) };
44-
let _: NonZeroU32 = unsafe { NonZeroU32::new_unchecked(int_u32) };
45-
let _: NonZeroU64 = unsafe { NonZeroU64::new_unchecked(int_u64) };
46-
let _: NonZeroU128 = unsafe { NonZeroU128::new_unchecked(int_u128) };
42+
let _: NonZero<u8> = unsafe { NonZero::new_unchecked(int_u8) };
43+
let _: NonZero<u16> = unsafe { NonZero::new_unchecked(int_u16) };
44+
let _: NonZero<u32> = unsafe { NonZero::new_unchecked(int_u32) };
45+
let _: NonZero<u64> = unsafe { NonZero::new_unchecked(int_u64) };
46+
let _: NonZero<u128> = unsafe { NonZero::new_unchecked(int_u128) };
4747

48-
let _: NonZeroI8 = unsafe { NonZeroI8::new_unchecked(int_i8) };
49-
let _: NonZeroI16 = unsafe { NonZeroI16::new_unchecked(int_i16) };
50-
let _: NonZeroI32 = unsafe { NonZeroI32::new_unchecked(int_i32) };
51-
let _: NonZeroI64 = unsafe { NonZeroI64::new_unchecked(int_i64) };
52-
let _: NonZeroI128 = unsafe { NonZeroI128::new_unchecked(int_i128) };
48+
let _: NonZero<i8> = unsafe { NonZe::new_unchecked(int_i8) };
49+
let _: NonZero<i16> = unsafe { NonZer::new_unchecked(int_i16) };
50+
let _: NonZero<i32> = unsafe { NonZer::new_unchecked(int_i32) };
51+
let _: NonZero<i64> = unsafe { NonZer::new_unchecked(int_i64) };
52+
let _: NonZero<i128> = unsafe { NonZero::new_unchecked(int_i128) };
5353
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#![warn(clippy::transmute_int_to_non_zero)]
22
#![allow(clippy::missing_transmute_annotations)]
33

4-
use core::num::*;
4+
use core::num::NonZero;
55

66
fn main() {
77
let int_u8: u8 = 1;
@@ -16,38 +16,38 @@ fn main() {
1616
let int_i64: i64 = 1;
1717
let int_i128: i128 = 1;
1818

19-
let _: NonZeroU8 = unsafe { std::mem::transmute(int_u8) };
20-
//~^ ERROR: transmute from a `u8` to a `NonZeroU8`
19+
let _: NonZero<u8> = unsafe { std::mem::transmute(int_u8) };
20+
//~^ ERROR: transmute from a `u8` to a `NonZero<u8>`
2121
//~| NOTE: `-D clippy::transmute-int-to-non-zero` implied by `-D warnings`
22-
let _: NonZeroU16 = unsafe { std::mem::transmute(int_u16) };
23-
//~^ ERROR: transmute from a `u16` to a `NonZeroU16`
24-
let _: NonZeroU32 = unsafe { std::mem::transmute(int_u32) };
25-
//~^ ERROR: transmute from a `u32` to a `NonZeroU32`
26-
let _: NonZeroU64 = unsafe { std::mem::transmute(int_u64) };
27-
//~^ ERROR: transmute from a `u64` to a `NonZeroU64`
28-
let _: NonZeroU128 = unsafe { std::mem::transmute(int_u128) };
29-
//~^ ERROR: transmute from a `u128` to a `NonZeroU128`
22+
let _: NonZero<u16> = unsafe { std::mem::transmute(int_u16) };
23+
//~^ ERROR: transmute from a `u16` to a `NonZero<u16>`
24+
let _: NonZero<u32> = unsafe { std::mem::transmute(int_u32) };
25+
//~^ ERROR: transmute from a `u32` to a `NonZero<u32>`
26+
let _: NonZero<u64> = unsafe { std::mem::transmute(int_u64) };
27+
//~^ ERROR: transmute from a `u64` to a `NonZero<u64>`
28+
let _: NonZero<u128> = unsafe { std::mem::transmute(int_u128) };
29+
//~^ ERROR: transmute from a `u128` to a `NonZero<u128>`
3030

31-
let _: NonZeroI8 = unsafe { std::mem::transmute(int_i8) };
32-
//~^ ERROR: transmute from a `i8` to a `NonZeroI8`
33-
let _: NonZeroI16 = unsafe { std::mem::transmute(int_i16) };
34-
//~^ ERROR: transmute from a `i16` to a `NonZeroI16`
35-
let _: NonZeroI32 = unsafe { std::mem::transmute(int_i32) };
36-
//~^ ERROR: transmute from a `i32` to a `NonZeroI32`
37-
let _: NonZeroI64 = unsafe { std::mem::transmute(int_i64) };
38-
//~^ ERROR: transmute from a `i64` to a `NonZeroI64`
39-
let _: NonZeroI128 = unsafe { std::mem::transmute(int_i128) };
40-
//~^ ERROR: transmute from a `i128` to a `NonZeroI128`
31+
let _: NonZero<i8> = unsafe { std::mem::transmute(int_i8) };
32+
//~^ ERROR: transmute from a `i8` to a `NonZero<i8>`
33+
let _: NonZero<i16> = unsafe { std::mem::transmute(int_i16) };
34+
//~^ ERROR: transmute from a `i16` to a `NonZero<i16>`
35+
let _: NonZero<i32> = unsafe { std::mem::transmute(int_i32) };
36+
//~^ ERROR: transmute from a `i32` to a `NonZero<i32>`
37+
let _: NonZero<i64> = unsafe { std::mem::transmute(int_i64) };
38+
//~^ ERROR: transmute from a `i64` to a `NonZero<i64>`
39+
let _: NonZero<i128> = unsafe { std::mem::transmute(int_i128) };
40+
//~^ ERROR: transmute from a `i128` to a `NonZero<i128>`
4141

42-
let _: NonZeroU8 = unsafe { NonZeroU8::new_unchecked(int_u8) };
43-
let _: NonZeroU16 = unsafe { NonZeroU16::new_unchecked(int_u16) };
44-
let _: NonZeroU32 = unsafe { NonZeroU32::new_unchecked(int_u32) };
45-
let _: NonZeroU64 = unsafe { NonZeroU64::new_unchecked(int_u64) };
46-
let _: NonZeroU128 = unsafe { NonZeroU128::new_unchecked(int_u128) };
42+
let _: NonZero<u8> = unsafe { NonZero::new_unchecked(int_u8) };
43+
let _: NonZero<u16> = unsafe { NonZero::new_unchecked(int_u16) };
44+
let _: NonZero<u32> = unsafe { NonZero::new_unchecked(int_u32) };
45+
let _: NonZero<u64> = unsafe { NonZero::new_unchecked(int_u64) };
46+
let _: NonZero<u128> = unsafe { NonZero::new_unchecked(int_u128) };
4747

48-
let _: NonZeroI8 = unsafe { NonZeroI8::new_unchecked(int_i8) };
49-
let _: NonZeroI16 = unsafe { NonZeroI16::new_unchecked(int_i16) };
50-
let _: NonZeroI32 = unsafe { NonZeroI32::new_unchecked(int_i32) };
51-
let _: NonZeroI64 = unsafe { NonZeroI64::new_unchecked(int_i64) };
52-
let _: NonZeroI128 = unsafe { NonZeroI128::new_unchecked(int_i128) };
48+
let _: NonZero<i8> = unsafe { NonZero::new_unchecked(int_i8) };
49+
let _: NonZero<i16> = unsafe { NonZero::new_unchecked(int_i16) };
50+
let _: NonZero<i32> = unsafe { NonZero::new_unchecked(int_i32) };
51+
let _: NonZero<i64> = unsafe { NonZero::new_unchecked(int_i64) };
52+
let _: NonZero<i128> = unsafe { NonZero::new_unchecked(int_i128) };
5353
}

0 commit comments

Comments
 (0)