From e1ab6716816a4c247fde9b6d45ff312b757c8d33 Mon Sep 17 00:00:00 2001 From: DaniPopes <57450786+DaniPopes@users.noreply.github.com> Date: Tue, 9 Jan 2024 17:01:56 +0100 Subject: [PATCH] chore: remove JsonAbi import renames --- crates/cli/src/utils/cmd.rs | 8 ++++---- crates/common/src/contracts.rs | 16 ++++++++-------- crates/evm/evm/src/executors/fuzz/mod.rs | 4 ++-- crates/evm/evm/src/executors/invariant/mod.rs | 12 ++++++------ crates/evm/evm/src/executors/mod.rs | 14 +++++++------- crates/evm/fuzz/src/invariant/filters.rs | 4 ++-- crates/evm/fuzz/src/invariant/mod.rs | 8 ++++---- crates/evm/fuzz/src/strategies/invariants.rs | 9 ++++++--- crates/evm/traces/src/decoder/mod.rs | 4 ++-- crates/evm/traces/src/identifier/mod.rs | 4 ++-- crates/forge/bin/cmd/create.rs | 10 +++++----- crates/forge/bin/cmd/script/mod.rs | 4 ++-- crates/forge/src/multi_runner.rs | 12 ++++++------ crates/forge/src/runner.rs | 10 +++++----- 14 files changed, 61 insertions(+), 58 deletions(-) diff --git a/crates/cli/src/utils/cmd.rs b/crates/cli/src/utils/cmd.rs index 4c226cf1b5199..ecc937ae592aa 100644 --- a/crates/cli/src/utils/cmd.rs +++ b/crates/cli/src/utils/cmd.rs @@ -1,4 +1,4 @@ -use alloy_json_abi::JsonAbi as Abi; +use alloy_json_abi::JsonAbi; use alloy_primitives::Address; use eyre::{Result, WrapErr}; use foundry_common::{cli_warn, fs, TestFunctionExt}; @@ -29,7 +29,7 @@ use yansi::Paint; pub fn remove_contract( output: &mut ProjectCompileOutput, info: &ContractInfo, -) -> Result<(Abi, CompactBytecode, CompactDeployedBytecode)> { +) -> Result<(JsonAbi, CompactBytecode, CompactDeployedBytecode)> { let contract = if let Some(contract) = output.remove_contract(info) { contract } else { @@ -108,7 +108,7 @@ pub fn get_cached_entry_by_name( } /// Returns error if constructor has arguments. -pub fn ensure_clean_constructor(abi: &Abi) -> Result<()> { +pub fn ensure_clean_constructor(abi: &JsonAbi) -> Result<()> { if let Some(constructor) = &abi.constructor { if !constructor.inputs.is_empty() { eyre::bail!("Contract constructor should have no arguments. Add those arguments to `run(...)` instead, and call it with `--sig run(...)`."); @@ -117,7 +117,7 @@ pub fn ensure_clean_constructor(abi: &Abi) -> Result<()> { Ok(()) } -pub fn needs_setup(abi: &Abi) -> bool { +pub fn needs_setup(abi: &JsonAbi) -> bool { let setup_fns: Vec<_> = abi.functions().filter(|func| func.name.is_setup()).collect(); for setup_fn in setup_fns.iter() { diff --git a/crates/common/src/contracts.rs b/crates/common/src/contracts.rs index cad74931766eb..be279817603bc 100644 --- a/crates/common/src/contracts.rs +++ b/crates/common/src/contracts.rs @@ -1,6 +1,6 @@ //! Commonly used contract types and functions. -use alloy_json_abi::{Event, Function, JsonAbi as Abi}; +use alloy_json_abi::{Event, Function, JsonAbi}; use alloy_primitives::{hex, Address, B256}; use foundry_compilers::{ artifacts::{CompactContractBytecode, ContractBytecodeSome}, @@ -14,11 +14,11 @@ use std::{ path::PathBuf, }; -type ArtifactWithContractRef<'a> = (&'a ArtifactId, &'a (Abi, Vec)); +type ArtifactWithContractRef<'a> = (&'a ArtifactId, &'a (JsonAbi, Vec)); /// Wrapper type that maps an artifact to a contract ABI and bytecode. #[derive(Clone, Default)] -pub struct ContractsByArtifact(pub BTreeMap)>); +pub struct ContractsByArtifact(pub BTreeMap)>); impl ContractsByArtifact { /// Finds a contract which has a similar bytecode as `code`. @@ -44,7 +44,7 @@ impl ContractsByArtifact { } /// Flattens a group of contracts into maps of all events and functions - pub fn flatten(&self) -> (BTreeMap<[u8; 4], Function>, BTreeMap, Abi) { + pub fn flatten(&self) -> (BTreeMap<[u8; 4], Function>, BTreeMap, JsonAbi) { let flattened_funcs: BTreeMap<[u8; 4], Function> = self .iter() .flat_map(|(_name, (abi, _code))| { @@ -64,7 +64,7 @@ impl ContractsByArtifact { .collect(); // We need this for better revert decoding, and want it in abi form - let mut errors_abi = Abi::default(); + let mut errors_abi = JsonAbi::default(); self.iter().for_each(|(_name, (abi, _code))| { abi.errors().for_each(|error| { let entry = @@ -77,7 +77,7 @@ impl ContractsByArtifact { } impl Deref for ContractsByArtifact { - type Target = BTreeMap)>; + type Target = BTreeMap)>; fn deref(&self) -> &Self::Target { &self.0 @@ -91,7 +91,7 @@ impl DerefMut for ContractsByArtifact { } /// Wrapper type that maps an address to a contract identifier and contract ABI. -pub type ContractsByAddress = BTreeMap; +pub type ContractsByAddress = BTreeMap; /// Very simple fuzzy matching of contract bytecode. /// @@ -113,7 +113,7 @@ pub fn diff_score(a: &[u8], b: &[u8]) -> f64 { diff_chars as f64 / cutoff_len as f64 } -/// Flattens the contracts into (`id` -> (`Abi`, `Vec`)) pairs +/// Flattens the contracts into (`id` -> (`JsonAbi`, `Vec`)) pairs pub fn flatten_contracts( contracts: &BTreeMap, deployed_code: bool, diff --git a/crates/evm/evm/src/executors/fuzz/mod.rs b/crates/evm/evm/src/executors/fuzz/mod.rs index 321f1ddcd364d..4adcca6320ed9 100644 --- a/crates/evm/evm/src/executors/fuzz/mod.rs +++ b/crates/evm/evm/src/executors/fuzz/mod.rs @@ -1,6 +1,6 @@ use crate::executors::{Executor, RawCallResult}; use alloy_dyn_abi::JsonAbiExt; -use alloy_json_abi::{Function, JsonAbi as Abi}; +use alloy_json_abi::{Function, JsonAbi}; use alloy_primitives::{Address, Bytes, U256}; use eyre::Result; use foundry_config::FuzzConfig; @@ -60,7 +60,7 @@ impl FuzzedExecutor { func: &Function, address: Address, should_fail: bool, - errors: Option<&Abi>, + errors: Option<&JsonAbi>, ) -> FuzzTestResult { // Stores the first Fuzzcase let first_case: RefCell> = RefCell::default(); diff --git a/crates/evm/evm/src/executors/invariant/mod.rs b/crates/evm/evm/src/executors/invariant/mod.rs index ffde3b59c5bd8..fc0a91a534bef 100644 --- a/crates/evm/evm/src/executors/invariant/mod.rs +++ b/crates/evm/evm/src/executors/invariant/mod.rs @@ -3,7 +3,7 @@ use crate::{ inspectors::Fuzzer, }; use alloy_dyn_abi::DynSolValue; -use alloy_json_abi::JsonAbi as Abi; +use alloy_json_abi::JsonAbi; use alloy_primitives::{Address, FixedBytes, U256}; use eyre::{eyre, ContextCompat, Result}; use foundry_common::contracts::{ContractsByAddress, ContractsByArtifact}; @@ -324,7 +324,7 @@ impl<'a> InvariantExecutor<'a> { pub fn select_contract_artifacts( &mut self, invariant_address: Address, - abi: &Abi, + abi: &JsonAbi, ) -> eyre::Result<()> { // targetArtifactSelectors -> (string, bytes4[])[]. let targeted_abi = self @@ -450,7 +450,7 @@ impl<'a> InvariantExecutor<'a> { pub fn select_contracts_and_senders( &self, invariant_address: Address, - abi: &Abi, + abi: &JsonAbi, ) -> eyre::Result<(SenderFilters, TargetedContracts)> { let [targeted_senders, excluded_senders, selected, excluded] = ["targetSenders", "excludeSenders", "targetContracts", "excludeContracts"].map( @@ -497,7 +497,7 @@ impl<'a> InvariantExecutor<'a> { pub fn target_interfaces( &self, invariant_address: Address, - abi: &Abi, + abi: &JsonAbi, targeted_contracts: &mut TargetedContracts, ) -> eyre::Result<()> { let interfaces = self.get_list::<(Address, Vec)>( @@ -570,7 +570,7 @@ impl<'a> InvariantExecutor<'a> { pub fn select_selectors( &self, address: Address, - abi: &Abi, + abi: &JsonAbi, targeted_contracts: &mut TargetedContracts, ) -> eyre::Result<()> { // `targetArtifactSelectors() -> (string, bytes4[])[]`. @@ -661,7 +661,7 @@ impl<'a> InvariantExecutor<'a> { fn get_list( &self, address: Address, - abi: &Abi, + abi: &JsonAbi, method_name: &str, f: fn(DynSolValue) -> Vec, ) -> Vec { diff --git a/crates/evm/evm/src/executors/mod.rs b/crates/evm/evm/src/executors/mod.rs index b57acc4e9b08b..971a2a21f5302 100644 --- a/crates/evm/evm/src/executors/mod.rs +++ b/crates/evm/evm/src/executors/mod.rs @@ -10,7 +10,7 @@ use crate::inspectors::{ cheatcodes::BroadcastableTransactions, Cheatcodes, InspectorData, InspectorStack, }; use alloy_dyn_abi::{DynSolValue, FunctionExt, JsonAbiExt}; -use alloy_json_abi::{Function, JsonAbi as Abi}; +use alloy_json_abi::{Function, JsonAbi}; use alloy_primitives::{Address, Bytes, U256}; use ethers_core::types::Log; use ethers_signers::LocalWallet; @@ -223,7 +223,7 @@ impl Executor { func: F, args: T, value: U256, - abi: Option<&Abi>, + abi: Option<&JsonAbi>, ) -> Result { let func = func.into(); let calldata = Bytes::from(func.abi_encode_input(&args.into())?.to_vec()); @@ -255,7 +255,7 @@ impl Executor { func: F, args: T, value: U256, - abi: Option<&Abi>, + abi: Option<&JsonAbi>, ) -> Result { let func = func.into(); let calldata = Bytes::from(func.abi_encode_input(&args.into())?.to_vec()); @@ -276,7 +276,7 @@ impl Executor { func: F, args: T, value: U256, - abi: Option<&Abi>, + abi: Option<&JsonAbi>, ) -> Result { let func = func.into(); let calldata = Bytes::from(func.abi_encode_input(&args.into())?.to_vec()); @@ -353,7 +353,7 @@ impl Executor { pub fn deploy_with_env( &mut self, env: Env, - abi: Option<&Abi>, + abi: Option<&JsonAbi>, ) -> Result { debug_assert!( matches!(env.tx.transact_to, TransactTo::Create(_)), @@ -442,7 +442,7 @@ impl Executor { from: Address, code: Bytes, value: U256, - abi: Option<&Abi>, + abi: Option<&JsonAbi>, ) -> Result { let env = self.build_test_env(from, TransactTo::Create(CreateScheme::Create), code, value); self.deploy_with_env(env, abi) @@ -825,7 +825,7 @@ fn convert_executed_result( } fn convert_call_result( - abi: Option<&Abi>, + abi: Option<&JsonAbi>, func: &Function, call_result: RawCallResult, ) -> Result { diff --git a/crates/evm/fuzz/src/invariant/filters.rs b/crates/evm/fuzz/src/invariant/filters.rs index 3561ef9d66728..c56450c27065d 100644 --- a/crates/evm/fuzz/src/invariant/filters.rs +++ b/crates/evm/fuzz/src/invariant/filters.rs @@ -1,4 +1,4 @@ -use alloy_json_abi::{Function, JsonAbi as Abi}; +use alloy_json_abi::{Function, JsonAbi}; use alloy_primitives::{Address, Selector}; use foundry_compilers::ArtifactId; use foundry_evm_core::utils::get_function; @@ -23,7 +23,7 @@ impl ArtifactFilters { pub fn get_targeted_functions( &self, artifact: &ArtifactId, - abi: &Abi, + abi: &JsonAbi, ) -> eyre::Result>> { if let Some(selectors) = self.targeted.get(&artifact.identifier()) { let functions = selectors diff --git a/crates/evm/fuzz/src/invariant/mod.rs b/crates/evm/fuzz/src/invariant/mod.rs index 7faeb7a58ebfa..6dfcd8248739b 100644 --- a/crates/evm/fuzz/src/invariant/mod.rs +++ b/crates/evm/fuzz/src/invariant/mod.rs @@ -1,4 +1,4 @@ -use alloy_json_abi::{Function, JsonAbi as Abi}; +use alloy_json_abi::{Function, JsonAbi}; use alloy_primitives::{Address, Bytes}; use parking_lot::Mutex; use std::{collections::BTreeMap, sync::Arc}; @@ -9,7 +9,7 @@ pub use call_override::RandomCallGenerator; mod filters; pub use filters::{ArtifactFilters, SenderFilters}; -pub type TargetedContracts = BTreeMap)>; +pub type TargetedContracts = BTreeMap)>; pub type FuzzRunIdentifiedContracts = Arc>; /// (Sender, (TargetContract, Calldata)) @@ -22,6 +22,6 @@ pub struct InvariantContract<'a> { pub address: Address, /// Invariant function present in the test contract. pub invariant_function: &'a Function, - /// Abi of the test contract. - pub abi: &'a Abi, + /// ABI of the test contract. + pub abi: &'a JsonAbi, } diff --git a/crates/evm/fuzz/src/strategies/invariants.rs b/crates/evm/fuzz/src/strategies/invariants.rs index 3534ffea17533..d095f10092851 100644 --- a/crates/evm/fuzz/src/strategies/invariants.rs +++ b/crates/evm/fuzz/src/strategies/invariants.rs @@ -3,7 +3,7 @@ use crate::{ invariant::{BasicTxDetails, FuzzRunIdentifiedContracts, SenderFilters}, strategies::{fuzz_calldata, fuzz_calldata_from_state, fuzz_param, EvmFuzzState}, }; -use alloy_json_abi::{Function, JsonAbi as Abi}; +use alloy_json_abi::{Function, JsonAbi}; use alloy_primitives::{Address, Bytes}; use parking_lot::RwLock; use proptest::prelude::*; @@ -119,7 +119,7 @@ fn select_random_sender( /// Strategy to randomly select a contract from the `contracts` list that has at least 1 function fn select_random_contract( contracts: FuzzRunIdentifiedContracts, -) -> impl Strategy)> { +) -> impl Strategy)> { let selectors = any::(); selectors.prop_map(move |selector| { let contracts = contracts.lock(); @@ -133,7 +133,10 @@ fn select_random_contract( /// /// If `targeted_functions` is not empty, select one from it. Otherwise, take any /// of the available abi functions. -fn select_random_function(abi: Abi, targeted_functions: Vec) -> BoxedStrategy { +fn select_random_function( + abi: JsonAbi, + targeted_functions: Vec, +) -> BoxedStrategy { let selectors = any::(); let possible_funcs: Vec = abi .functions() diff --git a/crates/evm/traces/src/decoder/mod.rs b/crates/evm/traces/src/decoder/mod.rs index f7c0abb8dd2e7..f1a919f249b83 100644 --- a/crates/evm/traces/src/decoder/mod.rs +++ b/crates/evm/traces/src/decoder/mod.rs @@ -5,7 +5,7 @@ use crate::{ CallTrace, CallTraceArena, DecodedCallData, DecodedCallLog, DecodedCallTrace, }; use alloy_dyn_abi::{DecodedEvent, DynSolValue, EventExt, FunctionExt, JsonAbiExt}; -use alloy_json_abi::{Event, Function, JsonAbi as Abi}; +use alloy_json_abi::{Event, Function, JsonAbi}; use alloy_primitives::{Address, Log, Selector, B256}; use foundry_common::{abi::get_indexed_event, fmt::format_token, SELECTOR_LEN}; use foundry_evm_core::{ @@ -114,7 +114,7 @@ pub struct CallTraceDecoder { /// All known events. pub events: BTreeMap<(B256, usize), Vec>, /// All known errors. - pub errors: Abi, + pub errors: JsonAbi, /// A signature identifier for events and functions. pub signature_identifier: Option, /// Verbosity level diff --git a/crates/evm/traces/src/identifier/mod.rs b/crates/evm/traces/src/identifier/mod.rs index 3743cde8d6b64..6d86b072abf6e 100644 --- a/crates/evm/traces/src/identifier/mod.rs +++ b/crates/evm/traces/src/identifier/mod.rs @@ -1,4 +1,4 @@ -use alloy_json_abi::JsonAbi as Abi; +use alloy_json_abi::JsonAbi; use alloy_primitives::Address; use foundry_compilers::ArtifactId; use std::borrow::Cow; @@ -23,7 +23,7 @@ pub struct AddressIdentity<'a> { /// Note: This may be in the format `":"`. pub contract: Option, /// The ABI of the contract at this address - pub abi: Option>, + pub abi: Option>, /// The artifact ID of the contract, if any. pub artifact_id: Option, } diff --git a/crates/forge/bin/cmd/create.rs b/crates/forge/bin/cmd/create.rs index acb9436d838a4..4f424d9847d8d 100644 --- a/crates/forge/bin/cmd/create.rs +++ b/crates/forge/bin/cmd/create.rs @@ -1,6 +1,6 @@ use super::{retry::RetryArgs, verify}; use alloy_dyn_abi::{DynSolValue, JsonAbiExt, ResolveSolType}; -use alloy_json_abi::{Constructor, JsonAbi as Abi}; +use alloy_json_abi::{Constructor, JsonAbi}; use alloy_primitives::{Address, Bytes}; use clap::{Parser, ValueHint}; use ethers_contract::ContractError; @@ -204,7 +204,7 @@ impl CreateArgs { /// Deploys the contract async fn deploy( self, - abi: Abi, + abi: JsonAbi, bin: BytecodeObject, args: Vec, provider: M, @@ -407,7 +407,7 @@ impl From> for ContractDeploymentTx { pub struct Deployer { /// The deployer's transaction, exposed for overriding the defaults pub tx: TypedTransaction, - abi: Abi, + abi: JsonAbi, client: B, confs: usize, block: BlockNumber, @@ -513,7 +513,7 @@ where #[derive(Debug)] pub struct DeploymentTxFactory { client: B, - abi: Abi, + abi: JsonAbi, bytecode: Bytes, _m: PhantomData, } @@ -540,7 +540,7 @@ where /// Creates a factory for deployment of the Contract with bytecode, and the /// constructor defined in the abi. The client will be used to send any deployment /// transaction. - pub fn new(abi: Abi, bytecode: Bytes, client: B) -> Self { + pub fn new(abi: JsonAbi, bytecode: Bytes, client: B) -> Self { Self { client, abi, bytecode, _m: PhantomData } } diff --git a/crates/forge/bin/cmd/script/mod.rs b/crates/forge/bin/cmd/script/mod.rs index 4f6a3328a9f6e..426b4885c24f3 100644 --- a/crates/forge/bin/cmd/script/mod.rs +++ b/crates/forge/bin/cmd/script/mod.rs @@ -1,7 +1,7 @@ use self::{build::BuildOutput, runner::ScriptRunner}; use super::{build::BuildArgs, retry::RetryArgs}; use alloy_dyn_abi::FunctionExt; -use alloy_json_abi::{Function, InternalType, JsonAbi as Abi}; +use alloy_json_abi::{Function, InternalType, JsonAbi}; use alloy_primitives::{Address, Bytes, U256}; use clap::{Parser, ValueHint}; use dialoguer::Confirm; @@ -439,7 +439,7 @@ impl ScriptArgs { /// corresponding function by matching the selector, first 4 bytes in the calldata. /// /// Note: We assume that the `sig` is already stripped of its prefix, See [`ScriptArgs`] - fn get_method_and_calldata(&self, abi: &Abi) -> Result<(Function, Bytes)> { + fn get_method_and_calldata(&self, abi: &JsonAbi) -> Result<(Function, Bytes)> { let (func, data) = if let Ok(func) = get_func(&self.sig) { ( abi.functions().find(|&abi_func| abi_func.selector() == func.selector()).wrap_err( diff --git a/crates/forge/src/multi_runner.rs b/crates/forge/src/multi_runner.rs index c32cf41c88ff0..b7c49e887627d 100644 --- a/crates/forge/src/multi_runner.rs +++ b/crates/forge/src/multi_runner.rs @@ -5,7 +5,7 @@ use crate::{ result::SuiteResult, ContractRunner, TestFilter, TestOptions, }; -use alloy_json_abi::{Function, JsonAbi as Abi}; +use alloy_json_abi::{Function, JsonAbi}; use alloy_primitives::{Address, Bytes, U256}; use eyre::Result; use foundry_common::{ContractsByArtifact, TestFunctionExt}; @@ -30,15 +30,15 @@ use std::{ sync::{mpsc, Arc}, }; -pub type DeployableContracts = BTreeMap)>; +pub type DeployableContracts = BTreeMap)>; /// A multi contract runner receives a set of contracts deployed in an EVM instance and proceeds /// to run all test functions in these contracts. pub struct MultiContractRunner { - /// Mapping of contract name to Abi, creation bytecode and library bytecode which + /// Mapping of contract name to JsonAbi, creation bytecode and library bytecode which /// needs to be deployed & linked against pub contracts: DeployableContracts, - /// Compiled contracts by name that have an Abi and runtime bytecode + /// Compiled contracts by name that have an JsonAbi and runtime bytecode pub known_contracts: ContractsByArtifact, /// The EVM instance used in the test runner pub evm_opts: EvmOpts, @@ -47,7 +47,7 @@ pub struct MultiContractRunner { /// The EVM spec pub evm_spec: SpecId, /// All known errors, used for decoding reverts - pub errors: Option, + pub errors: Option, /// The address which will be used as the `from` field in all EVM calls pub sender: Option
, /// A map of contract names to absolute source file paths @@ -208,7 +208,7 @@ impl MultiContractRunner { fn run_tests( &self, name: &str, - contract: &Abi, + contract: &JsonAbi, executor: Executor, deploy_code: Bytes, libs: &[Bytes], diff --git a/crates/forge/src/runner.rs b/crates/forge/src/runner.rs index 0308fd218e191..14783d47b9c7f 100644 --- a/crates/forge/src/runner.rs +++ b/crates/forge/src/runner.rs @@ -4,7 +4,7 @@ use crate::{ result::{SuiteResult, TestKind, TestResult, TestSetup, TestStatus}, TestFilter, TestOptions, }; -use alloy_json_abi::{Function, JsonAbi as Abi}; +use alloy_json_abi::{Function, JsonAbi}; use alloy_primitives::{Address, Bytes, U256}; use eyre::Result; use foundry_common::{ @@ -42,9 +42,9 @@ pub struct ContractRunner<'a> { /// The deployed contract's code pub code: Bytes, /// The test contract's ABI - pub contract: &'a Abi, + pub contract: &'a JsonAbi, /// All known errors, used to decode reverts - pub errors: Option<&'a Abi>, + pub errors: Option<&'a JsonAbi>, /// The initial balance of the test contract pub initial_balance: U256, /// The address which will be used as the `from` field in all EVM calls @@ -58,11 +58,11 @@ impl<'a> ContractRunner<'a> { pub fn new( name: &'a str, executor: Executor, - contract: &'a Abi, + contract: &'a JsonAbi, code: Bytes, initial_balance: U256, sender: Option
, - errors: Option<&'a Abi>, + errors: Option<&'a JsonAbi>, predeploy_libs: &'a [Bytes], debug: bool, ) -> Self {