Skip to content

Commit 8537278

Browse files
committed
Add and update tests.
1 parent 8325694 commit 8537278

16 files changed

+192
-19
lines changed
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
contract C {
2-
function f() view public {
3-
C[0];
2+
function f() pure public {
3+
C[1];
44
}
55
}
66
// ----
77
// Warning 6133: (52-56): Statement has no effect.
8-
// Warning 2018: (17-63): Function state mutability can be restricted to pure
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
interface I {}
2+
3+
library L {
4+
function f() pure public {
5+
I[1];
6+
}
7+
}
8+
// ----
9+
// Warning 6133: (67-71): Statement has no effect.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
contract C {
2+
function f0() public {
3+
abi.decode("", (int[0]));
4+
}
5+
6+
function f1() public {
7+
abi.decode("", (int[0][]));
8+
}
9+
10+
function f2() public {
11+
abi.decode("", (int[][0]));
12+
}
13+
14+
function f3() public {
15+
abi.decode("", (int[][0][]));
16+
}
17+
18+
function f4() public {
19+
abi.decode("", (int[][][0]));
20+
}
21+
22+
struct S { uint t; }
23+
function f5() public {
24+
abi.decode("", (S[][][0]));
25+
}
26+
}
27+
// ----
28+
// TypeError 1406: (68-69): Array with zero length specified.
29+
// TypeError 1406: (136-137): Array with zero length specified.
30+
// TypeError 1406: (208-209): Array with zero length specified.
31+
// TypeError 1406: (278-279): Array with zero length specified.
32+
// TypeError 1406: (352-353): Array with zero length specified.
33+
// TypeError 1406: (447-448): Array with zero length specified.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
contract C {
2+
function f() public returns (bytes memory) {
3+
return abi.encode(abi.decode("", (int[0])));
4+
}
5+
}
6+
// ----
7+
// TypeError 1406: (108-109): Array with zero length specified.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
contract C {
2+
function f() view public {
3+
C[0];
4+
}
5+
}
6+
// ----
7+
// TypeError 1406: (54-55): Array with zero length specified.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
interface I {}
2+
3+
contract C {
4+
function f() view public {
5+
I[0];
6+
}
7+
}
8+
// ----
9+
// TypeError 1406: (70-71): Array with zero length specified.

test/libsolidity/syntaxTests/array/invalid/library_index_access.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
library C {
1+
library L {
22
function f() view public {
3-
C[0];
3+
L[1];
44
}
55
}
66
// ----
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
library L {
2+
function f() view public {
3+
L[0];
4+
}
5+
}
6+
// ----
7+
// TypeError 2876: (51-55): Index access for library types and arrays of libraries are not possible.
8+
// TypeError 1406: (53-54): Array with zero length specified.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
contract B {
2+
}
3+
4+
contract C is B {
5+
function f(bool[] calldata dd) pure public {
6+
super[1];
7+
}
8+
}
9+
// ----
10+
// TypeError 5530: (91-99): Index notation is not allowed for type.
Lines changed: 50 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,53 @@
1+
struct S { uint[0] x; }
2+
3+
error Err(uint[0]);
4+
event Ev(uint[0]);
5+
16
contract C {
2-
int[0] a;
3-
uint[0] b;
4-
bytes1[0] c;
5-
bytes32[0] d;
6-
bytes[0] e;
7-
string[0] f;
7+
int[0] a;
8+
uint[0] b;
9+
bytes1[0] c;
10+
bytes32[0] d;
11+
bytes[0] e;
12+
string[0] f;
13+
mapping(int => int[0]) m;
14+
function() returns (uint[0] memory) fPtr;
15+
16+
function foo () private pure {
17+
uint[0] storage x;
18+
}
19+
20+
function foo (uint[0] memory fArg) private pure returns(uint[0] memory) {
21+
fArg;
22+
}
23+
24+
function tup() private pure {
25+
(uint[0] memory aTup, uint bTup) = ([], 1);
26+
}
27+
28+
function cat() private pure {
29+
try this.g() returns (uint[0] memory) {} catch (bytes memory bCatch) {}
30+
}
31+
32+
function array_alloc() private pure {
33+
new uint[0][](3);
34+
}
835
}
936
// ----
10-
// TypeError 1406: (19-20): Array with zero length specified.
11-
// TypeError 1406: (32-33): Array with zero length specified.
12-
// TypeError 1406: (47-48): Array with zero length specified.
13-
// TypeError 1406: (63-64): Array with zero length specified.
14-
// TypeError 1406: (77-78): Array with zero length specified.
15-
// TypeError 1406: (92-93): Array with zero length specified.
37+
// TypeError 1406: (16-17): Array with zero length specified.
38+
// TypeError 1406: (40-41): Array with zero length specified.
39+
// TypeError 1406: (59-60): Array with zero length specified.
40+
// TypeError 1406: (86-87): Array with zero length specified.
41+
// TypeError 1406: (101-102): Array with zero length specified.
42+
// TypeError 1406: (118-119): Array with zero length specified.
43+
// TypeError 1406: (136-137): Array with zero length specified.
44+
// TypeError 1406: (152-153): Array with zero length specified.
45+
// TypeError 1406: (169-170): Array with zero length specified.
46+
// TypeError 1406: (198-199): Array with zero length specified.
47+
// TypeError 1406: (234-235): Array with zero length specified.
48+
// TypeError 1406: (300-301): Array with zero length specified.
49+
// TypeError 1406: (344-345): Array with zero length specified.
50+
// TypeError 1406: (386-387): Array with zero length specified.
51+
// TypeError 1406: (469-470): Array with zero length specified.
52+
// TypeError 1406: (583-584): Array with zero length specified.
53+
// TypeError 1406: (694-695): Array with zero length specified.

0 commit comments

Comments
 (0)