Skip to content

Commit 5375dff

Browse files
committed
Refactor error/event selector tests
- Remove redundant semantic tests for error selector - Consolidate semanticTests/error/ and semanticTests/errors/ dirs - Make "selector syntax test" for errors and event an actual test for syntax rather than a copy of the same semantic test
1 parent acbdcc3 commit 5375dff

File tree

5 files changed

+31
-81
lines changed

5 files changed

+31
-81
lines changed

test/libsolidity/semanticTests/error/selector.sol

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 20 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,34 @@
11
library L {
2-
error E();
3-
}
4-
library S {
5-
error E(uint);
6-
}
7-
library T {
8-
error E();
2+
error E(bytes4, bool, bytes);
93
}
104

11-
error E();
5+
error E(bytes4, bool, bytes);
126

137
interface I {
14-
error E();
15-
function f() external pure;
8+
error E(bytes4, bool, bytes);
169
}
1710

18-
contract D {
19-
error F();
11+
contract B {
12+
error E(bytes4, bool, bytes);
2013
}
2114

22-
contract C is D {
23-
function test1() public pure returns (bytes4, bytes4, bytes4, bytes4) {
24-
assert(L.E.selector == T.E.selector);
25-
assert(L.E.selector != S.E.selector);
26-
assert(E.selector == L.E.selector);
27-
assert(I.E.selector == L.E.selector);
28-
return (L.E.selector, S.E.selector, E.selector, I.E.selector);
29-
}
15+
contract C is B {
16+
bytes4 public librarySelector = L.E.selector;
17+
bytes4 internal freeSelector = E.selector;
18+
bytes4 internal contractSelector = B.E.selector;
19+
bytes4 private interfaceSelector = I.E.selector;
3020

31-
bytes4 s1 = L.E.selector;
32-
bytes4 s2 = S.E.selector;
33-
bytes4 s3 = T.E.selector;
34-
bytes4 s4 = I.E.selector;
35-
36-
function test2() view external returns (bytes4, bytes4, bytes4, bytes4) {
37-
return (s1, s2, s3, s4);
38-
}
21+
function f(bool condition) public view {
22+
assert(librarySelector == L.E.selector);
23+
assert(E.selector == B.E.selector);
3924

40-
function test3() pure external returns (bytes4) {
41-
return (F.selector);
25+
if (condition)
26+
revert E(E.selector, true, "123");
27+
else
28+
revert L.E((B.E.selector), true, "123");
4229
}
4330
}
4431
// ----
45-
// Warning 2519: (16-26): This declaration shadows an existing declaration.
46-
// Warning 2519: (45-59): This declaration shadows an existing declaration.
47-
// Warning 2519: (78-88): This declaration shadows an existing declaration.
48-
// Warning 2519: (122-132): This declaration shadows an existing declaration.
32+
// Warning 2519: (16-45): This declaration shadows an existing declaration.
33+
// Warning 2519: (98-127): This declaration shadows an existing declaration.
34+
// Warning 2519: (148-177): This declaration shadows an existing declaration.

test/libsolidity/syntaxTests/events/event_selector_library_called_inside_function.sol

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ contract D {
66
function test1() external pure returns (bytes32) {
77
return Y.E.selector;
88
}
9-
109
}
1110
// ----
1211
// TypeError 9582: (123-135): Member "selector" not found or not visible after argument-dependent lookup in function ().
Lines changed: 11 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,20 @@
11
library L {
2-
event E();
3-
}
4-
library S {
5-
event E(uint);
6-
}
7-
library T {
8-
event E();
2+
event E(bytes32, bool, bytes indexed);
93
}
104

11-
contract D {
12-
event F();
5+
contract B {
6+
event E(bytes32, bool, bytes indexed);
137
}
148

15-
contract C is D {
16-
function test1() external pure returns (bytes32, bytes32) {
17-
assert(L.E.selector == T.E.selector);
9+
contract C is B {
10+
bytes32 public librarySelector = L.E.selector;
11+
bytes32 inheritedSelector = E.selector;
1812

19-
assert(L.E.selector != S.E.selector);
20-
assert(T.E.selector != S.E.selector);
21-
22-
return (L.E.selector, S.E.selector);
23-
}
24-
25-
bytes32 s1 = L.E.selector;
26-
bytes32 s2 = S.E.selector;
27-
bytes32 s3 = T.E.selector;
28-
29-
function test2() view external returns (bytes32, bytes32, bytes32) {
30-
return (s1, s2, s3);
31-
}
13+
function f() public {
14+
assert(librarySelector == L.E.selector);
15+
assert(E.selector == B.E.selector);
3216

33-
function test3() pure external returns (bytes32) {
34-
return (F.selector);
17+
emit E(E.selector, true, "123");
18+
emit L.E((B.E.selector), true, "123");
3519
}
3620
}
37-
// ----

0 commit comments

Comments
 (0)