diff options
author | Flier Lu <flier.lu@gmail.com> | 2017-01-29 00:00:24 +0800 |
---|---|---|
committer | Flier Lu <flier.lu@gmail.com> | 2017-01-29 00:00:24 +0800 |
commit | 4eccd3cf2d6518ceed42156d76cf054a97360e58 (patch) | |
tree | b11c01869bd3bfe745c67a4bd78eec14de1832ba | |
parent | 0958c7d46ad7e5f9eca21c3bfe5de998559cecde (diff) |
more test cases for zero length array and incomplete array
-rw-r--r-- | tests/expectations/tests/class.rs | 38 | ||||
-rw-r--r-- | tests/headers/class.hpp | 20 |
2 files changed, 56 insertions, 2 deletions
diff --git a/tests/expectations/tests/class.rs b/tests/expectations/tests/class.rs index 3852cc04..1b8235cb 100644 --- a/tests/expectations/tests/class.rs +++ b/tests/expectations/tests/class.rs @@ -53,8 +53,6 @@ impl <T> ::std::fmt::Debug for __BindgenUnionField<T> { pub struct C { pub a: ::std::os::raw::c_int, pub big_array: [::std::os::raw::c_char; 33usize], - pub zero_length_array: __IncompleteArrayField<::std::os::raw::c_char>, - pub incomplete_array: __IncompleteArrayField<::std::os::raw::c_char>, } #[test] fn bindgen_test_layout_C() { @@ -62,6 +60,42 @@ fn bindgen_test_layout_C() { assert_eq!(::std::mem::align_of::<C>() , 4usize); } #[repr(C)] +pub struct C_with_zero_length_array { + pub a: ::std::os::raw::c_int, + pub big_array: [::std::os::raw::c_char; 33usize], + pub zero_length_array: __IncompleteArrayField<::std::os::raw::c_char>, +} +#[test] +fn bindgen_test_layout_C_with_zero_length_array() { + assert_eq!(::std::mem::size_of::<C_with_zero_length_array>() , 40usize); + assert_eq!(::std::mem::align_of::<C_with_zero_length_array>() , 4usize); +} +#[repr(C)] +pub struct C_with_incomplete_array { + pub a: ::std::os::raw::c_int, + pub big_array: [::std::os::raw::c_char; 33usize], + pub incomplete_array: __IncompleteArrayField<::std::os::raw::c_char>, +} +#[test] +fn bindgen_test_layout_C_with_incomplete_array() { + assert_eq!(::std::mem::size_of::<C_with_incomplete_array>() , 40usize); + assert_eq!(::std::mem::align_of::<C_with_incomplete_array>() , 4usize); +} +#[repr(C)] +pub struct C_with_zero_length_array_and_incomplete_array { + pub a: ::std::os::raw::c_int, + pub big_array: [::std::os::raw::c_char; 33usize], + pub zero_length_array: __IncompleteArrayField<::std::os::raw::c_char>, + pub incomplete_array: __IncompleteArrayField<::std::os::raw::c_char>, +} +#[test] +fn bindgen_test_layout_C_with_zero_length_array_and_incomplete_array() { + assert_eq!(::std::mem::size_of::<C_with_zero_length_array_and_incomplete_array>() + , 40usize); + assert_eq!(::std::mem::align_of::<C_with_zero_length_array_and_incomplete_array>() + , 4usize); +} +#[repr(C)] #[derive(Debug)] pub struct WithDtor { pub b: ::std::os::raw::c_int, diff --git a/tests/headers/class.hpp b/tests/headers/class.hpp index 402f8b2b..67ecb37b 100644 --- a/tests/headers/class.hpp +++ b/tests/headers/class.hpp @@ -2,6 +2,26 @@ class C { int a; // More than rust limits (32) char big_array[33]; +}; + +class C_with_zero_length_array { + int a; + // More than rust limits (32) + char big_array[33]; + char zero_length_array[0]; +}; + +class C_with_incomplete_array { + int a; + // More than rust limits (32) + char big_array[33]; + char incomplete_array[]; +}; + +class C_with_zero_length_array_and_incomplete_array { + int a; + // More than rust limits (32) + char big_array[33]; char zero_length_array[0]; char incomplete_array[]; }; |