diff --git a/ethers-contract/ethers-contract-abigen/src/contract/methods.rs b/ethers-contract/ethers-contract-abigen/src/contract/methods.rs index 212ebdb8..720d7b1e 100644 --- a/ethers-contract/ethers-contract-abigen/src/contract/methods.rs +++ b/ethers-contract/ethers-contract-abigen/src/contract/methods.rs @@ -342,7 +342,7 @@ impl Context { let mut all_functions = HashMap::new(); for function in self.abi.functions() { all_functions - .entry(function.name.to_lowercase()) + .entry(util::safe_snake_case_ident(&function.name)) .or_insert_with(Vec::new) .push(function); } diff --git a/ethers-contract/tests/abigen.rs b/ethers-contract/tests/abigen.rs index 1aa57525..04570190 100644 --- a/ethers-contract/tests/abigen.rs +++ b/ethers-contract/tests/abigen.rs @@ -427,6 +427,23 @@ fn can_generate_nested_types() { assert_eq!(call, decoded_call); } +#[test] +fn can_handle_different_calls() { + abigen!( + Test, + r#"[ + function fooBar() + function FOO_BAR() + ]"#, + ); + + let (client, _mock) = Provider::mocked(); + let contract = Test::new(Address::default(), Arc::new(client)); + + let _ = contract.fooBar(); + let _ = contract.FOO_BAR(); +} + #[test] fn can_handle_case_sensitive_calls() { abigen!(