diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-08-12 06:06:00 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-12 06:06:00 +0800 |
commit | 52ccc264940c00ae8ffe015433bc1d094c1a4f1f (patch) | |
tree | 68d25d1f062ed105c7ab0d6eb7970540c6f4ae3d /test | |
parent | d968912a4ce89a40d7d03bf0748a07c397662f68 (diff) | |
parent | 3571db6e3f54476cdabaf4861100564ae4b00a6a (diff) | |
download | dexon-solidity-52ccc264940c00ae8ffe015433bc1d094c1a4f1f.tar dexon-solidity-52ccc264940c00ae8ffe015433bc1d094c1a4f1f.tar.gz dexon-solidity-52ccc264940c00ae8ffe015433bc1d094c1a4f1f.tar.bz2 dexon-solidity-52ccc264940c00ae8ffe015433bc1d094c1a4f1f.tar.lz dexon-solidity-52ccc264940c00ae8ffe015433bc1d094c1a4f1f.tar.xz dexon-solidity-52ccc264940c00ae8ffe015433bc1d094c1a4f1f.tar.zst dexon-solidity-52ccc264940c00ae8ffe015433bc1d094c1a4f1f.zip |
Merge pull request #2581 from federicobond/improve-override-error
Improve override function error messages
Diffstat (limited to 'test')
-rw-r--r-- | test/libsolidity/SolidityNameAndTypeResolution.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp index f7648bd7..49a23e13 100644 --- a/test/libsolidity/SolidityNameAndTypeResolution.cpp +++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp @@ -924,16 +924,25 @@ BOOST_AUTO_TEST_CASE(illegal_override_visibility) contract B { function f() internal {} } contract C is B { function f() public {} } )"; - CHECK_ERROR(text, TypeError, "Override changes extended function signature."); + CHECK_ERROR(text, TypeError, "Overriding function visibility differs"); } -BOOST_AUTO_TEST_CASE(illegal_override_constness) +BOOST_AUTO_TEST_CASE(illegal_override_remove_constness) { char const* text = R"( contract B { function f() constant {} } contract C is B { function f() {} } )"; - CHECK_ERROR(text, TypeError, "Override changes extended function signature."); + CHECK_ERROR(text, TypeError, "Overriding function should be declared constant."); +} + +BOOST_AUTO_TEST_CASE(illegal_override_add_constness) +{ + char const* text = R"( + contract B { function f() {} } + contract C is B { function f() constant {} } + )"; + CHECK_ERROR(text, TypeError, "Overriding function should not be declared constant."); } BOOST_AUTO_TEST_CASE(complex_inheritance) @@ -2491,7 +2500,7 @@ BOOST_AUTO_TEST_CASE(override_changes_return_types) function f(uint a) returns (uint8) { } } )"; - CHECK_ERROR(sourceCode, TypeError, "Override changes extended function signature."); + CHECK_ERROR(sourceCode, TypeError, "Overriding function return types differ"); } BOOST_AUTO_TEST_CASE(multiple_constructors) @@ -4732,7 +4741,7 @@ BOOST_AUTO_TEST_CASE(illegal_override_payable) contract B { function f() payable {} } contract C is B { function f() {} } )"; - CHECK_ERROR(text, TypeError, "Override changes extended function signature."); + CHECK_ERROR(text, TypeError, "Overriding function should be declared payable."); } BOOST_AUTO_TEST_CASE(illegal_override_payable_nonpayable) @@ -4741,7 +4750,7 @@ BOOST_AUTO_TEST_CASE(illegal_override_payable_nonpayable) contract B { function f() {} } contract C is B { function f() payable {} } )"; - CHECK_ERROR(text, TypeError, "Override changes extended function signature."); + CHECK_ERROR(text, TypeError, "Overriding function should not be declared payable."); } BOOST_AUTO_TEST_CASE(function_variable_mixin) |