mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #10836 from ethereum/smt_fix_cex_inheritance
Fix inheritance bug in CHC cex
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
pragma experimental SMTChecker;
|
||||
|
||||
contract B {
|
||||
uint x;
|
||||
function f() public view {
|
||||
assert(x == 0);
|
||||
}
|
||||
}
|
||||
|
||||
contract C is B {
|
||||
uint y;
|
||||
function g() public {
|
||||
x = 1;
|
||||
f();
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 6328: (85-99): CHC: Assertion violation happens here.\nCounterexample:\ny = 0, x = 1\n\nTransaction trace:\nC.constructor()\nState: y = 0, x = 0\nC.g()\n B.f() -- internal call\nState: y = 0, x = 1\nB.f()
|
||||
@@ -0,0 +1,25 @@
|
||||
pragma experimental SMTChecker;
|
||||
|
||||
contract A {
|
||||
uint x;
|
||||
function f() internal view {
|
||||
assert(x == 0);
|
||||
}
|
||||
}
|
||||
|
||||
contract B is A {
|
||||
uint a;
|
||||
uint b;
|
||||
}
|
||||
|
||||
contract C is B {
|
||||
uint y;
|
||||
uint z;
|
||||
uint w;
|
||||
function g() public {
|
||||
x = 1;
|
||||
f();
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 6328: (87-101): CHC: Assertion violation happens here.\nCounterexample:\ny = 0, z = 0, w = 0, a = 0, b = 0, x = 1\n\nTransaction trace:\nC.constructor()\nState: y = 0, z = 0, w = 0, a = 0, b = 0, x = 0\nC.g()\n A.f() -- internal call
|
||||
Reference in New Issue
Block a user