mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #7171 from ethereum/smt_fix_compound_bitwise
[SMTChecker] Fix ICE compound bitwise op inside branch
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
pragma experimental SMTChecker;
|
||||
|
||||
contract C {
|
||||
function f(bool b) public pure {
|
||||
uint v = 1;
|
||||
if (b)
|
||||
v &= 1;
|
||||
assert(v == 1);
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning: (106-112): Assertion checker does not yet implement this assignment operator.
|
||||
// Warning: (116-130): Assertion violation happens here
|
||||
@@ -0,0 +1,13 @@
|
||||
pragma experimental SMTChecker;
|
||||
|
||||
contract C {
|
||||
function f(bool b) public pure {
|
||||
uint v = 0;
|
||||
if (b)
|
||||
v |= 1;
|
||||
assert(v == 1);
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning: (106-112): Assertion checker does not yet implement this assignment operator.
|
||||
// Warning: (116-130): Assertion violation happens here
|
||||
@@ -0,0 +1,13 @@
|
||||
pragma experimental SMTChecker;
|
||||
|
||||
contract C {
|
||||
function f(bool b) public pure {
|
||||
uint v = 0;
|
||||
if (b)
|
||||
v ^= 1;
|
||||
assert(v == 1);
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning: (106-112): Assertion checker does not yet implement this assignment operator.
|
||||
// Warning: (116-130): Assertion violation happens here
|
||||
@@ -0,0 +1,13 @@
|
||||
pragma experimental SMTChecker;
|
||||
|
||||
contract C {
|
||||
function f(bool b) public pure {
|
||||
uint v = 1000000;
|
||||
if (b)
|
||||
v <<= 2;
|
||||
assert(v > 0);
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning: (112-119): Assertion checker does not yet implement this assignment operator.
|
||||
// Warning: (123-136): Assertion violation happens here
|
||||
@@ -0,0 +1,13 @@
|
||||
pragma experimental SMTChecker;
|
||||
|
||||
contract C {
|
||||
function f(bool b) public pure {
|
||||
uint v = 1;
|
||||
if (b)
|
||||
v >>= 2;
|
||||
assert(v > 0);
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning: (106-113): Assertion checker does not yet implement this assignment operator.
|
||||
// Warning: (117-130): Assertion violation happens here
|
||||
Reference in New Issue
Block a user