ensure functions do not clash with event names
This commit is contained in:
parent
5170b7ec9f
commit
c71c46ff56
|
@ -8,11 +8,13 @@ pub(crate) fn imports() -> TokenStream {
|
|||
quote! {
|
||||
// TODO: Can we make this context aware so that it imports either ethers_contract
|
||||
// or ethers::contract?
|
||||
use ethers_contract::{
|
||||
use ethers::{
|
||||
core::{
|
||||
abi::{Abi, Token, Detokenize, InvalidOutputType, Tokenizable},
|
||||
Contract, ContractCall, Event, Lazy,
|
||||
signers::{Client, Signer},
|
||||
types::*, // import all the types so that we can codegen for everything
|
||||
},
|
||||
contract::{Contract, ContractCall, Event, Lazy},
|
||||
signers::{Client, Signer},
|
||||
providers::{JsonRpcClient, networks::Network},
|
||||
};
|
||||
}
|
||||
|
|
|
@ -44,9 +44,13 @@ impl Context {
|
|||
|
||||
/// Expands into a single method for contracting an event stream.
|
||||
fn expand_filter(event: &Event) -> Result<TokenStream> {
|
||||
let name = util::safe_ident(&event.name.to_snake_case());
|
||||
// append `filter` to disambiguate with potentially conflicting
|
||||
// function names
|
||||
let name = util::safe_ident(&format!("{}_filter", event.name.to_snake_case()));
|
||||
// let result = util::ident(&event.name.to_pascal_case());
|
||||
let result = expand_struct_name(event);
|
||||
|
||||
let ev_name = Literal::string(&event.name);
|
||||
let result = util::ident(&event.name.to_pascal_case());
|
||||
|
||||
let doc = util::expand_doc(&format!("Gets the contract's `{}` event", event.name));
|
||||
Ok(quote! {
|
||||
|
@ -139,7 +143,8 @@ fn expand_event(event: &Event, event_derives: &[Path]) -> Result<TokenStream> {
|
|||
|
||||
/// Expands an ABI event into an identifier for its event data type.
|
||||
fn expand_struct_name(event: &Event) -> TokenStream {
|
||||
let event_name = util::ident(&event.name.to_pascal_case());
|
||||
let name = format!("{}Filter", event.name.to_pascal_case());
|
||||
let event_name = util::ident(&name);
|
||||
quote! { #event_name }
|
||||
}
|
||||
|
||||
|
@ -314,7 +319,7 @@ mod tests {
|
|||
|
||||
assert_quote!(expand_filter(&event).unwrap(), {
|
||||
#[doc = "Gets the contract's `Transfer` event"]
|
||||
pub fn transfer<'b>(&'a self) -> Event<'a, 'b, P, N, Transfer>
|
||||
pub fn transfer_filter<'b>(&'a self) -> Event<'a, 'b, P, N, TransferFilter>
|
||||
where
|
||||
'a: 'b,
|
||||
{
|
||||
|
@ -389,12 +394,12 @@ mod tests {
|
|||
let (definition, construction) = expand_data_struct(&name, ¶ms);
|
||||
|
||||
assert_quote!(definition, {
|
||||
struct Foo {
|
||||
struct FooFilter {
|
||||
pub a: bool,
|
||||
pub p1: Address,
|
||||
}
|
||||
});
|
||||
assert_quote!(construction, { Foo { a, p1 } });
|
||||
assert_quote!(construction, { FooFilter { a, p1 } });
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -421,9 +426,9 @@ mod tests {
|
|||
let (definition, construction) = expand_data_tuple(&name, ¶ms);
|
||||
|
||||
assert_quote!(definition, {
|
||||
struct Foo(pub bool, pub Address);
|
||||
struct FooFilter(pub bool, pub Address);
|
||||
});
|
||||
assert_quote!(construction, { Foo(p0, p1) });
|
||||
assert_quote!(construction, { FooFilter(p0, p1) });
|
||||
}
|
||||
|
||||
// #[test]
|
||||
|
|
|
@ -53,7 +53,7 @@ async fn main() -> Result<()> {
|
|||
let _tx_hash = contract.set_value("hi".to_owned()).send().await?;
|
||||
|
||||
// 11. get all events
|
||||
let logs = contract.value_changed().from_block(0u64).query().await?;
|
||||
let logs = contract.value_changed_filter().from_block(0u64).query().await?;
|
||||
|
||||
// 12. get the new value
|
||||
let value = contract.get_value().call().await?;
|
||||
|
|
|
@ -45,7 +45,7 @@ pub mod contract {
|
|||
/// network type and override the provider's ENS address with the `ens` method.
|
||||
///
|
||||
/// ```rust
|
||||
/// use ethers_providers::{HttpProvider, networks::Any};
|
||||
/// use ethers::providers::{HttpProvider, networks::Any};
|
||||
/// use std::convert::TryFrom;
|
||||
/// use tokio::runtime::Runtime;
|
||||
///
|
||||
|
@ -68,7 +68,7 @@ pub mod contract {
|
|||
/// follows:
|
||||
///
|
||||
/// ```rust
|
||||
/// # use ethers_providers::{HttpProvider, networks::Mainnet};
|
||||
/// # use ethers::providers::{HttpProvider, networks::Mainnet};
|
||||
/// # use std::convert::TryFrom;
|
||||
/// # use tokio::runtime::Runtime;
|
||||
/// # let provider = HttpProvider::<Mainnet>::try_from(
|
||||
|
@ -147,7 +147,7 @@ pub mod signers {
|
|||
/// signing the hash of the result.
|
||||
///
|
||||
/// ```rust
|
||||
/// use ethers_core::types::{PrivateKey, Address};
|
||||
/// use ethers::core::types::{PrivateKey, Address};
|
||||
///
|
||||
/// let message = "Some data";
|
||||
/// let key = PrivateKey::new(&mut rand::thread_rng());
|
||||
|
|
Loading…
Reference in New Issue