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

difftreelog

misk: improve error report

Trubnikov Sergey2022-11-30parent: #8adc410.patch.diff
in: master

1 file changed

modifiedcrates/evm-coder/procedural/src/abi_derive.rsdiffbeforeafterboth
90 &docs,90 &docs,
91 );91 );
9292
93 let tt = quote! {93 Ok(quote! {
94 #from94 #from
95 #solidity_option95 #solidity_option
96 #can_be_plcaed_in_vec96 #can_be_plcaed_in_vec
99 #abi_write99 #abi_write
100 #solidity_type_name100 #solidity_type_name
101 #solidity_struct_collect101 #solidity_struct_collect
102 };102 })
103
104 println!(
105 "!!!!!!!!!!!!!!!!!!!!!!!!!\n{}\n!!!!!!!!!!!!!!!!!!!!!!!!!",
106 tt
107 );
108
109 Ok(tt)
110}103}
111104
112fn 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;
144140
145 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)