Merge pull request #10836 from ethereum/smt_fix_cex_inheritance

Fix inheritance bug in CHC cex
This commit is contained in:
Leonardo
2021-02-03 18:49:25 +01:00
committed by GitHub
6 changed files with 70 additions and 23 deletions
@@ -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