difftreelog
Merge pull request #358 from UniqueNetwork/feature/solidity-interface-where-clause
in: master
Support where clause in #[solidity_interface]
2 files changed
crates/evm-coder-macros/src/solidity_interface.rsdiffbeforeafterboth--- 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;
crates/evm-coder/tests/generics.rsdiffbeforeafterboth353536generate_stubgen!(gen_iface, GenericCall<()>, false);36generate_stubgen!(gen_iface, GenericCall<()>, false);3738#[solidity_interface(name = "GenericWhere")]39impl<T> Generic<T>40where41 T: core::fmt::Debug,42{43 fn test_3(&self) -> Result<uint256> {44 todo!()45 }46}4748generate_stubgen!(gen_where_iface, GenericWhereCall<()>, false);3749