@@ -91,19 +91,22 @@ pub fn main() {
9191 assert_eq ! ( size_of:: <Eint <( ) >>( ) , size_of:: <isize >( ) ) ;
9292 assert_eq ! ( size_of:: <Euint <( ) >>( ) , size_of:: <usize >( ) ) ;
9393
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
107110 let zero: & i32 = unsafe { zeroed ( ) } ;
108111 assert ! ( match Eu8 :: _Some( zero) {
109112 Eu8 :: _Some( _) => true ,
0 commit comments