git.delta.rocks / unique-network / refs/commits / 3e69aff03c65

difftreelog

fix check enum fields

Trubnikov Sergey2022-12-23parent: #d6d6d43.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
--- a/crates/evm-coder/procedural/src/abi_derive/mod.rs
+++ b/crates/evm-coder/procedural/src/abi_derive/mod.rs
@@ -70,6 +70,7 @@
 ) -> syn::Result<proc_macro2::TokenStream> {
 	let name = &ast.ident;
 	check_repr_u8(name, &ast.attrs)?;
+	check_enum_fields(de)?;
 	let docs = extract_docs(&ast.attrs)?;
 	let enum_options = de.variants.iter();