mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Fix CHC false positives when using branches inside modifiers
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
pragma experimental SMTChecker;
|
||||
contract C {
|
||||
uint x;
|
||||
modifier m(uint z) {
|
||||
uint y = 3;
|
||||
if (z == 10)
|
||||
x = 2 + y;
|
||||
_;
|
||||
if (z == 10)
|
||||
x = 4 + y;
|
||||
}
|
||||
function f() m(10) internal {
|
||||
x = 3;
|
||||
}
|
||||
function g() public {
|
||||
x = 0;
|
||||
f();
|
||||
assert(x == 7);
|
||||
// Fails
|
||||
assert(x == 6);
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 6328: (359-373): CHC: Assertion violation happens here.
|
||||
@@ -0,0 +1,24 @@
|
||||
pragma experimental SMTChecker;
|
||||
contract C {
|
||||
uint x;
|
||||
modifier m(uint z) {
|
||||
uint y = 3;
|
||||
if (z == 10)
|
||||
x = 2 + y;
|
||||
_;
|
||||
if (z == 10)
|
||||
x = 4 + y;
|
||||
}
|
||||
function f() m(10) m(12) internal {
|
||||
x = 3;
|
||||
}
|
||||
function g() public {
|
||||
x = 0;
|
||||
f();
|
||||
assert(x == 3);
|
||||
// Fails
|
||||
assert(x == 6);
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 6328: (365-379): CHC: Assertion violation happens here.
|
||||
@@ -0,0 +1,24 @@
|
||||
pragma experimental SMTChecker;
|
||||
contract C {
|
||||
uint x;
|
||||
modifier m(uint z) {
|
||||
uint y = 3;
|
||||
if (z == 10)
|
||||
x = 2 + y;
|
||||
_;
|
||||
if (z == 10)
|
||||
x = 4 + y;
|
||||
}
|
||||
function f() m(8) internal {
|
||||
x = 3;
|
||||
}
|
||||
function g() public {
|
||||
x = 0;
|
||||
f();
|
||||
assert(x == 3);
|
||||
// Fails
|
||||
assert(x == 6);
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 6328: (358-372): CHC: Assertion violation happens here.
|
||||
@@ -0,0 +1,24 @@
|
||||
pragma experimental SMTChecker;
|
||||
contract C {
|
||||
uint x;
|
||||
modifier m(uint z) {
|
||||
uint y = 3;
|
||||
if (z >= 10)
|
||||
x = 2 + y;
|
||||
_;
|
||||
if (z >= 10)
|
||||
x = 4 + y;
|
||||
}
|
||||
function f() m(10) m(12) internal {
|
||||
x = 3;
|
||||
}
|
||||
function g() public {
|
||||
x = 0;
|
||||
f();
|
||||
assert(x == 7);
|
||||
// Fails
|
||||
assert(x == 6);
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 6328: (365-379): CHC: Assertion violation happens here.
|
||||
Reference in New Issue
Block a user