@@ -91,19 +91,22 @@ pub fn main() {
91
91
assert_eq ! ( size_of:: <Eint <( ) >>( ) , size_of:: <isize >( ) ) ;
92
92
assert_eq ! ( size_of:: <Euint <( ) >>( ) , size_of:: <usize >( ) ) ;
93
93
94
- assert ! ( size_of:: <Ei8 <& i32 >>( ) > 1 ) ;
95
- assert ! ( size_of:: <Eu8 <& i32 >>( ) > 1 ) ;
96
- assert ! ( size_of:: <Ei16 <& i32 >>( ) > 2 ) ;
97
- assert ! ( size_of:: <Eu16 <& i32 >>( ) > 2 ) ;
98
- assert ! ( size_of:: <Ei32 <& i32 >>( ) > 4 ) ;
99
- assert ! ( size_of:: <Eu32 <& i32 >>( ) > 4 ) ;
100
- assert ! ( size_of:: <Ei64 <& i32 >>( ) > 8 ) ;
101
- assert ! ( size_of:: <Eu64 <& i32 >>( ) > 8 ) ;
102
- assert ! ( size_of:: <Eint <& i32 >>( ) > size_of:: <isize >( ) ) ;
103
- assert ! ( size_of:: <Euint <& i32 >>( ) > size_of:: <usize >( ) ) ;
104
-
105
- assert ! ( size_of:: <EC <& i32 >>( ) > size_of:: <EC <( ) >>( ) ) ;
106
-
94
+ // check that the non-nullable pointer optimization is absent
95
+ let ptrsize = size_of :: < & i32 > ( ) ;
96
+ assert ! ( size_of:: <Ei8 <& i32 >>( ) > ptrsize) ;
97
+ assert ! ( size_of:: <Eu8 <& i32 >>( ) > ptrsize) ;
98
+ assert ! ( size_of:: <Ei16 <& i32 >>( ) > ptrsize) ;
99
+ assert ! ( size_of:: <Eu16 <& i32 >>( ) > ptrsize) ;
100
+ assert ! ( size_of:: <Ei32 <& i32 >>( ) > ptrsize) ;
101
+ assert ! ( size_of:: <Eu32 <& i32 >>( ) > ptrsize) ;
102
+ assert ! ( size_of:: <Ei64 <& i32 >>( ) > ptrsize) ;
103
+ assert ! ( size_of:: <Eu64 <& i32 >>( ) > ptrsize) ;
104
+ assert ! ( size_of:: <Eint <& i32 >>( ) > ptrsize) ;
105
+ assert ! ( size_of:: <Euint <& i32 >>( ) > ptrsize) ;
106
+
107
+ assert ! ( size_of:: <EC <& i32 >>( ) > ptrsize) ;
108
+
109
+ // test that a zero payload does not influence the discriminant
107
110
let zero: & i32 = unsafe { zeroed ( ) } ;
108
111
assert ! ( match Eu8 :: _Some( zero) {
109
112
Eu8 :: _Some( _) => true ,
0 commit comments