[SMTChecker] Correctly resolve current scope contract in VariableUsage.

This commit is contained in:
Martin Blicha
2021-03-15 13:55:14 +01:00
parent 2c00939ad8
commit 2f52affcc2
6 changed files with 53 additions and 4 deletions
@@ -0,0 +1,16 @@
pragma experimental SMTChecker;
contract Context {}
contract ERC20 is Context {
function approve() public virtual { _approve(); }
function _approve() internal virtual {}
}
contract __unstable__ERC20Owned is ERC20 {
function _approve() internal override {
if (true) {
super._approve();
}
}
}
@@ -0,0 +1,23 @@
pragma experimental SMTChecker;
contract A {
function f() internal virtual {
v();
}
function v() internal virtual {
}
}
contract B is A {
function f() internal virtual override {
super.f();
}
}
contract C is B {
function v() internal override {
if (0==1)
f();
}
}
// ----
// Warning 6838: (303-307): BMC: Condition is always false.