Minor code simplification.

This commit is contained in:
Dan Gohman
2018-08-28 16:24:10 -07:00
parent d2943ec32d
commit c23bfdaa91

View File

@@ -271,23 +271,17 @@ def gen_constructor(sgrp, parent, fmt):
with fmt.indented( with fmt.indented(
'pub fn new({}) -> Self {{'.format(args), '}'): 'pub fn new({}) -> Self {{'.format(args), '}'):
fmt.line('let bvec = builder.state_for("{}");'.format(sgrp.name)) fmt.line('let bvec = builder.state_for("{}");'.format(sgrp.name))
fmt.line('let mut bytes = [0; {}];'.format(sgrp.byte_size()))
fmt.line( fmt.line(
'debug_assert_eq!(bvec.len(), {});'.format(sgrp.settings_size)) 'let mut {} = Self {{ bytes: [0; {}] }};'
with fmt.indented( .format(sgrp.name, sgrp.byte_size()))
'for (i, b) in bvec.iter().enumerate() {', '}'): fmt.line(
fmt.line('bytes[i] = *b;') 'debug_assert_eq!(bvec.len(), {});'
.format(sgrp.settings_size))
# Stop here without predicates. fmt.line(
if len(sgrp.predicate_number) == sgrp.boolean_settings: '{}.bytes[0..{}].copy_from_slice(&bvec);'
fmt.line('Self { bytes }') .format(sgrp.name, sgrp.settings_size))
return
# Now compute the predicates. # Now compute the predicates.
fmt.line(
'let mut {} = Self {{ bytes }};'
.format(sgrp.name))
for pred, number in sgrp.predicate_number.items(): for pred, number in sgrp.predicate_number.items():
# Don't compute our own settings. # Don't compute our own settings.
if number < sgrp.boolean_settings: if number < sgrp.boolean_settings: