]>
Commit | Line | Data |
---|---|---|
ba9703b0 | 1 | // run-pass |
94222f64 | 2 | // Test a ZST enum whose dicriminant is ~0i128. This caused an ICE when casting to an i32. |
cdc7bbd5 | 3 | #![feature(bench_black_box)] |
1b1a35ee | 4 | use std::hint::black_box; |
ba9703b0 XL |
5 | |
6 | #[derive(Copy, Clone)] | |
7 | enum Nums { | |
8 | NegOne = -1, | |
9 | } | |
10 | ||
11 | const NEG_ONE_I8: i8 = Nums::NegOne as i8; | |
12 | const NEG_ONE_I16: i16 = Nums::NegOne as i16; | |
13 | const NEG_ONE_I32: i32 = Nums::NegOne as i32; | |
14 | const NEG_ONE_I64: i64 = Nums::NegOne as i64; | |
15 | const NEG_ONE_I128: i128 = Nums::NegOne as i128; | |
16 | ||
ba9703b0 XL |
17 | fn test_as_arg(n: Nums) { |
18 | assert_eq!(-1i8, n as i8); | |
19 | assert_eq!(-1i16, n as i16); | |
20 | assert_eq!(-1i32, n as i32); | |
21 | assert_eq!(-1i64, n as i64); | |
22 | assert_eq!(-1i128, n as i128); | |
23 | } | |
24 | ||
25 | fn main() { | |
26 | let kind = Nums::NegOne; | |
27 | assert_eq!(-1i8, kind as i8); | |
28 | assert_eq!(-1i16, kind as i16); | |
29 | assert_eq!(-1i32, kind as i32); | |
30 | assert_eq!(-1i64, kind as i64); | |
31 | assert_eq!(-1i128, kind as i128); | |
32 | ||
1b1a35ee XL |
33 | assert_eq!(-1i8, black_box(kind) as i8); |
34 | assert_eq!(-1i16, black_box(kind) as i16); | |
35 | assert_eq!(-1i32, black_box(kind) as i32); | |
36 | assert_eq!(-1i64, black_box(kind) as i64); | |
37 | assert_eq!(-1i128, black_box(kind) as i128); | |
ba9703b0 XL |
38 | |
39 | test_as_arg(Nums::NegOne); | |
40 | ||
41 | assert_eq!(-1i8, NEG_ONE_I8); | |
42 | assert_eq!(-1i16, NEG_ONE_I16); | |
43 | assert_eq!(-1i32, NEG_ONE_I32); | |
44 | assert_eq!(-1i64, NEG_ONE_I64); | |
45 | assert_eq!(-1i128, NEG_ONE_I128); | |
46 | } |