Disallow shared structs having 0 fields
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 3d35f78..a00f8dd 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -46,26 +46,32 @@
let mut derives = Vec::new();
attrs::parse(&item.attrs, &mut doc, Some(&mut derives))?;
check_reserved_name(&item.ident)?;
- match item.fields {
- Fields::Named(fields) => Ok(Api::Struct(Struct {
- doc,
- derives,
- struct_token: item.struct_token,
- ident: item.ident,
- fields: fields
- .named
- .into_iter()
- .map(|field| {
- Ok(Var {
- ident: field.ident.unwrap(),
- ty: parse_type(&field.ty)?,
- })
+
+ let fields = match item.fields {
+ Fields::Named(fields) => fields,
+ Fields::Unit => return Err(Error::new_spanned(item, "unit structs are not supported")),
+ Fields::Unnamed(_) => {
+ return Err(Error::new_spanned(item, "tuple structs are not supported"))
+ }
+ };
+
+ Ok(Api::Struct(Struct {
+ doc,
+ derives,
+ struct_token: item.struct_token,
+ ident: item.ident,
+ brace_token: fields.brace_token,
+ fields: fields
+ .named
+ .into_iter()
+ .map(|field| {
+ Ok(Var {
+ ident: field.ident.unwrap(),
+ ty: parse_type(&field.ty)?,
})
- .collect::<Result<_>>()?,
- })),
- Fields::Unit => Err(Error::new_spanned(item, "unit structs are not supported")),
- Fields::Unnamed(_) => Err(Error::new_spanned(item, "tuple structs are not supported")),
- }
+ })
+ .collect::<Result<_>>()?,
+ }))
}
fn parse_foreign_mod(foreign_mod: ItemForeignMod) -> Result<Vec<Api>> {