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>> {
