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 {