difftreelog
misk: improve error report
in: master
1 file changed
crates/evm-coder/procedural/src/abi_derive.rsdiffbeforeafterboth90 &docs,90 &docs,91 );91 );929293 let tt = quote! {93 Ok(quote! {94 #from94 #from95 #solidity_option95 #solidity_option96 #can_be_plcaed_in_vec96 #can_be_plcaed_in_vec99 #abi_write99 #abi_write100 #solidity_type_name100 #solidity_type_name101 #solidity_struct_collect101 #solidity_struct_collect102 };102 })103104 println!(105 "!!!!!!!!!!!!!!!!!!!!!!!!!\n{}\n!!!!!!!!!!!!!!!!!!!!!!!!!",106 tt107 );108109 Ok(tt)110}103}111104112fn impl_solidity_option<'a>(105fn impl_solidity_option<'a>(134 name: &proc_macro2::Ident,127 name: &proc_macro2::Ident,135 enum_options: impl Iterator<Item = &'a syn::Ident>,128 enum_options: impl Iterator<Item = &'a syn::Ident>,136) -> proc_macro2::TokenStream {129) -> proc_macro2::TokenStream {130 let error_str = format!("Value not convertible into enum \"{name}\"");131 let error_str = proc_macro2::Literal::string(&error_str);137 let enum_options = enum_options.enumerate().map(|(i, opt)| {132 let enum_options = enum_options.enumerate().map(|(i, opt)| {138 let n = proc_macro2::Literal::u8_suffixed(i as u8);133 let n = proc_macro2::Literal::u8_suffixed(i as u8);139 quote! {#n => Ok(#name::#opt),}134 quote! {#n => Ok(#name::#opt),}143 type Error = &'static str;139 type Error = &'static str;144140145 fn try_from(value: u8) -> ::core::result::Result<Self, Self::Error> {141 fn try_from(value: u8) -> ::core::result::Result<Self, Self::Error> {146 const err: &'static str = "Not convertible";142 const err: &'static str = #error_str;147 match value {143 match value {148 #(#enum_options)*144 #(#enum_options)*149 _ => Err(err)145 _ => Err(err)