1
1
// run-pass
2
2
// Test a ZST enum whose dicriminant is ~0i128. This caused an ICE when casting to a i32.
3
+ use std:: hint:: black_box;
3
4
4
5
#[ derive( Copy , Clone ) ]
5
6
enum Nums {
@@ -12,9 +13,6 @@ const NEG_ONE_I32: i32 = Nums::NegOne as i32;
12
13
const NEG_ONE_I64 : i64 = Nums :: NegOne as i64 ;
13
14
const NEG_ONE_I128 : i128 = Nums :: NegOne as i128 ;
14
15
15
- #[ inline( never) ]
16
- fn identity < T > ( t : T ) -> T { t }
17
-
18
16
fn test_as_arg ( n : Nums ) {
19
17
assert_eq ! ( -1i8 , n as i8 ) ;
20
18
assert_eq ! ( -1i16 , n as i16 ) ;
@@ -31,11 +29,11 @@ fn main() {
31
29
assert_eq ! ( -1i64 , kind as i64 ) ;
32
30
assert_eq ! ( -1i128 , kind as i128 ) ;
33
31
34
- assert_eq ! ( -1i8 , identity ( kind) as i8 ) ;
35
- assert_eq ! ( -1i16 , identity ( kind) as i16 ) ;
36
- assert_eq ! ( -1i32 , identity ( kind) as i32 ) ;
37
- assert_eq ! ( -1i64 , identity ( kind) as i64 ) ;
38
- assert_eq ! ( -1i128 , identity ( kind) as i128 ) ;
32
+ assert_eq ! ( -1i8 , black_box ( kind) as i8 ) ;
33
+ assert_eq ! ( -1i16 , black_box ( kind) as i16 ) ;
34
+ assert_eq ! ( -1i32 , black_box ( kind) as i32 ) ;
35
+ assert_eq ! ( -1i64 , black_box ( kind) as i64 ) ;
36
+ assert_eq ! ( -1i128 , black_box ( kind) as i128 ) ;
39
37
40
38
test_as_arg ( Nums :: NegOne ) ;
41
39
0 commit comments