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,
diff --git a/tests/ui/array_len_expr.stderr b/tests/ui/array_len_expr.stderr
index 2c26ab0..bbd7d11 100644
--- a/tests/ui/array_len_expr.stderr
+++ b/tests/ui/array_len_expr.stderr
@@ -3,3 +3,9 @@
|
4 | arraystr: [String; "13"],
| ^^^^
+
+error: unsupported expression, array length must be an integer literal
+ --> $DIR/array_len_expr.rs:5:28
+ |
+5 | arraysub: [String; 15 - 1],
+ | ^^^^^^