mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Fix missing error when accessing unintialized variables.
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
contract Test {
|
||||
function testFunc() external {
|
||||
for (;;) {}
|
||||
bytes storage b;
|
||||
b[0] = 0x42;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError 3464: (83-84): This variable is of storage pointer type and can be accessed without prior assignment, which would lead to undefined behaviour.
|
||||
@@ -0,0 +1,13 @@
|
||||
contract Test {
|
||||
|
||||
struct Sample { bool flag; }
|
||||
Sample public s;
|
||||
|
||||
function testFunc() external {
|
||||
if(true){}
|
||||
Sample storage t;
|
||||
t.flag=true;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError 3464: (155-156): This variable is of storage pointer type and can be accessed without prior assignment, which would lead to undefined behaviour.
|
||||
@@ -0,0 +1,16 @@
|
||||
contract Test {
|
||||
|
||||
struct Sample { bool flag; }
|
||||
Sample public s;
|
||||
|
||||
modifier checkAddr(address _a){
|
||||
require(_a!=address(0));
|
||||
_;
|
||||
}
|
||||
function testFunc(address _a) external checkAddr(_a) {
|
||||
Sample storage t;
|
||||
t.flag=true;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError 3464: (237-238): This variable is of storage pointer type and can be accessed without prior assignment, which would lead to undefined behaviour.
|
||||
@@ -0,0 +1,9 @@
|
||||
contract Test {
|
||||
function testFunc() external {
|
||||
require(true);
|
||||
bytes storage b;
|
||||
b[0] = 0x42;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError 3464: (86-87): This variable is of storage pointer type and can be accessed without prior assignment, which would lead to undefined behaviour.
|
||||
@@ -0,0 +1,9 @@
|
||||
contract Test {
|
||||
function testFunc() external {
|
||||
while (true) {}
|
||||
bytes storage b;
|
||||
b[0] = 0x42;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError 3464: (87-88): This variable is of storage pointer type and can be accessed without prior assignment, which would lead to undefined behaviour.
|
||||
Reference in New Issue
Block a user