mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Allow structs containing mappings in memory.
This commit is contained in:
parent
6be070cf1f
commit
13effae9d3
@ -5034,6 +5034,29 @@ BOOST_AUTO_TEST_CASE(literal_strings)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(memory_structs_with_mappings)
|
||||||
|
{
|
||||||
|
char const* sourceCode = R"(
|
||||||
|
contract Test {
|
||||||
|
struct S { uint8 a; mapping(uint => uint) b; uint8 c; }
|
||||||
|
S s;
|
||||||
|
function f() returns (uint) {
|
||||||
|
S memory x;
|
||||||
|
if (x.a != 0 || x.c != 0) return 1;
|
||||||
|
x.a = 4; x.c = 5;
|
||||||
|
s = x;
|
||||||
|
if (s.a != 4 || s.c != 5) return 2;
|
||||||
|
x = S(2, 3);
|
||||||
|
if (x.a != 2 || x.c != 3) return 3;
|
||||||
|
x = s;
|
||||||
|
if (s.a != 4 || s.c != 5) return 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
compileAndRun(sourceCode, 0, "Test");
|
||||||
|
BOOST_CHECK(callContractFunction("f()") == encodeArgs(u256(0)));
|
||||||
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_SUITE_END()
|
BOOST_AUTO_TEST_SUITE_END()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2134,6 +2134,21 @@ BOOST_AUTO_TEST_CASE(invalid_integer_literal_exp)
|
|||||||
BOOST_CHECK_THROW(parseTextAndResolveNames(text), TypeError);
|
BOOST_CHECK_THROW(parseTextAndResolveNames(text), TypeError);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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() {
|
||||||
|
S memory x;
|
||||||
|
x.b[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
BOOST_CHECK_THROW(parseTextAndResolveNames(text), TypeError);
|
||||||
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_SUITE_END()
|
BOOST_AUTO_TEST_SUITE_END()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user