feat: change abi_str to abi from contract in for hardhat abi (#740)

This commit is contained in:
thasarito 2022-01-08 16:17:36 +07:00 committed by GitHub
parent 86044bc0c3
commit 8e0eddbb57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 1 deletions

View File

@ -152,7 +152,7 @@ impl Context {
/// Create a context from the code generation arguments. /// Create a context from the code generation arguments.
pub fn from_abigen(args: Abigen) -> Result<Self> { pub fn from_abigen(args: Abigen) -> Result<Self> {
// get the actual ABI string // get the actual ABI string
let abi_str = let mut abi_str =
args.abi_source.get().map_err(|e| anyhow!("failed to get ABI JSON: {}", e))?; args.abi_source.get().map_err(|e| anyhow!("failed to get ABI JSON: {}", e))?;
let (abi, human_readable, abi_parser) = parse_abi(&abi_str)?; let (abi, human_readable, abi_parser) = parse_abi(&abi_str)?;
@ -172,6 +172,13 @@ impl Context {
internal_structs.outputs = abi_parser.outputs.clone(); internal_structs.outputs = abi_parser.outputs.clone();
internal_structs internal_structs
} else if abi_str.starts_with('{') {
abi_str = serde_json::to_string(&abi).context("fail to serialize abi to json")?;
serde_json::from_str::<RawAbi>(&abi_str)
.ok()
.map(InternalStructs::new)
.unwrap_or_default()
} else { } else {
serde_json::from_str::<RawAbi>(&abi_str) serde_json::from_str::<RawAbi>(&abi_str)
.ok() .ok()

View File

@ -25,6 +25,11 @@ fn can_gen_human_readable() {
assert_eq!("ValueChanged(address,string,string)", ValueChangedFilter::abi_signature()); assert_eq!("ValueChanged(address,string,string)", ValueChangedFilter::abi_signature());
} }
#[test]
fn can_gen_not_human_readable() {
abigen!(VerifierAbiHardhatContract, "./tests/solidity-contracts/verifier_abi_hardhat.json");
}
#[test] #[test]
fn can_gen_human_readable_multiple() { fn can_gen_human_readable_multiple() {
abigen!( abigen!(