Static Analyzer for Solidity
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
slither/tests/e2e/solc_parsing/test_data/custom_error-0.8.4.sol

86 lines
1.6 KiB

pragma solidity ^0.8.4;
interface I {
enum SomeEnum { ONE, TWO, THREE }
error ErrorWithEnum(SomeEnum e);
}
struct St{
uint v;
}
uint256 constant MAX = 5;
error ErrorSimple();
error ErrorWithArgs(uint, uint);
error ErrorWithStruct(St s);
error ErrorWithConst(uint256[MAX]);
contract VendingMachine is I {
uint256 constant CMAX = 10;
error CErrorWithConst(uint256[CMAX]);
function err0() public {
revert ErrorSimple();
}
function err1() public {
St memory s;
revert ErrorWithStruct(s);
}
function err2() public{
revert ErrorWithArgs(10+10, 10);
revert ErrorWithArgs(uint(SomeEnum.ONE), uint(SomeEnum.ONE));
}
function err3() public{
revert('test');
}
function err4() public {
revert ErrorWithEnum(SomeEnum.ONE);
}
function err5(uint256[MAX] calldata a) public {
revert ErrorWithConst(a);
}
function err6(uint256[CMAX] calldata a) public {
revert CErrorWithConst(a);
}
}
contract A{
error MyError(uint);
function f() public{
revert MyError(2);
}
}
contract B is A{
function g() public{
revert MyError(2);
}
function h() public returns(bytes4){
return MyError.selector;
}
}
contract ContractArgCustomError {
error E(ContractArgCustomError a);
function f() payable external {
g();
}
function g() private {
bool something = h();
if (something) {
revert E(this);
}
}
function h() private returns (bool something) {
}
}