fix(errors): Report errors on unknown #[serde(...)] attributes

Closes #51, #175, and #187
This commit is contained in:
Erick Tryzelaar
2016-01-18 12:39:46 -08:00
parent bfa2b69193
commit 8df841f048
10 changed files with 365 additions and 202 deletions
+21 -8
View File
@@ -2,16 +2,29 @@ use syntax::ast;
use syntax::ext::base::ExtCtxt;
use aster;
use attr::{FieldAttrs, FieldAttrsBuilder};
use attr;
pub fn struct_field_attrs(
_cx: &ExtCtxt,
cx: &ExtCtxt,
builder: &aster::AstBuilder,
fields: &[ast::StructField],
) -> Vec<FieldAttrs> {
fields.iter()
.map(|field| {
FieldAttrsBuilder::new(builder).field(field).build()
})
.collect()
) -> Result<Vec<attr::FieldAttrs>, ()> {
let mut attrs = vec![];
for field in fields {
let builder = attr::FieldAttrsBuilder::new(cx, builder);
let builder = try!(builder.field(field));
let attr = builder.build();
attrs.push(attr);
}
Ok(attrs)
}
pub fn container_attrs(
cx: &ExtCtxt,
container: &ast::Item,
) -> Result<attr::ContainerAttrs, ()> {
let builder = attr::ContainerAttrsBuilder::new(cx);
let builder = try!(builder.attrs(container.attrs()));
Ok(builder.build())
}