diff options
author | chriseth <chris@ethereum.org> | 2018-11-29 00:05:52 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-29 00:05:52 +0800 |
commit | b4086ac87037813eb553e92839bbc40de6bbd9ac (patch) | |
tree | 0e88832b720616b9e3525b443dc5f955d772bdbe /test | |
parent | 463951e8cdd9d3d36b4d1b1e1dd41bb8f54bb73c (diff) | |
parent | 9ba3532eac1ad2a647a327c19509b409a2cfb6f2 (diff) | |
download | dexon-solidity-b4086ac87037813eb553e92839bbc40de6bbd9ac.tar.gz dexon-solidity-b4086ac87037813eb553e92839bbc40de6bbd9ac.tar.zst dexon-solidity-b4086ac87037813eb553e92839bbc40de6bbd9ac.zip |
Merge pull request #5526 from ethereum/fixGetterNewCoder
Fix: Disallow structs in getters for old encoder.
Diffstat (limited to 'test')
4 files changed, 32 insertions, 0 deletions
diff --git a/test/libsolidity/syntaxTests/getter/complex_struct.sol b/test/libsolidity/syntaxTests/getter/complex_struct.sol new file mode 100644 index 00000000..3fa8111c --- /dev/null +++ b/test/libsolidity/syntaxTests/getter/complex_struct.sol @@ -0,0 +1,7 @@ +contract C { + struct Y { + uint a; + uint b; + } + mapping(uint256 => Y) public m; +} diff --git a/test/libsolidity/syntaxTests/getter/nested_structs.sol b/test/libsolidity/syntaxTests/getter/nested_structs.sol new file mode 100644 index 00000000..1068f287 --- /dev/null +++ b/test/libsolidity/syntaxTests/getter/nested_structs.sol @@ -0,0 +1,11 @@ +contract C { + struct Y { + uint b; + } + struct X { + Y a; + } + mapping(uint256 => X) public m; +} +// ---- +// TypeError: (88-118): The following types are only supported for getters in the new experimental ABI encoder: struct C.Y memory. Either remove "public" or use "pragma experimental ABIEncoderV2;" to enable the feature. diff --git a/test/libsolidity/syntaxTests/getter/recursive_struct.sol b/test/libsolidity/syntaxTests/getter/recursive_struct.sol new file mode 100644 index 00000000..d81cac60 --- /dev/null +++ b/test/libsolidity/syntaxTests/getter/recursive_struct.sol @@ -0,0 +1,8 @@ +contract C { + struct Y { + Y[] x; + } + mapping(uint256 => Y) public m; +} +// ---- +// TypeError: (53-83): Internal or recursive type is not allowed for public state variables. diff --git a/test/libsolidity/syntaxTests/getter/simple_struct.sol b/test/libsolidity/syntaxTests/getter/simple_struct.sol new file mode 100644 index 00000000..c7a23ae9 --- /dev/null +++ b/test/libsolidity/syntaxTests/getter/simple_struct.sol @@ -0,0 +1,6 @@ +contract C { + struct Y { + uint b; + } + mapping(uint256 => Y) public m; +} |