mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Fix assignment to contract member access
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
pragma experimental SMTChecker;
|
||||
contract A {
|
||||
int x;
|
||||
int y;
|
||||
function a() public {
|
||||
require(A.x < 100);
|
||||
A.y = A.x++;
|
||||
assert(A.y == A.x - 1);
|
||||
// Fails
|
||||
assert(A.y == 0);
|
||||
A.y = ++A.x;
|
||||
assert(A.y == A.x);
|
||||
delete A.x;
|
||||
assert(A.x == 0);
|
||||
A.y = A.x--;
|
||||
assert(A.y == A.x + 1);
|
||||
assert(A.y == 0);
|
||||
A.y = --A.x;
|
||||
assert(A.y == A.x);
|
||||
A.x += 10;
|
||||
// Fails
|
||||
assert(A.y == 0);
|
||||
assert(A.y + 10 == A.x);
|
||||
A.x -= 10;
|
||||
assert(A.y == A.x);
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 6328: (160-176): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (373-389): CHC: Assertion violation happens here.
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
pragma experimental SMTChecker;
|
||||
contract A {
|
||||
uint[] a;
|
||||
function f() public {
|
||||
A.a.push(2);
|
||||
assert(A.a[A.a.length - 1] == 2);
|
||||
A.a.pop();
|
||||
// Fails
|
||||
assert(A.a.length > 0);
|
||||
assert(A.a.length == 0);
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 6328: (156-178): CHC: Assertion violation happens here.
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
==== Source: AASource ====
|
||||
pragma experimental SMTChecker;
|
||||
import "AASource" as AA;
|
||||
contract A {
|
||||
int x;
|
||||
int y;
|
||||
function a() public {
|
||||
require(A.x < 100);
|
||||
AA.A.y = A.x++;
|
||||
assert(A.y == AA.A.x - 1);
|
||||
// Fails
|
||||
assert(AA.A.y == 0);
|
||||
A.y = ++AA.A.x;
|
||||
assert(A.y == A.x);
|
||||
delete AA.A.x;
|
||||
assert(A.x == 0);
|
||||
A.y = A.x--;
|
||||
assert(AA.A.y == AA.A.x + 1);
|
||||
A.y = --A.x;
|
||||
assert(A.y == A.x);
|
||||
AA.A.x += 10;
|
||||
// Fails
|
||||
assert(A.y == 0);
|
||||
assert(A.y + 10 == A.x);
|
||||
A.x -= 10;
|
||||
assert(AA.A.y == A.x);
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// Warning 6328: (AASource:191-210): CHC: Assertion violation happens here.
|
||||
// Warning 6328: (AASource:402-418): CHC: Assertion violation happens here.
|
||||
Reference in New Issue
Block a user