diff options
author | chriseth <chris@ethereum.org> | 2018-11-23 00:38:12 +0800 |
---|---|---|
committer | chriseth <chris@ethereum.org> | 2018-11-26 19:41:26 +0800 |
commit | ac5803bf3e5dc43adf8bf64c1041603259e8a16f (patch) | |
tree | e41fcbf232206fd1f1736effc2efce0e81414b33 /test | |
parent | 0f0e466d36a3e09c4c5873998b5dd32dbe8025d6 (diff) | |
download | dexon-solidity-ac5803bf3e5dc43adf8bf64c1041603259e8a16f.tar dexon-solidity-ac5803bf3e5dc43adf8bf64c1041603259e8a16f.tar.gz dexon-solidity-ac5803bf3e5dc43adf8bf64c1041603259e8a16f.tar.bz2 dexon-solidity-ac5803bf3e5dc43adf8bf64c1041603259e8a16f.tar.lz dexon-solidity-ac5803bf3e5dc43adf8bf64c1041603259e8a16f.tar.xz dexon-solidity-ac5803bf3e5dc43adf8bf64c1041603259e8a16f.tar.zst dexon-solidity-ac5803bf3e5dc43adf8bf64c1041603259e8a16f.zip |
Changelog entry and tests.
Diffstat (limited to 'test')
4 files changed, 32 insertions, 1 deletions
diff --git a/test/libsolidity/SolidityEndToEndTest.cpp b/test/libsolidity/SolidityEndToEndTest.cpp index e591432a..e9667483 100644 --- a/test/libsolidity/SolidityEndToEndTest.cpp +++ b/test/libsolidity/SolidityEndToEndTest.cpp @@ -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() } diff --git a/test/libsolidity/syntaxTests/inheritance/override/external_turns_public_no_params.sol b/test/libsolidity/syntaxTests/inheritance/override/external_turns_public_no_params.sol new file mode 100644 index 00000000..3d0394f5 --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/external_turns_public_no_params.sol @@ -0,0 +1,7 @@ +contract A { + function f() external pure {} +} +contract B is A { + function f() public pure { + } +} diff --git a/test/libsolidity/syntaxTests/inheritance/super_on_external.sol b/test/libsolidity/syntaxTests/inheritance/super_on_external.sol new file mode 100644 index 00000000..21f3b1c2 --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/super_on_external.sol @@ -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. diff --git a/test/libsolidity/syntaxTests/nameAndTypeResolution/182_equal_overload.sol b/test/libsolidity/syntaxTests/nameAndTypeResolution/182_equal_overload.sol index cb9eb3fa..6f0c7df7 100644 --- a/test/libsolidity/syntaxTests/nameAndTypeResolution/182_equal_overload.sol +++ b/test/libsolidity/syntaxTests/nameAndTypeResolution/182_equal_overload.sol @@ -4,4 +4,3 @@ contract C { } // ---- // DeclarationError: (17-66): Function with same name and arguments defined twice. -// TypeError: (17-66): Overriding function visibility differs. |