Skip to content

Commit acbdcc3

Browse files
committed
Revert the change that made events accessible in other contacts via qualified access
1 parent 82e5339 commit acbdcc3

File tree

8 files changed

+44
-25
lines changed

8 files changed

+44
-25
lines changed

Changelog.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ Important Bugfixes:
66

77
Language Features:
88
* Add `E.selector` for a non-anonymous event `E` to access the 32-byte selector topic.
9-
* Errors and Events allow qualified access from other contracts.
109

1110

1211
Compiler Features:

libsolidity/ast/AST.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1216,7 +1216,7 @@ class EventDefinition: public CallableDeclaration, public StructurallyDocumented
12161216
FunctionTypePointer functionType(bool /*_internal*/) const override;
12171217

12181218
bool isVisibleInDerivedContracts() const override { return true; }
1219-
bool isVisibleViaContractTypeAccess() const override { return true; }
1219+
bool isVisibleViaContractTypeAccess() const override { return false; /* TODO */ }
12201220

12211221
EventDefinitionAnnotation& annotation() const override;
12221222

test/libsolidity/semanticTests/events/event_selector.sol

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,32 +7,26 @@ library S {
77
library T {
88
event E();
99
}
10-
interface I {
11-
event E();
12-
}
1310

1411
contract D {
1512
event F();
1613
}
1714

1815
contract C is D {
19-
function test1() external pure returns (bytes32, bytes32, bytes32) {
16+
function test1() external pure returns (bytes32, bytes32) {
2017
assert(L.E.selector == T.E.selector);
21-
assert(I.E.selector == L.E.selector);
2218

2319
assert(L.E.selector != S.E.selector);
2420
assert(T.E.selector != S.E.selector);
25-
assert(I.E.selector != S.E.selector);
2621

27-
return (L.E.selector, S.E.selector, I.E.selector);
22+
return (L.E.selector, S.E.selector);
2823
}
2924

3025
bytes32 s1 = L.E.selector;
3126
bytes32 s2 = S.E.selector;
3227
bytes32 s3 = T.E.selector;
33-
bytes32 s4 = I.E.selector;
34-
function test2() external returns (bytes32, bytes32, bytes32, bytes32) {
35-
return (s1, s2, s3, s4);
28+
function test2() external returns (bytes32, bytes32, bytes32) {
29+
return (s1, s2, s3);
3630
}
3731

3832
function test3() external returns (bytes32) {
@@ -42,6 +36,6 @@ contract C is D {
4236
// ====
4337
// compileViaYul: also
4438
// ----
45-
// test1() -> 0x92bbf6e823a631f3c8e09b1c8df90f378fb56f7fbc9701827e1ff8aad7f6a028, 0x2ff0672f372fbe844b353429d4510ea5e43683af134c54f75f789ff57bc0c0, 0x92bbf6e823a631f3c8e09b1c8df90f378fb56f7fbc9701827e1ff8aad7f6a028
46-
// test2() -> 0x92bbf6e823a631f3c8e09b1c8df90f378fb56f7fbc9701827e1ff8aad7f6a028, 0x2ff0672f372fbe844b353429d4510ea5e43683af134c54f75f789ff57bc0c0, 0x92bbf6e823a631f3c8e09b1c8df90f378fb56f7fbc9701827e1ff8aad7f6a028, 0x92bbf6e823a631f3c8e09b1c8df90f378fb56f7fbc9701827e1ff8aad7f6a028
39+
// test1() -> 0x92bbf6e823a631f3c8e09b1c8df90f378fb56f7fbc9701827e1ff8aad7f6a028, 0x2ff0672f372fbe844b353429d4510ea5e43683af134c54f75f789ff57bc0c0
40+
// test2() -> 0x92bbf6e823a631f3c8e09b1c8df90f378fb56f7fbc9701827e1ff8aad7f6a028, 0x2ff0672f372fbe844b353429d4510ea5e43683af134c54f75f789ff57bc0c0, 0x92bbf6e823a631f3c8e09b1c8df90f378fb56f7fbc9701827e1ff8aad7f6a028
4741
// test3() -> 0x28811f5935c16a099486acb976b3a6b4942950a1425a74e9eb3e9b7f7135e12a

test/libsolidity/semanticTests/events/simple.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ contract C {
22
event E();
33
}
44

5-
contract Test {
5+
contract Test is C {
66
event E(uint256, uint256);
77
function f() public {
88
emit C.E();
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
contract D {
2+
event E();
3+
}
4+
5+
contract C {
6+
function f() external pure returns (bytes32) {
7+
return D.E.selector;
8+
}
9+
}
10+
// ----
11+
// TypeError 9582: (110-113): Member "E" not found or not visible after argument-dependent lookup in type(contract D).
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
interface I {
2+
event E();
3+
}
4+
5+
contract C {
6+
function f() external pure returns (bytes32) {
7+
return I.E.selector;
8+
}
9+
}
10+
// ----
11+
// TypeError 9582: (111-114): Member "E" not found or not visible after argument-dependent lookup in type(contract I).
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
library L {
2+
event E();
3+
}
4+
5+
contract C {
6+
function f() external pure returns (bytes32) {
7+
return L.E.selector;
8+
}
9+
}
10+
// ----

test/libsolidity/syntaxTests/events/event_selector_syntax.sol

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,27 @@ library S {
77
library T {
88
event E();
99
}
10-
interface I {
11-
event E();
12-
}
1310

1411
contract D {
1512
event F();
1613
}
1714

1815
contract C is D {
19-
function test1() external pure returns (bytes32, bytes32, bytes32) {
16+
function test1() external pure returns (bytes32, bytes32) {
2017
assert(L.E.selector == T.E.selector);
21-
assert(I.E.selector == L.E.selector);
2218

2319
assert(L.E.selector != S.E.selector);
2420
assert(T.E.selector != S.E.selector);
25-
assert(I.E.selector != S.E.selector);
2621

27-
return (L.E.selector, S.E.selector, I.E.selector);
22+
return (L.E.selector, S.E.selector);
2823
}
2924

3025
bytes32 s1 = L.E.selector;
3126
bytes32 s2 = S.E.selector;
3227
bytes32 s3 = T.E.selector;
33-
bytes32 s4 = I.E.selector;
3428

35-
function test2() view external returns (bytes32, bytes32, bytes32, bytes32) {
36-
return (s1, s2, s3, s4);
29+
function test2() view external returns (bytes32, bytes32, bytes32) {
30+
return (s1, s2, s3);
3731
}
3832

3933
function test3() pure external returns (bytes32) {

0 commit comments

Comments
 (0)