mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
43 lines
831 B
Solidity
43 lines
831 B
Solidity
|
==== Source: ExtCall.sol ====
|
||
|
interface Unknown {
|
||
|
function callme() external;
|
||
|
}
|
||
|
|
||
|
contract ExtCall {
|
||
|
uint x;
|
||
|
|
||
|
bool lock;
|
||
|
modifier mutex {
|
||
|
require(!lock);
|
||
|
lock = true;
|
||
|
_;
|
||
|
lock = false;
|
||
|
}
|
||
|
|
||
|
function setX(uint y) mutex public {
|
||
|
x = y;
|
||
|
}
|
||
|
|
||
|
function xMut(Unknown u) public {
|
||
|
uint x_prev = x;
|
||
|
u.callme();
|
||
|
assert(x_prev == x);
|
||
|
}
|
||
|
}
|
||
|
==== Source: ExtCall.t.sol ====
|
||
|
import "ExtCall.sol";
|
||
|
|
||
|
contract ExtCallTest {
|
||
|
ExtCall call;
|
||
|
|
||
|
function setUp() public {
|
||
|
call = new ExtCall();
|
||
|
}
|
||
|
}
|
||
|
// ====
|
||
|
// SMTEngine: all
|
||
|
// SMTIgnoreCex: yes
|
||
|
// ----
|
||
|
// Warning 6328: (ExtCall.sol:362-381): CHC: Assertion violation happens here.
|
||
|
// Warning 4588: (ExtCall.t.sol:110-123): Assertion checker does not yet implement this type of function call.
|