Skip to content

Commit 4eccd3c

Browse files
committed
more test cases for zero length array and incomplete array
1 parent 0958c7d commit 4eccd3c

File tree

2 files changed

+56
-2
lines changed

2 files changed

+56
-2
lines changed

tests/expectations/tests/class.rs

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,49 @@ impl <T> ::std::fmt::Debug for __BindgenUnionField<T> {
5353
pub struct C {
5454
pub a: ::std::os::raw::c_int,
5555
pub big_array: [::std::os::raw::c_char; 33usize],
56-
pub zero_length_array: __IncompleteArrayField<::std::os::raw::c_char>,
57-
pub incomplete_array: __IncompleteArrayField<::std::os::raw::c_char>,
5856
}
5957
#[test]
6058
fn bindgen_test_layout_C() {
6159
assert_eq!(::std::mem::size_of::<C>() , 40usize);
6260
assert_eq!(::std::mem::align_of::<C>() , 4usize);
6361
}
6462
#[repr(C)]
63+
pub struct C_with_zero_length_array {
64+
pub a: ::std::os::raw::c_int,
65+
pub big_array: [::std::os::raw::c_char; 33usize],
66+
pub zero_length_array: __IncompleteArrayField<::std::os::raw::c_char>,
67+
}
68+
#[test]
69+
fn bindgen_test_layout_C_with_zero_length_array() {
70+
assert_eq!(::std::mem::size_of::<C_with_zero_length_array>() , 40usize);
71+
assert_eq!(::std::mem::align_of::<C_with_zero_length_array>() , 4usize);
72+
}
73+
#[repr(C)]
74+
pub struct C_with_incomplete_array {
75+
pub a: ::std::os::raw::c_int,
76+
pub big_array: [::std::os::raw::c_char; 33usize],
77+
pub incomplete_array: __IncompleteArrayField<::std::os::raw::c_char>,
78+
}
79+
#[test]
80+
fn bindgen_test_layout_C_with_incomplete_array() {
81+
assert_eq!(::std::mem::size_of::<C_with_incomplete_array>() , 40usize);
82+
assert_eq!(::std::mem::align_of::<C_with_incomplete_array>() , 4usize);
83+
}
84+
#[repr(C)]
85+
pub struct C_with_zero_length_array_and_incomplete_array {
86+
pub a: ::std::os::raw::c_int,
87+
pub big_array: [::std::os::raw::c_char; 33usize],
88+
pub zero_length_array: __IncompleteArrayField<::std::os::raw::c_char>,
89+
pub incomplete_array: __IncompleteArrayField<::std::os::raw::c_char>,
90+
}
91+
#[test]
92+
fn bindgen_test_layout_C_with_zero_length_array_and_incomplete_array() {
93+
assert_eq!(::std::mem::size_of::<C_with_zero_length_array_and_incomplete_array>()
94+
, 40usize);
95+
assert_eq!(::std::mem::align_of::<C_with_zero_length_array_and_incomplete_array>()
96+
, 4usize);
97+
}
98+
#[repr(C)]
6599
#[derive(Debug)]
66100
pub struct WithDtor {
67101
pub b: ::std::os::raw::c_int,

tests/headers/class.hpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,26 @@ class C {
22
int a;
33
// More than rust limits (32)
44
char big_array[33];
5+
};
6+
7+
class C_with_zero_length_array {
8+
int a;
9+
// More than rust limits (32)
10+
char big_array[33];
11+
char zero_length_array[0];
12+
};
13+
14+
class C_with_incomplete_array {
15+
int a;
16+
// More than rust limits (32)
17+
char big_array[33];
18+
char incomplete_array[];
19+
};
20+
21+
class C_with_zero_length_array_and_incomplete_array {
22+
int a;
23+
// More than rust limits (32)
24+
char big_array[33];
525
char zero_length_array[0];
626
char incomplete_array[];
727
};

0 commit comments

Comments
 (0)