mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Changelog entry and tests.
This commit is contained in:
parent
0f0e466d36
commit
ac5803bf3e
@ -1,6 +1,7 @@
|
||||
### 0.5.1 (unreleased)
|
||||
|
||||
Language Features:
|
||||
* Allow public functions to override external functions.
|
||||
|
||||
|
||||
Compiler Features:
|
||||
|
@ -14062,6 +14062,21 @@ BOOST_AUTO_TEST_CASE(flipping_sign_tests)
|
||||
ABI_CHECK(callContractFunction("f()"), encodeArgs(true));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(external_public_override)
|
||||
{
|
||||
char const* sourceCode = R"(
|
||||
contract A {
|
||||
function f() external returns (uint) { return 1; }
|
||||
}
|
||||
contract B is A {
|
||||
function f() public returns (uint) { return 2; }
|
||||
function g() public returns (uint) { return f(); }
|
||||
}
|
||||
)";
|
||||
compileAndRun(sourceCode);
|
||||
ABI_CHECK(callContractFunction("f()"), encodeArgs(2));
|
||||
ABI_CHECK(callContractFunction("g()"), encodeArgs(2));
|
||||
}
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,7 @@
|
||||
contract A {
|
||||
function f() external pure {}
|
||||
}
|
||||
contract B is A {
|
||||
function f() public pure {
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
contract A {
|
||||
function f() external pure {}
|
||||
}
|
||||
contract B is A {
|
||||
function f() public pure {
|
||||
super.f();
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// TypeError: (106-113): Member "f" not found or not visible after argument-dependent lookup in contract super B.
|
@ -4,4 +4,3 @@ contract C {
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (17-66): Function with same name and arguments defined twice.
|
||||
// TypeError: (17-66): Overriding function visibility differs.
|
||||
|
Loading…
Reference in New Issue
Block a user