solidity/test/libsolidity/smtCheckerTests/modifiers/modifier_inside_branch_assignment.sol
2022-11-24 13:08:06 +01:00

25 lines
577 B
Solidity

contract C {
uint x;
address owner;
modifier onlyOwner {
if (msg.sender == owner) _;
}
function f() public onlyOwner {
x = 0;
}
function g(uint y) public {
x = 1;
if (y > 0)
f();
// Fails for {y = >0, msg.sender == owner, x = 0}.
assert(x > 0);
}
}
// ====
// SMTEngine: all
// SMTIgnoreOS: macos
// ----
// Warning 6328: (254-267): CHC: Assertion violation happens here.\nCounterexample:\nx = 0, owner = 0x0\ny = 1\n\nTransaction trace:\nC.constructor()\nState: x = 0, owner = 0x0\nC.f()\nState: x = 0, owner = 0x0\nC.g(1)\n C.f() -- internal call