Dimitar Bounov
Dimitar Bounov
In the process of introspecting solc's ast, we have a use case to parse the type strings embedded in some nodes. It seems that this can be perfectly solved using...
The typing logic for `SId` is split between several functions: `tcId`, `tcIdVariable`, `tcLetAnnotation`, `tcUserConstant`, `lookupFun`, `lookupVarDef`, `lookupTypeDef`, `tcIdBuiltinSymbol`, `tcIdImportUnitRef`. Whats worse, there are 2 redundant styles of checking types: a)...
Currently low-level tools (such as the Harvey fuzzer) report a bytecode offset where a user-provided assertion failure was detected. This is usually the offset of the `LOG1` instruction that corresponds...
As described in #163 we changed the scribble type-checker to reject annotations that talk about private state variables of base contracts. So for example it would reject samples such as...
Scribble is sometimes used to instrument the code for local testing. When this is done in a Hardhat environment, people often use `console.log(...)` to print out various information. In this...
We have use cases for comparing strings, arrays and structs in properties. However the base Solidity language doesn't support equality comparison of non-value types. We could add structural equality comparison...
With #128 we added an internal yaml schema checker function in `yaml.ts`. This is overkill, and should be replaced with an external library (e.g. https://www.npmjs.com/package/yaml-schema-validator). Note that it would be...
Instrumentation turns the following terminating code into non-terminating code: ```solidity contract Foo { function double1(uint x) public view returns (uint) { return double2(x); } /// if_succeeds $result == double1(x); function...
In #112 we added the new `#try` annotation that can guide underlying tools (e.g. Harvey) by giving them vacuous target branches to flip. Currently `#try` accepts a single predicate: ```...
#### Expected behavior Running this code should succeed: ``` const ethABI = require("web3-eth-abi"); ethABI.encodeParameters(["tuple(uint256,uint256)"], [[1,2]]); ``` #### Actual behavior Running this code results in the below exception: ``` Uncaught AbiError:...