feat(codegen): Switch attributes to using using paths not expressions

This commit is contained in:
Erick Tryzelaar
2016-02-21 15:28:25 -08:00
parent 0c35ce0a4f
commit 78cf29d1d1
5 changed files with 95 additions and 104 deletions
+9 -3
View File
@@ -506,7 +506,8 @@ fn deserialize_struct(
&ty,
impl_generics,
fields,
container_attrs
container_attrs,
false,
));
let type_name = container_attrs.deserialize_name_expr();
@@ -762,6 +763,7 @@ fn deserialize_struct_variant(
generics,
fields,
container_attrs,
true,
));
let (visitor_item, visitor_ty, visitor_expr, visitor_generics) = try!(deserialize_visitor(
@@ -926,6 +928,7 @@ fn deserialize_struct_visitor(
generics: &ast::Generics,
fields: &[ast::StructField],
container_attrs: &attr::ContainerAttrs,
is_enum: bool,
) -> Result<(Vec<P<ast::Item>>, ast::Stmt, P<ast::Expr>), Error> {
let field_exprs = fields.iter()
.map(|field| {
@@ -933,7 +936,8 @@ fn deserialize_struct_visitor(
attr::FieldAttrs::from_field(cx,
container_ty,
generics,
field)
field,
is_enum)
);
Ok(field_attrs.deserialize_name_expr())
})
@@ -954,6 +958,7 @@ fn deserialize_struct_visitor(
generics,
fields,
container_attrs,
is_enum,
));
let fields_expr = builder.expr().ref_().slice()
@@ -985,6 +990,7 @@ fn deserialize_map(
generics: &ast::Generics,
fields: &[ast::StructField],
container_attrs: &attr::ContainerAttrs,
is_enum: bool,
) -> Result<P<ast::Expr>, Error> {
// Create the field names for the fields.
let field_names: Vec<ast::Ident> = (0 .. fields.len())
@@ -993,7 +999,7 @@ fn deserialize_map(
let field_attrs: Vec<_> = try!(
fields.iter()
.map(|field| attr::FieldAttrs::from_field(cx, container_ty, generics, field))
.map(|field| attr::FieldAttrs::from_field(cx, container_ty, generics, field, is_enum))
.collect()
);