fix(abigen): safe ident field names (#989)
This commit is contained in:
parent
88262de9ee
commit
46d7afd65b
|
@ -50,6 +50,13 @@
|
|||
|
||||
## ethers-contract-abigen
|
||||
|
||||
### Unreleased
|
||||
|
||||
- Generate correct bindings of struct's field names that are reserved words
|
||||
[#989](https://github.com/gakonst/ethers-rs/pull/989).
|
||||
|
||||
### 0.6.0
|
||||
|
||||
- Add `MultiAbigen` to generate a series of contract bindings that can be kept in the repo
|
||||
[#724](https://github.com/gakonst/ethers-rs/pull/724).
|
||||
- Add provided `event_derives` to call and event enums as well
|
||||
|
|
|
@ -107,7 +107,7 @@ impl Context {
|
|||
if is_tuple {
|
||||
fields.push(ty);
|
||||
} else {
|
||||
let field_name = util::ident(&field.name().to_snake_case());
|
||||
let field_name = util::safe_ident(&field.name().to_snake_case());
|
||||
fields.push(quote! { pub #field_name: #ty });
|
||||
}
|
||||
}
|
||||
|
@ -155,7 +155,7 @@ impl Context {
|
|||
let mut fields = Vec::with_capacity(sol_struct.fields().len());
|
||||
let mut param_types = Vec::with_capacity(sol_struct.fields().len());
|
||||
for field in sol_struct.fields() {
|
||||
let field_name = util::ident(&field.name().to_snake_case());
|
||||
let field_name = util::safe_ident(&field.name().to_snake_case());
|
||||
match field.r#type() {
|
||||
FieldType::Elementary(ty) => {
|
||||
param_types.push(ty.clone());
|
||||
|
|
|
@ -518,3 +518,15 @@ fn can_gen_multi_etherscan() {
|
|||
let _contract = MyContract::new(Address::default(), Arc::clone(&provider));
|
||||
let _contract = MyContract2::new(Address::default(), provider);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn can_gen_reserved_word_field_names() {
|
||||
abigen!(
|
||||
Test,
|
||||
r#"[
|
||||
struct Foo { uint256 ref; }
|
||||
]"#,
|
||||
);
|
||||
|
||||
let _foo = Foo { ref_: U256::default() };
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue