2 #![feature(repr128, core_intrinsics, discriminant_kind)]
3 //~^ WARN the feature `repr128` is incomplete
5 use std::intrinsics::discriminant_value;
6 use std::marker::DiscriminantKind;
11 Staircase = 0x01_02_03_04_05_06_07_08_09_0a_0b_0c_0d_0e_0f,
12 U64Limit = u64::MAX as i128 + 1,
14 BigNegative = i128::MIN,
21 Staircase = 0x01_02_03_04_05_06_07_08_09_0a_0b_0c_0d_0e_0f,
22 U64Limit = u64::MAX as u128 + 1,
26 fn discr<T, U>(v: T, value: U)
28 <T as DiscriminantKind>::Discriminant: PartialEq<U>,
30 assert!(discriminant_value(&v) == value);
34 discr(Signed::Zero, 0);
35 discr(Signed::Staircase, 0x01_02_03_04_05_06_07_08_09_0a_0b_0c_0d_0e_0f);
36 discr(Signed::U64Limit, u64::MAX as i128 + 1);
37 discr(Signed::SmallNegative, -1);
38 discr(Signed::BigNegative, i128::MIN);
39 discr(Signed::Next, i128::MIN + 1);
41 discr(Unsigned::Zero, 0);
42 discr(Unsigned::Staircase, 0x01_02_03_04_05_06_07_08_09_0a_0b_0c_0d_0e_0f);
43 discr(Unsigned::U64Limit, u64::MAX as u128 + 1);
44 discr(Unsigned::Next, u64::MAX as u128 + 2);