diff options
Diffstat (limited to 'src/codegen/mod.rs')
-rw-r--r-- | src/codegen/mod.rs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index ca982b6b..6d8e8a9d 100644 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -1152,7 +1152,21 @@ impl<'a> FieldCodegen<'a> for BitfieldUnit { F: Extend<quote::Tokens>, M: Extend<quote::Tokens>, { - let field_ty = helpers::blob(self.layout()); + let field_ty = if parent.is_union() && !parent.can_be_rust_union(ctx) { + let ty = helpers::blob(self.layout()); + if ctx.options().enable_cxx_namespaces { + quote! { + root::__BindgenUnionField<#ty> + } + } else { + quote! { + __BindgenUnionField<#ty> + } + } + } else { + helpers::blob(self.layout()) + }; + let unit_field_name = format!("_bitfield_{}", self.nth()); let unit_field_ident = ctx.rust_ident(&unit_field_name); |