Preserve the original discriminant Expr
diff --git a/syntax/mod.rs b/syntax/mod.rs
index c109229..e1402a0 100644
--- a/syntax/mod.rs
+++ b/syntax/mod.rs
@@ -23,7 +23,7 @@
use proc_macro2::{Ident, Span};
use syn::punctuated::Punctuated;
use syn::token::{Brace, Bracket, Paren};
-use syn::{Lifetime, LitStr, Token, Type as RustType};
+use syn::{Expr, Lifetime, LitStr, Token, Type as RustType};
pub use self::atom::Atom;
pub use self::derive::Derive;
@@ -109,6 +109,7 @@
pub struct Variant {
pub ident: Ident,
pub discriminant: Discriminant,
+ pub expr: Option<Expr>,
}
pub enum Type {
diff --git a/syntax/parse.rs b/syntax/parse.rs
index eff14c0..3ca63ab 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -126,9 +126,11 @@
Ok(discriminant) => discriminant,
Err(err) => return Err(Error::new_spanned(variant, err)),
};
+ let expr = variant.discriminant.map(|(_, expr)| expr);
variants.push(Variant {
ident: variant.ident,
discriminant,
+ expr,
});
}