feat(codegen): Support renames that are different when serializing and deserializing

According to #61, if one uses serde to serialize requests that pass
url-encoded parameters to a server, it might get responses back
with a different capitalization scheme. This patch restores the
behavior implemented in #62.

# Conflicts:
#	serde_codegen/src/attr.rs
#	serde_codegen/src/de.rs
#	serde_tests/tests/test_annotations.rs
This commit is contained in:
Erick Tryzelaar
2016-02-08 10:35:42 -08:00
parent 365e5129af
commit b842164fd8
4 changed files with 220 additions and 34 deletions
+2 -2
View File
@@ -311,7 +311,7 @@ fn serialize_variant(
let type_name = builder.expr().str(type_ident);
let variant_ident = variant.node.name;
let variant_attrs = try!(attr::VariantAttrs::from_variant(cx, variant));
let variant_name = variant_attrs.name_expr();
let variant_name = variant_attrs.serialize_name_expr();
match variant.node.data {
ast::VariantData::Unit(_) => {
@@ -613,7 +613,7 @@ fn serialize_struct_visitor<I>(
.filter(|&(ref field, _)| !field.skip_serializing_field())
.enumerate()
.map(|(i, (ref field, value_expr))| {
let key_expr = field.name_expr();
let key_expr = field.serialize_name_expr();
let stmt = if field.skip_serializing_field_if_empty() {
quote_stmt!(cx, if ($value_expr).is_empty() { continue; })