Parse cxx_name and rust_name attributes on enum variants
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 8429d80..f72253a 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -157,7 +157,7 @@
     let mut variants = Vec::new();
     let mut discriminants = DiscriminantSet::new(repr);
     for variant in item.variants {
-        match parse_variant(variant, &mut discriminants) {
+        match parse_variant(cx, variant, &mut discriminants) {
             Ok(variant) => variants.push(variant),
             Err(err) => cx.push(err),
         }
@@ -194,7 +194,23 @@
     }))
 }
 
-fn parse_variant(variant: RustVariant, discriminants: &mut DiscriminantSet) -> Result<Variant> {
+fn parse_variant(
+    cx: &mut Errors,
+    variant: RustVariant,
+    discriminants: &mut DiscriminantSet,
+) -> Result<Variant> {
+    let mut cxx_name = None;
+    let mut rust_name = None;
+    attrs::parse(
+        cx,
+        &variant.attrs,
+        attrs::Parser {
+            cxx_name: Some(&mut cxx_name),
+            rust_name: Some(&mut rust_name),
+            ..Default::default()
+        },
+    );
+
     match variant.fields {
         Fields::Unit => {}
         _ => {
@@ -213,7 +229,7 @@
         Err(err) => return Err(Error::new_spanned(variant, err)),
     };
 
-    let name = pair(Namespace::ROOT, &variant.ident, None, None);
+    let name = pair(Namespace::ROOT, &variant.ident, cxx_name, rust_name);
     let expr = variant.discriminant.map(|(_, expr)| expr);
 
     Ok(Variant {