summaryrefslogtreecommitdiff
path: root/src/codegen/mod.rs
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <emilio@crisal.io>2021-07-26 00:22:05 +0200
committerEmilio Cobos Álvarez <emilio@crisal.io>2021-07-26 00:22:33 +0200
commit271eeb0782d34942267ceabcf5f1cf118f0f5842 (patch)
tree3bfb13b5ce532e58433899d21de650db337fd60a /src/codegen/mod.rs
parent67140077f65bb5af6eae1b257c91c9f379e56bc2 (diff)
codegen: Don't check large_arrays to generate bitfield ctors because they use the Default trait.
Fixes #2082
Diffstat (limited to 'src/codegen/mod.rs')
-rw-r--r--src/codegen/mod.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs
index d49d3248..0f3337ac 100644
--- a/src/codegen/mod.rs
+++ b/src/codegen/mod.rs
@@ -1502,9 +1502,11 @@ impl<'a> FieldCodegen<'a> for BitfieldUnit {
let mut ctor_impl = quote! {};
// We cannot generate any constructor if the underlying storage can't
- // implement AsRef<[u8]> / AsMut<[u8]> / etc.
- let mut generate_ctor = layout.size <= RUST_DERIVE_IN_ARRAY_LIMIT ||
- ctx.options().rust_features().larger_arrays;
+ // implement AsRef<[u8]> / AsMut<[u8]> / etc, or can't derive Default.
+ //
+ // We don't check `larger_arrays` here because Default does still have
+ // the 32 items limitation.
+ let mut generate_ctor = layout.size <= RUST_DERIVE_IN_ARRAY_LIMIT;
let mut access_spec = !fields_should_be_private;
for bf in self.bitfields() {