mirror of
https://github.com/mat-1/azalea.git
synced 2024-09-20 07:02:31 +00:00
fix bad enum macro generation
This commit is contained in:
parent
8fe02ed115
commit
029fa33f55
2 changed files with 28 additions and 24 deletions
|
@ -53,6 +53,7 @@ fn create_impl_mcbufreadable(ident: &Ident, data: &Data) -> proc_macro2::TokenSt
|
||||||
syn::Data::Enum(syn::DataEnum { variants, .. }) => {
|
syn::Data::Enum(syn::DataEnum { variants, .. }) => {
|
||||||
let mut match_contents = quote!();
|
let mut match_contents = quote!();
|
||||||
let mut variant_discrim: u32 = 0;
|
let mut variant_discrim: u32 = 0;
|
||||||
|
let mut first = true;
|
||||||
for variant in variants {
|
for variant in variants {
|
||||||
let variant_name = &variant.ident;
|
let variant_name = &variant.ident;
|
||||||
match &variant.discriminant.as_ref() {
|
match &variant.discriminant.as_ref() {
|
||||||
|
@ -71,7 +72,11 @@ fn create_impl_mcbufreadable(ident: &Ident, data: &Data) -> proc_macro2::TokenSt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
variant_discrim += 1;
|
if first {
|
||||||
|
first = false;
|
||||||
|
} else {
|
||||||
|
variant_discrim += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let reader = match variant.fields {
|
let reader = match variant.fields {
|
||||||
|
@ -160,26 +165,31 @@ fn create_impl_mcbufwritable(ident: &Ident, data: &Data) -> proc_macro2::TokenSt
|
||||||
let mut is_data_enum = false;
|
let mut is_data_enum = false;
|
||||||
let mut match_arms = quote!();
|
let mut match_arms = quote!();
|
||||||
let mut variant_discrim: u32 = 0;
|
let mut variant_discrim: u32 = 0;
|
||||||
|
let mut first = true;
|
||||||
for variant in variants {
|
for variant in variants {
|
||||||
// figure out the discriminant
|
let variant_name = &variant.ident;
|
||||||
if let Some(discriminant) = &variant.discriminant {
|
match &variant.discriminant.as_ref() {
|
||||||
variant_discrim = match &discriminant.1 {
|
Some(d) => {
|
||||||
syn::Expr::Lit(e) => match &e.lit {
|
variant_discrim = match &d.1 {
|
||||||
syn::Lit::Int(i) => i.base10_parse().unwrap(),
|
syn::Expr::Lit(e) => match &e.lit {
|
||||||
_ => panic!("Error parsing enum discriminant as int"),
|
syn::Lit::Int(i) => i.base10_parse().unwrap(),
|
||||||
},
|
_ => panic!("Error parsing enum discriminant as int"),
|
||||||
syn::Expr::Unary(_) => {
|
},
|
||||||
panic!("Negative enum discriminants are not supported")
|
syn::Expr::Unary(_) => {
|
||||||
|
panic!("Negative enum discriminants are not supported")
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
panic!("Error parsing enum discriminant as literal (is {:?})", d.1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_ => {
|
}
|
||||||
panic!(
|
None => {
|
||||||
"Error parsing enum discriminant as literal (is {:?})",
|
if first {
|
||||||
discriminant.1
|
first = false;
|
||||||
)
|
} else {
|
||||||
|
variant_discrim += 1;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
} else {
|
|
||||||
variant_discrim += 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
match &variant.fields {
|
match &variant.fields {
|
||||||
|
|
|
@ -71,10 +71,4 @@ pub struct Parameters {
|
||||||
pub player_suffix: Component,
|
pub player_suffix: Component,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(McBuf, Copy, Clone, Debug)]
|
|
||||||
pub enum RenderType {
|
|
||||||
Integer,
|
|
||||||
Hearts,
|
|
||||||
}
|
|
||||||
|
|
||||||
type PlayerList = Vec<String>;
|
type PlayerList = Vec<String>;
|
||||||
|
|
Loading…
Reference in a new issue