--- a/crates/evm-coder-macros/src/solidity_interface.rs +++ b/crates/evm-coder-macros/src/solidity_interface.rs @@ -801,6 +801,7 @@ let generics = self.generics; let gen_ref = generics_reference(&generics); let gen_data = generics_data(&generics); + let gen_where = &generics.where_clause; let call_sub = self .info @@ -956,7 +957,9 @@ return Ok(None); } } - impl #generics ::evm_coder::Weighted for #call_name #gen_ref { + impl #generics ::evm_coder::Weighted for #call_name #gen_ref + #gen_where + { #[allow(unused_variables)] fn weight(&self) -> ::evm_coder::execution::DispatchInfo { match self { @@ -971,7 +974,9 @@ } } } - impl #generics ::evm_coder::Callable<#call_name #gen_ref> for #name { + impl #generics ::evm_coder::Callable<#call_name #gen_ref> for #name + #gen_where + { #[allow(unreachable_code)] // In case of no inner calls fn call(&mut self, c: Msg<#call_name #gen_ref>) -> ::evm_coder::execution::ResultWithPostInfo<::evm_coder::abi::AbiWriter> { use ::evm_coder::abi::AbiWrite; --- a/crates/evm-coder/tests/generics.rs +++ b/crates/evm-coder/tests/generics.rs @@ -34,3 +34,15 @@ } generate_stubgen!(gen_iface, GenericCall<()>, false); + +#[solidity_interface(name = "GenericWhere")] +impl Generic +where + T: core::fmt::Debug, +{ + fn test_3(&self) -> Result { + todo!() + } +} + +generate_stubgen!(gen_where_iface, GenericWhereCall<()>, false);