mirror of
https://github.com/Sarsoo/csbindgen.git
synced 2024-12-23 06:56:27 +00:00
Added support for enums with negative values
This adds parse and generation support for enums whose discriminant value is a negative number. It's responsibility of the library to have the appropriate "repr" type.
This commit is contained in:
parent
8861b83a97
commit
f7c221774b
@ -314,11 +314,20 @@ pub fn collect_enum(ast: &syn::File, result: &mut Vec<RustEnum>) {
|
||||
for v in &t.variants {
|
||||
let name = v.ident.to_string();
|
||||
let mut value = None;
|
||||
if let Some((_, syn::Expr::Lit(x))) = &v.discriminant {
|
||||
if let syn::Lit::Int(x) = &x.lit {
|
||||
|
||||
match &v.discriminant {
|
||||
Some((_, syn::Expr::Lit(x))) => if let syn::Lit::Int(x) = &x.lit {
|
||||
let digits = x.base10_digits().to_string();
|
||||
value = Some(digits);
|
||||
}
|
||||
Some((_, syn::Expr::Unary(u))) if matches!(u.op, syn::UnOp::Neg(_)) => {
|
||||
if let syn::Expr::Lit(x) = &*u.expr {
|
||||
if let syn::Lit::Int(x) = &x.lit {
|
||||
value = Some(format!("-{}", x.base10_digits()));
|
||||
}
|
||||
}
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
|
||||
fields.push((name, value));
|
||||
|
Loading…
Reference in New Issue
Block a user