]> git.lizzy.rs Git - rust.git/blob - src/test/ui/issues/issue-15523-big.rs
Auto merge of #79113 - andjo403:raw_vec_ptr, r=m-ou-se
[rust.git] / src / test / ui / issues / issue-15523-big.rs
1 // run-pass
2 // Issue 15523: derive(PartialOrd) should use the provided
3 // discriminant values for the derived ordering.
4 //
5 // This test is checking corner cases that arise when you have
6 // 64-bit values in the variants.
7
8 #[derive(PartialEq, PartialOrd)]
9 #[repr(u64)]
10 enum Eu64 {
11     Pos2 = 2,
12     PosMax = !0,
13     Pos1 = 1,
14 }
15
16 #[derive(PartialEq, PartialOrd)]
17 #[repr(i64)]
18 enum Ei64 {
19     Pos2 = 2,
20     Neg1 = -1,
21     NegMin = 1 << 63,
22     PosMax = !(1 << 63),
23     Pos1 = 1,
24 }
25
26 fn main() {
27     assert!(Eu64::Pos2 > Eu64::Pos1);
28     assert!(Eu64::Pos2 < Eu64::PosMax);
29     assert!(Eu64::Pos1 < Eu64::PosMax);
30
31
32     assert!(Ei64::Pos2 > Ei64::Pos1);
33     assert!(Ei64::Pos2 > Ei64::Neg1);
34     assert!(Ei64::Pos1 > Ei64::Neg1);
35     assert!(Ei64::Pos2 > Ei64::NegMin);
36     assert!(Ei64::Pos1 > Ei64::NegMin);
37     assert!(Ei64::Pos2 < Ei64::PosMax);
38     assert!(Ei64::Pos1 < Ei64::PosMax);
39 }