* Allow for downloader to use version requirements.
We will soon add support for the compiler version requirement from the
metadata files to be honored. The compiler version is specified in the
solc modes section of the file and its specified as a `VersionReq` and
not as a version.
Therefore, we need to have the ability to honor this version requirement
and find the best version that satisfies the requirement.
* Request `VersionOrRequirement` in compiler interface
* Honor the compiler version requirement in metadata
This commit honors the compiler version requirement listed in the solc
modes of the metadata file. If this version requirement is provided then
it overrides what was passed in the CLI. Otherwise, the CLI version will
be used.
* Make compiler IO completely generic.
Before this commit, the types that were used for the compiler input and
output were the resolc compiler types which was a leaky abstraction as
we have traits to abstract the compilers away but we expose their
internal types out to other crates.
This commit did the following:
1. Made the compiler IO types fully generic so that all of the logic for
constructing the map of compiled contracts is all done by the
compiler implementation and not by the consuming code.
2. Changed the input types used for Solc to be the forge standard JSON
types for Solc instead of resolc.
* Fix machete
* Add resolc to CI
* Add resolc to CI
* Add resolc to CI
* Add resolc to CI
* Add a barebones common crate
* Refactor some code into the common crate
* Add a `ResolverApi` interface.
This commit adds a `ResolverApi` trait to the `format` crate that can be
implemented by any type that can act as a resolver. A resolver is able
to provide information on the chain state. This chain state could be
fresh or it could be cached (which is something that we will do in a
future PR).
This cleans up our crate graph so that `format` is not depending on the
node interactions crate for the `EthereumNode` trait.
* Cleanup the blocking executor
* Add support for wrapper types
* Move `FilesWithExtensionIterator` to `core::common`
* Remove unneeded use of two `HashMap`s
* Make metadata structs more typed
* Impl new_from for wrapper types
* Implement the new input handling logic
* Fix edge-case in input handling
* Ignore macro doc comment tests
* Correct comment
* Fix edge-case in deployment order
* Handle calldata better
* Allow for the use of function signatures
* Add support for exceptions
* Cached nonce allocator
* Fix tests
* Add support for address replacement
* Cleanup implementation
* Cleanup mutability
* Wire up address replacement with rest of code
* Implement caller replacement
* Switch to callframe trace for exceptions
* Add a way to skip tests if they don't match the target
* Handle values from the metadata files
* Remove address replacement
* Correct the arguments
* Remove empty impl
* Remove address replacement
* Correct the arguments
* Remove empty impl
* Fix size_requirement underflow
* Add support for wildcards in exceptions
* Fix calldata construction of single calldata
* Better handling for length in equivalency checks
* Make initial balance a constant
* Fix size_requirement underflow
* Add support for wildcards in exceptions
* Fix calldata construction of single calldata
* Better handling for length in equivalency checks
* Fix tests
* Add support for wrapper types
* Move `FilesWithExtensionIterator` to `core::common`
* Remove unneeded use of two `HashMap`s
* Make metadata structs more typed
* Impl new_from for wrapper types
* Implement the new input handling logic
* Fix edge-case in input handling
* Ignore macro doc comment tests
* Correct comment
* Fix edge-case in deployment order
This commit updates how logging is done in the differential testing
harness to use `tracing` instead of using the `log` crate. This allows
us to be able to better associate logs with the cases being executed
which makes it easier to debug and understand what the harness is doing.
* Parsed ABI field in order to get method parameter
* Added logic for ABI
* Refactored dependencies
* Small refactoring
* Added unit tests for ABI parameter extraction logic
* Fixed format issues
* Fixed format
* Added new changes to format
* Added bail to stop execution when we have an error during deployment