mirror of
https://github.com/mat-1/azalea.git
synced 2024-09-19 22:52:32 +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, .. }) => {
|
||||
let mut match_contents = quote!();
|
||||
let mut variant_discrim: u32 = 0;
|
||||
let mut first = true;
|
||||
for variant in variants {
|
||||
let variant_name = &variant.ident;
|
||||
match &variant.discriminant.as_ref() {
|
||||
|
@ -71,9 +72,13 @@ fn create_impl_mcbufreadable(ident: &Ident, data: &Data) -> proc_macro2::TokenSt
|
|||
}
|
||||
}
|
||||
None => {
|
||||
if first {
|
||||
first = false;
|
||||
} else {
|
||||
variant_discrim += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
let reader = match variant.fields {
|
||||
syn::Fields::Named(_) => {
|
||||
panic!("writing named fields in enums is not supported")
|
||||
|
@ -160,10 +165,12 @@ fn create_impl_mcbufwritable(ident: &Ident, data: &Data) -> proc_macro2::TokenSt
|
|||
let mut is_data_enum = false;
|
||||
let mut match_arms = quote!();
|
||||
let mut variant_discrim: u32 = 0;
|
||||
let mut first = true;
|
||||
for variant in variants {
|
||||
// figure out the discriminant
|
||||
if let Some(discriminant) = &variant.discriminant {
|
||||
variant_discrim = match &discriminant.1 {
|
||||
let variant_name = &variant.ident;
|
||||
match &variant.discriminant.as_ref() {
|
||||
Some(d) => {
|
||||
variant_discrim = match &d.1 {
|
||||
syn::Expr::Lit(e) => match &e.lit {
|
||||
syn::Lit::Int(i) => i.base10_parse().unwrap(),
|
||||
_ => panic!("Error parsing enum discriminant as int"),
|
||||
|
@ -172,15 +179,18 @@ fn create_impl_mcbufwritable(ident: &Ident, data: &Data) -> proc_macro2::TokenSt
|
|||
panic!("Negative enum discriminants are not supported")
|
||||
}
|
||||
_ => {
|
||||
panic!(
|
||||
"Error parsing enum discriminant as literal (is {:?})",
|
||||
discriminant.1
|
||||
)
|
||||
panic!("Error parsing enum discriminant as literal (is {:?})", d.1)
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
None => {
|
||||
if first {
|
||||
first = false;
|
||||
} else {
|
||||
variant_discrim += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
match &variant.fields {
|
||||
syn::Fields::Named(_) => {
|
||||
|
|
|
@ -71,10 +71,4 @@ pub struct Parameters {
|
|||
pub player_suffix: Component,
|
||||
}
|
||||
|
||||
#[derive(McBuf, Copy, Clone, Debug)]
|
||||
pub enum RenderType {
|
||||
Integer,
|
||||
Hearts,
|
||||
}
|
||||
|
||||
type PlayerList = Vec<String>;
|
||||
|
|
Loading…
Reference in a new issue