Allow simultaneous diagnostics on multiple fields of a struct
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 15ee4f2..18809b5 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -89,16 +89,18 @@
}
};
- let fields = named_fields
- .named
- .into_iter()
- .map(|field| {
- Ok(Var {
- ident: field.ident.unwrap(),
- ty: parse_type(&field.ty)?,
- })
- })
- .collect::<Result<_>>()?;
+ let mut fields = Vec::new();
+ for field in named_fields.named {
+ let ident = field.ident.unwrap();
+ let ty = match parse_type(&field.ty) {
+ Ok(ty) => ty,
+ Err(err) => {
+ cx.push(err);
+ continue;
+ }
+ };
+ fields.push(Var { ident, ty });
+ }
Ok(Api::Struct(Struct {
doc,