Fix static virtual resolution

This commit is contained in:
Leonardo Alt
2021-01-18 16:23:38 +01:00
parent 359c70649d
commit c7ca87c012
2 changed files with 33 additions and 3 deletions
@@ -0,0 +1,21 @@
pragma experimental SMTChecker;
contract BaseBase {
uint x;
function init(uint a, uint b) public virtual {
x = a;
}
}
contract Base is BaseBase {
function init(uint a, uint b) public override {
}
}
contract Child is Base {
function bInit(uint c, uint d) public {
BaseBase.init(c, d);
assert(x == c);
assert(x == d); // should fail
}
}
// ----
// Warning 5667: (84-90): Unused function parameter. Remove or comment out the variable name to silence this warning.
// Warning 6328: (314-328): CHC: Assertion violation happens here.\nCounterexample:\nx = 0\nc = 0\nd = 1\n\nTransaction trace:\nChild.constructor()\nState: x = 0\nChild.bInit(0, 1)\n BaseBase.init(0, 1) -- internal call