Allow enum with undeclared variants as long as it has explicit repr
diff --git a/syntax/check.rs b/syntax/check.rs
index 0e603a6..0e8c469 100644
--- a/syntax/check.rs
+++ b/syntax/check.rs
@@ -221,9 +221,9 @@
 fn check_api_enum(cx: &mut Check, enm: &Enum) {
     check_reserved_name(cx, &enm.name.rust);
 
-    if enm.variants.is_empty() {
+    if enm.variants.is_empty() && !enm.explicit_repr {
         let span = span_for_enum_error(enm);
-        cx.error(span, "enums without any variants are not supported");
+        cx.error(span, "explicit #[repr(...)] is required for enum without any variants");
     }
 }
 
diff --git a/syntax/mod.rs b/syntax/mod.rs
index 2a3790c..475cec1 100644
--- a/syntax/mod.rs
+++ b/syntax/mod.rs
@@ -91,6 +91,7 @@
     pub variants: Vec<Variant>,
     pub repr: Atom,
     pub repr_type: Type,
+    pub explicit_repr: bool,
 }
 
 pub struct ExternFn {
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 25d95e6..38b3dcc 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -170,6 +170,7 @@
     let enum_token = item.enum_token;
     let brace_token = item.brace_token;
 
+    let explicit_repr = repr.is_some();
     let mut repr = U8;
     match discriminants.inferred_repr() {
         Ok(inferred) => repr = inferred,
@@ -191,6 +192,7 @@
         variants,
         repr,
         repr_type,
+        explicit_repr,
     }))
 }