Recover from some enum parsing errors
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 1525fbc..ab5dcc1 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -111,10 +111,8 @@
         match variant.fields {
             Fields::Unit => {}
             _ => {
-                return Err(Error::new_spanned(
-                    variant,
-                    "enums with data are not supported yet",
-                ));
+                cx.error(variant, "enums with data are not supported yet");
+                break;
             }
         }
         let expr = variant.discriminant.as_ref().map(|(_, expr)| expr);
@@ -124,7 +122,10 @@
         };
         let discriminant = match try_discriminant {
             Ok(discriminant) => discriminant,
-            Err(err) => return Err(Error::new_spanned(variant, err)),
+            Err(err) => {
+                cx.error(variant, err);
+                break;
+            }
         };
         let expr = variant.discriminant.map(|(_, expr)| expr);
         variants.push(Variant {
@@ -137,13 +138,15 @@
     let enum_token = item.enum_token;
     let brace_token = item.brace_token;
 
-    let repr = match discriminants.inferred_repr() {
-        Ok(repr) => repr,
+    let mut repr = U8;
+    match discriminants.inferred_repr() {
+        Ok(inferred) => repr = inferred,
         Err(err) => {
             let span = quote_spanned!(brace_token.span=> #enum_token {});
-            return Err(Error::new_spanned(span, err));
+            cx.error(span, err);
+            variants.clear();
         }
-    };
+    }
 
     Ok(Api::Enum(Enum {
         doc,