aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/SolidityNameAndTypeResolution.cpp
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2015-06-18 22:35:25 +0800
committerchriseth <c@ethdev.com>2015-06-18 22:37:06 +0800
commit4adc684939924da25bebdae427e5bc789e93b0c4 (patch)
treef4ada1b11359c30f9758e11b070cab0891b3ec45 /libsolidity/SolidityNameAndTypeResolution.cpp
parent1541aa403bf9420e426af4b3045a1ebf423c6fa1 (diff)
downloaddexon-solidity-4adc684939924da25bebdae427e5bc789e93b0c4.tar.gz
dexon-solidity-4adc684939924da25bebdae427e5bc789e93b0c4.tar.zst
dexon-solidity-4adc684939924da25bebdae427e5bc789e93b0c4.zip
Fix and test for not really recursive structs.
Fixes #2223.
Diffstat (limited to 'libsolidity/SolidityNameAndTypeResolution.cpp')
-rw-r--r--libsolidity/SolidityNameAndTypeResolution.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/libsolidity/SolidityNameAndTypeResolution.cpp b/libsolidity/SolidityNameAndTypeResolution.cpp
index fced1284..afa8b727 100644
--- a/libsolidity/SolidityNameAndTypeResolution.cpp
+++ b/libsolidity/SolidityNameAndTypeResolution.cpp
@@ -190,6 +190,17 @@ BOOST_AUTO_TEST_CASE(struct_definition_indirectly_recursive)
BOOST_CHECK_THROW(parseTextAndResolveNames(text), ParserError);
}
+BOOST_AUTO_TEST_CASE(struct_definition_not_really_recursive)
+{
+ char const* text = R"(
+ contract test {
+ struct s1 { uint a; }
+ struct s2 { s1 x; s1 y; }
+ }
+ )";
+ BOOST_CHECK_NO_THROW(parseTextAndResolveNames(text));
+}
+
BOOST_AUTO_TEST_CASE(struct_definition_recursion_via_mapping)
{
char const* text = "contract test {\n"