Skip to content

Commit 3850f83

Browse files
authored
Use #![feature(const_panic)] to produce better assertion errors (#1165)
1 parent 6252590 commit 3850f83

File tree

4 files changed

+10
-9
lines changed

4 files changed

+10
-9
lines changed

Diff for: crates/core_arch/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
asm,
88
const_fn_union,
99
const_fn_transmute,
10+
const_panic,
1011
custom_inner_attributes,
1112
link_llvm_intrinsics,
1213
platform_intrinsics,

Diff for: crates/core_arch/src/macros.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
pub(crate) struct ValidateConstImm<const IMM: i32, const MIN: i32, const MAX: i32>;
66
impl<const IMM: i32, const MIN: i32, const MAX: i32> ValidateConstImm<IMM, MIN, MAX> {
77
pub(crate) const VALID: () = {
8-
let _ = 1 / ((IMM >= MIN && IMM <= MAX) as usize);
8+
assert!(IMM >= MIN && IMM <= MAX, "IMM value not in expected range");
99
};
1010
}
1111

@@ -71,7 +71,7 @@ macro_rules! static_assert {
7171
struct Validate<const $imm: $ty>();
7272
impl<const $imm: $ty> Validate<$imm> {
7373
const VALID: () = {
74-
let _ = 1 / ($e as usize);
74+
assert!($e, concat!("Assertion failed: ", stringify!($e)));
7575
};
7676
}
7777
let _ = Validate::<$imm>::VALID;

Diff for: crates/core_arch/src/x86/macros.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
pub(crate) struct ValidateConstRound<const IMM: i32>;
66
impl<const IMM: i32> ValidateConstRound<IMM> {
77
pub(crate) const VALID: () = {
8-
let _ = 1 / ((IMM == 4 || IMM == 8 || IMM == 9 || IMM == 10 || IMM == 11) as usize);
8+
assert!(IMM == 4 || IMM == 8 || IMM == 9 || IMM == 10 || IMM == 11, "Invalid IMM value");
99
};
1010
}
1111

@@ -21,7 +21,7 @@ macro_rules! static_assert_rounding {
2121
pub(crate) struct ValidateConstSae<const IMM: i32>;
2222
impl<const IMM: i32> ValidateConstSae<IMM> {
2323
pub(crate) const VALID: () = {
24-
let _ = 1 / ((IMM == 4 || IMM == 8) as usize);
24+
assert!(IMM == 4 || IMM == 8, "Invalid IMM value");
2525
};
2626
}
2727

@@ -37,7 +37,7 @@ macro_rules! static_assert_sae {
3737
pub(crate) struct ValidateConstMantissasSae<const IMM: i32>;
3838
impl<const IMM: i32> ValidateConstMantissasSae<IMM> {
3939
pub(crate) const VALID: () = {
40-
let _ = 1 / ((IMM == 4 || IMM == 8 || IMM == 12) as usize);
40+
assert!(IMM == 4 || IMM == 8 || IMM == 12, "Invalid IMM value");
4141
};
4242
}
4343

@@ -53,7 +53,7 @@ macro_rules! static_assert_mantissas_sae {
5353
pub(crate) struct ValidateConstImmU32<const IMM: u32, const MIN: u32, const MAX: u32>;
5454
impl<const IMM: u32, const MIN: u32, const MAX: u32> ValidateConstImmU32<IMM, MIN, MAX> {
5555
pub(crate) const VALID: () = {
56-
let _ = 1 / ((IMM >= MIN && IMM <= MAX) as usize);
56+
assert!(IMM >= MIN && IMM <= MAX, "IMM value not in expected range");
5757
};
5858
}
5959

@@ -70,7 +70,7 @@ macro_rules! static_assert_imm_u8 {
7070
pub(crate) struct ValidateConstGatherScale<const SCALE: i32>;
7171
impl<const SCALE: i32> ValidateConstGatherScale<SCALE> {
7272
pub(crate) const VALID: () = {
73-
let _ = 1 / ((SCALE == 1 || SCALE == 2 || SCALE == 4 || SCALE == 8) as usize);
73+
assert!(SCALE == 1 || SCALE == 2 || SCALE == 4 || SCALE == 8, "Invalid SCALE value");
7474
};
7575
}
7676

Diff for: crates/core_arch/src/x86_64/macros.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
pub(crate) struct ValidateConstRound<const IMM: i32>;
66
impl<const IMM: i32> ValidateConstRound<IMM> {
77
pub(crate) const VALID: () = {
8-
let _ = 1 / ((IMM == 4 || IMM == 8 || IMM == 9 || IMM == 10 || IMM == 11) as usize);
8+
assert!(IMM == 4 || IMM == 8 || IMM == 9 || IMM == 10 || IMM == 11, "Invalid IMM value");
99
};
1010
}
1111

@@ -21,7 +21,7 @@ macro_rules! static_assert_rounding {
2121
pub(crate) struct ValidateConstSae<const IMM: i32>;
2222
impl<const IMM: i32> ValidateConstSae<IMM> {
2323
pub(crate) const VALID: () = {
24-
let _ = 1 / ((IMM == 4 || IMM == 8) as usize);
24+
assert!(IMM == 4 || IMM == 8, "Invalid IMM value");
2525
};
2626
}
2727

0 commit comments

Comments
 (0)