git.delta.rocks / unique-network / refs/commits / aea07737fd8a

difftreelog

Merge pull request #806 from UniqueNetwork/fix/macro_check_enum_fields

Yaroslav Bolyukin2022-12-23parents: #d6d6d43 #3e69aff.patch.diff
in: master

2 files changed

modifiedcrates/evm-coder/procedural/src/abi_derive/derive_enum.rsdiffbeforeafterboth
143 )143 )
144}144}
145145
146pub fn check_and_count_options(de: &syn::DataEnum) -> syn::Result<usize> {146pub fn check_enum_fields(de: &syn::DataEnum) -> syn::Result<()> {
147 let mut count = 0;
148 for v in de.variants.iter() {147 for v in de.variants.iter() {
149 if !v.fields.is_empty() {148 if !v.fields.is_empty() {
150 return Err(syn::Error::new(149 return Err(syn::Error::new(
156 v.ident.span(),155 v.ident.span(),
157 "Enumeration options should not have an explicit specified value",156 "Enumeration options should not have an explicit specified value",
158 ));157 ));
159 } else {158 }
160 count += 1;
161 }
162 }159 }
163160
164 Ok(count)161 Ok(())
165}162}
166163
167pub fn check_repr_u8(name: &syn::Ident, attrs: &[syn::Attribute]) -> syn::Result<()> {164pub fn check_repr_u8(name: &syn::Ident, attrs: &[syn::Attribute]) -> syn::Result<()> {
modifiedcrates/evm-coder/procedural/src/abi_derive/mod.rsdiffbeforeafterboth
70) -> syn::Result<proc_macro2::TokenStream> {70) -> syn::Result<proc_macro2::TokenStream> {
71 let name = &ast.ident;71 let name = &ast.ident;
72 check_repr_u8(name, &ast.attrs)?;72 check_repr_u8(name, &ast.attrs)?;
73 check_enum_fields(de)?;
73 let docs = extract_docs(&ast.attrs)?;74 let docs = extract_docs(&ast.attrs)?;
74 let enum_options = de.variants.iter();75 let enum_options = de.variants.iter();
7576