summaryrefslogtreecommitdiff
path: root/src/codegen/mod.rs
diff options
context:
space:
mode:
authorOliver Geller <oliver.geller@rochester.edu>2017-10-04 14:07:24 -0400
committerOliver Geller <oliver.geller@rochester.edu>2017-10-04 17:05:54 -0400
commita1ee87f02764eed3b87d452178547cca9df0aa58 (patch)
tree71ec62986d307f0c74840e966bc42ccbf19ea5c9 /src/codegen/mod.rs
parent4e74c3926154174856542f172ed81169420b62ba (diff)
Remove early anonymous bitfield filtering and consolidate name method
Diffstat (limited to 'src/codegen/mod.rs')
-rw-r--r--src/codegen/mod.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs
index 9ccd79c1..5e4bb5fe 100644
--- a/src/codegen/mod.rs
+++ b/src/codegen/mod.rs
@@ -1185,6 +1185,10 @@ impl<'a> FieldCodegen<'a> for BitfieldUnit {
let mut ctor_impl = quote! { 0 };
for bf in self.bitfields() {
+ // Codegen not allowed for anonymous bitfields
+ if bf.name().is_none() {
+ continue;
+ }
bf.codegen(
ctx,
fields_should_be_private,
@@ -1198,7 +1202,7 @@ impl<'a> FieldCodegen<'a> for BitfieldUnit {
(&unit_field_name, unit_field_int_ty.clone()),
);
- let param_name = bitfield_getter_name(ctx, parent, bf.name());
+ let param_name = bitfield_getter_name(ctx, parent, bf.name().unwrap());
let bitfield_ty_item = ctx.resolve_item(bf.ty());
let bitfield_ty = bitfield_ty_item.expect_type();
let bitfield_ty =
@@ -1307,9 +1311,11 @@ impl<'a> FieldCodegen<'a> for Bitfield {
F: Extend<quote::Tokens>,
M: Extend<quote::Tokens>,
{
+ // Should never be called with name() as None, as codegen can't be done
+ // on an anonymous bitfield
let prefix = ctx.trait_prefix();
- let getter_name = bitfield_getter_name(ctx, parent, self.name());
- let setter_name = bitfield_setter_name(ctx, parent, self.name());
+ let getter_name = bitfield_getter_name(ctx, parent, self.name().unwrap());
+ let setter_name = bitfield_setter_name(ctx, parent, self.name().unwrap());
let unit_field_ident = quote::Ident::new(unit_field_name);
let bitfield_ty_item = ctx.resolve_item(self.ty());