enforce interface-functions to be external-declared

- libsolidity: Enforce interface-functions must be external-declared.
- Changelog adapted to reflect changes wrt. functions in interfaces.
- test: Adjustments according to prior interface-function changes.
- tests: Adapting SolidityEndToEndTest to interface-function change.
- docs: Adapted documentation to interface-function change.
This commit is contained in:
Christian Parpart
2018-07-16 12:15:36 +02:00
parent 31e56f9f99
commit 396bf11858
14 changed files with 19 additions and 29 deletions
+1 -1
View File
@@ -11649,7 +11649,7 @@ BOOST_AUTO_TEST_CASE(interface_contract)
char const* sourceCode = R"(
interface I {
event A();
function f() public returns (bool);
function f() external returns (bool);
function() external payable;
}
@@ -2,6 +2,6 @@ interface I {
constructor() public;
}
// ----
// Warning: (15-36): Functions in interfaces should be declared external.
// TypeError: (15-36): Functions in interfaces must be declared external.
// TypeError: (15-36): Constructor cannot be defined in interfaces.
// TypeError: (15-36): Constructor must be implemented if declared.
@@ -3,6 +3,6 @@ interface I {
}
// ----
// Warning: (15-35): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// Warning: (15-35): Functions in interfaces should be declared external.
// TypeError: (15-35): Functions in interfaces must be declared external.
// TypeError: (15-35): Constructor cannot be defined in interfaces.
// TypeError: (15-35): Constructor must be implemented if declared.
@@ -1,7 +1,6 @@
interface I {
function f() public {
function f() external pure {
}
}
// ----
// TypeError: (18-45): Functions in interfaces cannot have an implementation.
// Warning: (18-45): Functions in interfaces should be declared external.
// TypeError: (18-52): Functions in interfaces cannot have an implementation.
@@ -1,5 +1,4 @@
interface I {
function f(uint a) public returns (bool);
function f(uint a) external returns (bool);
}
// ----
// Warning: (18-59): Functions in interfaces should be declared external.
@@ -1,5 +1,4 @@
interface Interface {
function f() public;
function f() external;
}
// ----
// Warning: (23-43): Functions in interfaces should be declared external.
@@ -2,5 +2,4 @@ interface I {
function f();
}
// ----
// Warning: (15-28): Functions in interfaces should be declared external.
// Warning: (15-28): No visibility specified. Defaulting to "public". In interfaces it defaults to external.
// TypeError: (15-28): Functions in interfaces must be declared external.
@@ -2,4 +2,4 @@ interface I {
function f() internal;
}
// ----
// TypeError: (15-37): Functions in interfaces cannot be internal or private.
// TypeError: (15-37): Functions in interfaces must be declared external.
@@ -2,4 +2,4 @@ interface I {
function f() private;
}
// ----
// TypeError: (15-36): Functions in interfaces cannot be internal or private.
// TypeError: (15-36): Functions in interfaces must be declared external.
@@ -2,4 +2,4 @@ interface I {
function f() public;
}
// ----
// Warning: (15-35): Functions in interfaces should be declared external.
// TypeError: (15-35): Functions in interfaces must be declared external.