From b354102073379990f2816d24c45290a77aca37ed Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Thu, 28 Jul 2022 20:06:06 +0200 Subject: [PATCH] fix: use fully qualified path for Result (#1527) --- .../ethers-contract-abigen/src/contract/events.rs | 2 +- .../ethers-contract-abigen/src/contract/methods.rs | 4 ++-- .../ethers-contract-derive/src/abi_ty.rs | 8 ++++---- .../ethers-contract-derive/src/abigen.rs | 2 +- ethers-contract/ethers-contract-derive/src/call.rs | 2 +- ethers-contract/ethers-contract-derive/src/codec.rs | 2 +- ethers-contract/ethers-contract-derive/src/event.rs | 2 +- ethers-contract/tests/it/common/derive.rs | 13 +++++++++++++ 8 files changed, 24 insertions(+), 11 deletions(-) diff --git a/ethers-contract/ethers-contract-abigen/src/contract/events.rs b/ethers-contract/ethers-contract-abigen/src/contract/events.rs index d7fb7b5e..9c098635 100644 --- a/ethers-contract/ethers-contract-abigen/src/contract/events.rs +++ b/ethers-contract/ethers-contract-abigen/src/contract/events.rs @@ -77,7 +77,7 @@ impl Context { } impl #ethers_contract::EthLogDecode for #enum_name { - fn decode_log(log: &#ethers_core::abi::RawLog) -> Result + fn decode_log(log: &#ethers_core::abi::RawLog) -> ::std::result::Result where Self: Sized, { diff --git a/ethers-contract/ethers-contract-abigen/src/contract/methods.rs b/ethers-contract/ethers-contract-abigen/src/contract/methods.rs index 912444c7..3894802b 100644 --- a/ethers-contract/ethers-contract-abigen/src/contract/methods.rs +++ b/ethers-contract/ethers-contract-abigen/src/contract/methods.rs @@ -91,7 +91,7 @@ impl Context { /// let msg = greeter_contract.greet().call().await.unwrap(); /// # } /// ``` - pub fn deploy(client: ::std::sync::Arc, constructor_args: T) -> Result<#ethers_contract::builders::ContractDeployer, #ethers_contract::ContractError> { + pub fn deploy(client: ::std::sync::Arc, constructor_args: T) -> ::std::result::Result<#ethers_contract::builders::ContractDeployer, #ethers_contract::ContractError> { let factory = #ethers_contract::ContractFactory::new(#get_abi, #get_bytecode, client); let deployer = factory.deploy(constructor_args)?; let deployer = #ethers_contract::ContractDeployer::new(deployer); @@ -219,7 +219,7 @@ impl Context { } impl #ethers_core::abi::AbiDecode for #enum_name { - fn decode(data: impl AsRef<[u8]>) -> Result { + fn decode(data: impl AsRef<[u8]>) -> ::std::result::Result { #( if let Ok(decoded) = <#struct_names as #ethers_core::abi::AbiDecode>::decode(data.as_ref()) { return Ok(#enum_name::#variant_names(decoded)) diff --git a/ethers-contract/ethers-contract-derive/src/abi_ty.rs b/ethers-contract/ethers-contract-derive/src/abi_ty.rs index 18b43669..442d9d1d 100644 --- a/ethers-contract/ethers-contract-derive/src/abi_ty.rs +++ b/ethers-contract/ethers-contract-derive/src/abi_ty.rs @@ -152,7 +152,7 @@ pub fn derive_tokenizeable_impl(input: &DeriveInput) -> proc_macro2::TokenStream #tokenize_predicates { - fn from_token(token: #core_crate::abi::Token) -> Result where + fn from_token(token: #core_crate::abi::Token) -> ::std::result::Result where Self: Sized { #from_token_impl } @@ -174,7 +174,7 @@ fn tokenize_unit_type(name: &Ident) -> TokenStream { let ethers_core = ethers_core_crate(); quote! { impl #ethers_core::abi::Tokenizable for #name { - fn from_token(token: #ethers_core::abi::Token) -> Result where + fn from_token(token: #ethers_core::abi::Token) -> ::std::result::Result where Self: Sized { if let #ethers_core::abi::Token::Tuple(tokens) = token { if !tokens.is_empty() { @@ -210,7 +210,7 @@ fn tokenize_unit_type(name: &Ident) -> TokenStream { fn tokenize_enum<'a>( enum_name: &Ident, variants: impl Iterator + 'a, -) -> Result { +) -> ::std::result::Result { let ethers_core = ethers_core_crate(); let mut into_tokens = TokenStream::new(); @@ -252,7 +252,7 @@ fn tokenize_enum<'a>( Ok(quote! { impl #ethers_core::abi::Tokenizable for #enum_name { - fn from_token(token: #ethers_core::abi::Token) -> Result where + fn from_token(token: #ethers_core::abi::Token) -> ::std::result::Result where Self: Sized { #from_tokens Err(#ethers_core::abi::InvalidOutputType("Failed to decode all type variants".to_string())) diff --git a/ethers-contract/ethers-contract-derive/src/abigen.rs b/ethers-contract/ethers-contract-derive/src/abigen.rs index f1c47e3b..a91334ed 100644 --- a/ethers-contract/ethers-contract-derive/src/abigen.rs +++ b/ethers-contract/ethers-contract-derive/src/abigen.rs @@ -27,7 +27,7 @@ pub(crate) struct Contracts { } impl Contracts { - pub(crate) fn expand(self) -> Result { + pub(crate) fn expand(self) -> ::std::result::Result { let mut expansions = Vec::with_capacity(self.inner.len()); // expand all contracts diff --git a/ethers-contract/ethers-contract-derive/src/call.rs b/ethers-contract/ethers-contract-derive/src/call.rs index 15f901a0..f86163ed 100644 --- a/ethers-contract/ethers-contract-derive/src/call.rs +++ b/ethers-contract/ethers-contract-derive/src/call.rs @@ -95,7 +95,7 @@ pub fn derive_trait_impls( } impl #core_crate::abi::AbiDecode for #struct_name { - fn decode(bytes: impl AsRef<[u8]>) -> Result { + fn decode(bytes: impl AsRef<[u8]>) -> ::std::result::Result { #decode_impl } } diff --git a/ethers-contract/ethers-contract-derive/src/codec.rs b/ethers-contract/ethers-contract-derive/src/codec.rs index 54a577f2..15472fc2 100644 --- a/ethers-contract/ethers-contract-derive/src/codec.rs +++ b/ethers-contract/ethers-contract-derive/src/codec.rs @@ -12,7 +12,7 @@ pub fn derive_codec_impl(input: &DeriveInput) -> proc_macro2::TokenStream { quote! { impl #core_crate::abi::AbiDecode for #name { - fn decode(bytes: impl AsRef<[u8]>) -> Result { + fn decode(bytes: impl AsRef<[u8]>) -> ::std::result::Result { if let #core_crate::abi::ParamType::Tuple(params) = ::param_type() { let tokens = #core_crate::abi::decode(¶ms, bytes.as_ref())?; Ok(::from_token(#core_crate::abi::Token::Tuple(tokens))?) diff --git a/ethers-contract/ethers-contract-derive/src/event.rs b/ethers-contract/ethers-contract-derive/src/event.rs index 05d02f4f..0e56314f 100644 --- a/ethers-contract/ethers-contract-derive/src/event.rs +++ b/ethers-contract/ethers-contract-derive/src/event.rs @@ -95,7 +95,7 @@ pub(crate) fn derive_eth_event_impl(input: DeriveInput) -> TokenStream { #abi.into() } - fn decode_log(log: &#core_crate::abi::RawLog) -> Result where Self: Sized { + fn decode_log(log: &#core_crate::abi::RawLog) -> ::std::result::Result where Self: Sized { #decode_log_impl } diff --git a/ethers-contract/tests/it/common/derive.rs b/ethers-contract/tests/it/common/derive.rs index d856cbb5..3198cc9e 100644 --- a/ethers-contract/tests/it/common/derive.rs +++ b/ethers-contract/tests/it/common/derive.rs @@ -605,3 +605,16 @@ fn eth_display_works_on_ethers_bytes() { let s = format!("{}", call); assert_eq!(s, "0xaaaaaa"); } + +#[test] +fn can_use_result_name() { + abigen!( + ResultContract, + r#"[ + struct Result {uint256 result;} + result(Result result) (uint256) + ]"#, + ); + + let _call = ResultCall { result: Result { result: U256::zero() } }; +}