Add support custom errors in require

pull/2550/head
Simone 3 months ago
parent 809d1b5155
commit 7bfa87ad76
  1. 1
      slither/core/declarations/solidity_variables.py
  2. BIN
      tests/e2e/solc_parsing/test_data/compile/require-error.sol-0.8.27-compact.zip
  3. 5
      tests/e2e/solc_parsing/test_data/expected/require-error.sol-0.8.27-compact.json
  4. 20
      tests/e2e/solc_parsing/test_data/require-error.sol

@ -50,6 +50,7 @@ SOLIDITY_FUNCTIONS: Dict[str, List[str]] = {
"assert(bool)": [],
"require(bool)": [],
"require(bool,string)": [],
"require(bool,error)": [], # Solidity 0.8.26 via-ir and Solidity >= 0.8.27
"revert()": [],
"revert(string)": [],
"revert ": [],

@ -0,0 +1,5 @@
{
"TestToken": {
"transferWithRequireError(address,uint256)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: EXPRESSION 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n2->3;\n3[label=\"Node Type: EXPRESSION 3\n\"];\n}\n"
}
}

@ -0,0 +1,20 @@
pragma solidity 0.8.27;
/// Insufficient balance for transfer. Needed `required` but only
/// `available` available.
/// @param available balance available.
/// @param required requested amount to transfer.
error InsufficientBalance(uint256 available, uint256 required);
contract TestToken {
mapping(address => uint) balance;
function transferWithRequireError(address to, uint256 amount) public {
require(
balance[msg.sender] >= amount,
InsufficientBalance(balance[msg.sender], amount)
);
balance[msg.sender] -= amount;
balance[to] += amount;
}
// ...
}
Loading…
Cancel
Save