diff options
author | chriseth <chris@ethereum.org> | 2018-04-19 20:25:12 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-19 20:25:12 +0800 |
commit | 6407f1f7bb5f3944eb695517fc3453b701329f4c (patch) | |
tree | 1353e99203230e284eae9ad91550a75b86b2a342 /test | |
parent | ae834e3dbe912dc0780ad2bebfc633d6d825c963 (diff) | |
parent | a94945dfe40c879b6c3762620987a235582ccecf (diff) | |
download | dexon-solidity-6407f1f7bb5f3944eb695517fc3453b701329f4c.tar dexon-solidity-6407f1f7bb5f3944eb695517fc3453b701329f4c.tar.gz dexon-solidity-6407f1f7bb5f3944eb695517fc3453b701329f4c.tar.bz2 dexon-solidity-6407f1f7bb5f3944eb695517fc3453b701329f4c.tar.lz dexon-solidity-6407f1f7bb5f3944eb695517fc3453b701329f4c.tar.xz dexon-solidity-6407f1f7bb5f3944eb695517fc3453b701329f4c.tar.zst dexon-solidity-6407f1f7bb5f3944eb695517fc3453b701329f4c.zip |
Merge pull request #3932 from ethereum/betterErrorForFailedLookup
Better error for failed lookup
Diffstat (limited to 'test')
5 files changed, 34 insertions, 15 deletions
diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp index 7c0e8643..97cf0410 100644 --- a/test/libsolidity/SolidityNameAndTypeResolution.cpp +++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp @@ -2993,21 +2993,6 @@ BOOST_AUTO_TEST_CASE(literal_strings) CHECK_SUCCESS(text); } -BOOST_AUTO_TEST_CASE(memory_structs_with_mappings) -{ - char const* text = R"( - contract Test { - struct S { uint8 a; mapping(uint => uint) b; uint8 c; } - S s; - function f() public { - S memory x; - x.b[1]; - } - } - )"; - CHECK_ERROR(text, TypeError, "Member \"b\" is not available in struct Test.S memory outside of storage."); -} - BOOST_AUTO_TEST_CASE(string_bytes_conversion) { char const* text = R"( diff --git a/test/libsolidity/syntaxTests/memberLookup/failed_function_lookup.sol b/test/libsolidity/syntaxTests/memberLookup/failed_function_lookup.sol new file mode 100644 index 00000000..c23992e9 --- /dev/null +++ b/test/libsolidity/syntaxTests/memberLookup/failed_function_lookup.sol @@ -0,0 +1,7 @@ +contract C { + function f(uint, uint) {} + function f(uint) {} + function g() { f(1, 2, 3); } +} +// ---- +// TypeError: (80-81): No matching declaration found after argument-dependent lookup. diff --git a/test/libsolidity/syntaxTests/memberLookup/failed_function_lookup_in_library.sol b/test/libsolidity/syntaxTests/memberLookup/failed_function_lookup_in_library.sol new file mode 100644 index 00000000..310c4a10 --- /dev/null +++ b/test/libsolidity/syntaxTests/memberLookup/failed_function_lookup_in_library.sol @@ -0,0 +1,9 @@ +library L { + function f(uint, uint) {} + function f(uint) {} +} +contract C { + function g() { L.f(1, 2, 3); } +} +// ---- +// TypeError: (94-97): Member "f" not found or not visible after argument-dependent lookup in type(library L) diff --git a/test/libsolidity/syntaxTests/memberLookup/memory_structs_with_mappings.sol b/test/libsolidity/syntaxTests/memberLookup/memory_structs_with_mappings.sol new file mode 100644 index 00000000..bdafc754 --- /dev/null +++ b/test/libsolidity/syntaxTests/memberLookup/memory_structs_with_mappings.sol @@ -0,0 +1,10 @@ +contract Test { + struct S { uint8 a; mapping(uint => uint) b; uint8 c; } + S s; + function f() public { + S memory x; + x.b[1]; + } +} +// ---- +// TypeError: (118-121): Member "b" is not available in struct Test.S memory outside of storage. diff --git a/test/libsolidity/syntaxTests/memberLookup/push_on_memory_types.sol b/test/libsolidity/syntaxTests/memberLookup/push_on_memory_types.sol new file mode 100644 index 00000000..310c073f --- /dev/null +++ b/test/libsolidity/syntaxTests/memberLookup/push_on_memory_types.sol @@ -0,0 +1,8 @@ +contract Test { + function f() public pure { + uint[] memory x; + x.push(1); + } +} +// ---- +// TypeError: (77-83): Member "push" is not available in uint256[] memory outside of storage. |