@@ -29,10 +29,16 @@ extern "C" {
2929 pub fn bar ( foo : Foo < :: std:: os:: raw:: c_int > ) ;
3030}
3131#[ repr( C ) ]
32+ #[ derive( Debug , Copy , Clone ) ]
33+ pub struct mozilla_Foo {
34+ _unused : [ u8 ; 0 ] ,
35+ }
36+ #[ repr( C ) ]
3237#[ derive( Debug , Copy , Hash ) ]
3338pub struct C {
3439 pub mB : B < :: std:: os:: raw:: c_uint > ,
3540 pub mBConstPtr : B < * const :: std:: os:: raw:: c_int > ,
41+ pub mBConstStructPtr : B < * const mozilla_Foo > ,
3642 pub mBConst : B < :: std:: os:: raw:: c_int > ,
3743 pub mBVolatile : B < :: std:: os:: raw:: c_int > ,
3844 pub mBConstBool : B < bool > ,
@@ -41,7 +47,7 @@ pub struct C {
4147}
4248#[ test]
4349fn bindgen_test_layout_C ( ) {
44- assert_eq ! ( :: std:: mem:: size_of:: <C >( ) , 32usize , concat ! (
50+ assert_eq ! ( :: std:: mem:: size_of:: <C >( ) , 40usize , concat ! (
4551 "Size of: " , stringify ! ( C ) ) ) ;
4652 assert_eq ! ( :: std:: mem:: align_of:: <C >( ) , 8usize , concat ! (
4753 "Alignment of " , stringify ! ( C ) ) ) ;
@@ -54,29 +60,34 @@ fn bindgen_test_layout_C() {
5460 } , 8usize , concat ! (
5561 "Alignment of field: " , stringify ! ( C ) , "::" , stringify
5662 ! ( mBConstPtr ) ) ) ;
63+ assert_eq ! ( unsafe {
64+ & ( * ( 0 as * const C ) ) . mBConstStructPtr as * const _ as
65+ usize } , 16usize , concat ! (
66+ "Alignment of field: " , stringify ! ( C ) , "::" , stringify
67+ ! ( mBConstStructPtr ) ) ) ;
5768 assert_eq ! ( unsafe {
5869 & ( * ( 0 as * const C ) ) . mBConst as * const _ as usize } ,
59- 16usize , concat ! (
70+ 24usize , concat ! (
6071 "Alignment of field: " , stringify ! ( C ) , "::" , stringify
6172 ! ( mBConst ) ) ) ;
6273 assert_eq ! ( unsafe {
6374 & ( * ( 0 as * const C ) ) . mBVolatile as * const _ as usize
64- } , 20usize , concat ! (
75+ } , 28usize , concat ! (
6576 "Alignment of field: " , stringify ! ( C ) , "::" , stringify
6677 ! ( mBVolatile ) ) ) ;
6778 assert_eq ! ( unsafe {
6879 & ( * ( 0 as * const C ) ) . mBConstBool as * const _ as usize
69- } , 24usize , concat ! (
80+ } , 32usize , concat ! (
7081 "Alignment of field: " , stringify ! ( C ) , "::" , stringify
7182 ! ( mBConstBool ) ) ) ;
7283 assert_eq ! ( unsafe {
7384 & ( * ( 0 as * const C ) ) . mBConstChar as * const _ as usize
74- } , 26usize , concat ! (
85+ } , 34usize , concat ! (
7586 "Alignment of field: " , stringify ! ( C ) , "::" , stringify
7687 ! ( mBConstChar ) ) ) ;
7788 assert_eq ! ( unsafe {
7889 & ( * ( 0 as * const C ) ) . mBArray as * const _ as usize } ,
79- 28usize , concat ! (
90+ 36usize , concat ! (
8091 "Alignment of field: " , stringify ! ( C ) , "::" , stringify
8192 ! ( mBArray ) ) ) ;
8293}
@@ -331,6 +342,17 @@ fn __bindgen_test_layout_B_open0_ptr_const_int_close0_instantiation() {
331342 B <* const :: std:: os:: raw:: c_int> ) ) ) ;
332343}
333344#[ test]
345+ fn __bindgen_test_layout_B_open0_ptr_const_mozilla__Foo_close0_instantiation ( ) {
346+ assert_eq ! ( :: std:: mem:: size_of:: <B <* const mozilla_Foo>>( ) , 8usize ,
347+ concat ! (
348+ "Size of template specialization: " , stringify ! (
349+ B <* const mozilla_Foo> ) ) ) ;
350+ assert_eq ! ( :: std:: mem:: align_of:: <B <* const mozilla_Foo>>( ) , 8usize ,
351+ concat ! (
352+ "Alignment of template specialization: " , stringify ! (
353+ B <* const mozilla_Foo> ) ) ) ;
354+ }
355+ #[ test]
334356fn __bindgen_test_layout_B_open0_const_int_close0_instantiation ( ) {
335357 assert_eq ! ( :: std:: mem:: size_of:: <B <:: std:: os:: raw:: c_int>>( ) , 4usize ,
336358 concat ! (
0 commit comments