Remove if !false { ... } from generated serialization code

This commit is contained in:
David Tolnay
2016-09-02 17:22:58 -07:00
parent 248d937f9a
commit 869ebd9e4e
+18 -14
View File
@@ -532,19 +532,21 @@ fn serialize_tuple_struct_visitor(
}; };
let skip = field.attrs.skip_serializing_if() let skip = field.attrs.skip_serializing_if()
.map(|path| quote_expr!(cx, $path($field_expr))) .map(|path| quote_expr!(cx, $path($field_expr)));
.unwrap_or(quote_expr!(cx, false));
if let Some(path) = field.attrs.serialize_with() { if let Some(path) = field.attrs.serialize_with() {
field_expr = wrap_serialize_with(cx, builder, field_expr = wrap_serialize_with(cx, builder,
&structure_ty, generics, &field.ty, path, field_expr); &structure_ty, generics, &field.ty, path, field_expr);
} }
quote_stmt!(cx, let ser = quote_stmt!(cx,
if !$skip { try!(_serializer.$func(&mut state, $field_expr));
try!(_serializer.$func(&mut state, $field_expr)); ).unwrap();
}
).unwrap() match skip {
None => ser,
Some(skip) => quote_stmt!(cx, if !$skip { $ser }).unwrap(),
}
}) })
.collect() .collect()
} }
@@ -571,19 +573,21 @@ fn serialize_struct_visitor(
let key_expr = name_expr(builder, field.attrs.name()); let key_expr = name_expr(builder, field.attrs.name());
let skip = field.attrs.skip_serializing_if() let skip = field.attrs.skip_serializing_if()
.map(|path| quote_expr!(cx, $path($field_expr))) .map(|path| quote_expr!(cx, $path($field_expr)));
.unwrap_or(quote_expr!(cx, false));
if let Some(path) = field.attrs.serialize_with() { if let Some(path) = field.attrs.serialize_with() {
field_expr = wrap_serialize_with(cx, builder, field_expr = wrap_serialize_with(cx, builder,
&structure_ty, generics, &field.ty, path, field_expr) &structure_ty, generics, &field.ty, path, field_expr)
} }
quote_stmt!(cx, let ser = quote_stmt!(cx,
if !$skip { try!(_serializer.$func(&mut state, $key_expr, $field_expr));
try!(_serializer.$func(&mut state, $key_expr, $field_expr)); ).unwrap();
}
).unwrap() match skip {
None => ser,
Some(skip) => quote_stmt!(cx, if !$skip { $ser }).unwrap(),
}
}) })
.collect() .collect()
} }