summaryrefslogtreecommitdiff
path: root/tests/expectations/tests/struct_with_anon_union.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/expectations/tests/struct_with_anon_union.rs')
-rw-r--r--tests/expectations/tests/struct_with_anon_union.rs41
1 files changed, 30 insertions, 11 deletions
diff --git a/tests/expectations/tests/struct_with_anon_union.rs b/tests/expectations/tests/struct_with_anon_union.rs
index eeb36756..5984ba6e 100644
--- a/tests/expectations/tests/struct_with_anon_union.rs
+++ b/tests/expectations/tests/struct_with_anon_union.rs
@@ -5,15 +5,40 @@
#[repr(C)]
-#[derive(Copy)]
+pub struct __BindgenUnionField<T>(::std::marker::PhantomData<T>);
+impl <T> __BindgenUnionField<T> {
+ #[inline]
+ pub fn new() -> Self { __BindgenUnionField(::std::marker::PhantomData) }
+ #[inline]
+ pub unsafe fn as_ref(&self) -> &T { ::std::mem::transmute(self) }
+ #[inline]
+ pub unsafe fn as_mut(&mut self) -> &mut T { ::std::mem::transmute(self) }
+}
+impl <T> ::std::default::Default for __BindgenUnionField<T> {
+ #[inline]
+ fn default() -> Self { Self::new() }
+}
+impl <T> ::std::clone::Clone for __BindgenUnionField<T> {
+ #[inline]
+ fn clone(&self) -> Self { Self::new() }
+}
+impl <T> ::std::marker::Copy for __BindgenUnionField<T> { }
+impl <T> ::std::fmt::Debug for __BindgenUnionField<T> {
+ fn fmt(&self, fmt: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ fmt.write_str("__BindgenUnionField")
+ }
+}
+#[repr(C)]
+#[derive(Debug, Default, Copy)]
pub struct foo {
pub bar: foo__bindgen_ty_1,
}
#[repr(C)]
-#[derive(Copy)]
-pub union foo__bindgen_ty_1 {
- pub a: ::std::os::raw::c_uint,
- pub b: ::std::os::raw::c_ushort,
+#[derive(Debug, Default, Copy)]
+pub struct foo__bindgen_ty_1 {
+ pub a: __BindgenUnionField<::std::os::raw::c_uint>,
+ pub b: __BindgenUnionField<::std::os::raw::c_ushort>,
+ pub bindgen_union_field: u32,
}
#[test]
fn bindgen_test_layout_foo__bindgen_ty_1() {
@@ -35,9 +60,6 @@ fn bindgen_test_layout_foo__bindgen_ty_1() {
impl Clone for foo__bindgen_ty_1 {
fn clone(&self) -> Self { *self }
}
-impl Default for foo__bindgen_ty_1 {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
-}
#[test]
fn bindgen_test_layout_foo() {
assert_eq!(::std::mem::size_of::<foo>() , 4usize , concat ! (
@@ -53,6 +75,3 @@ fn bindgen_test_layout_foo() {
impl Clone for foo {
fn clone(&self) -> Self { *self }
}
-impl Default for foo {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
-}