diff options
author | Lefteris Karapetsas <lefteris@refu.co> | 2015-02-03 00:52:50 +0800 |
---|---|---|
committer | Lefteris Karapetsas <lefteris@refu.co> | 2015-02-03 00:52:50 +0800 |
commit | 3b0ca66cd2c211f6678f26f0f97fb4552691f043 (patch) | |
tree | 9590ddcde9ddb6cd855a702f034f72de228bac16 | |
parent | 33f86b8af3add9c8988ad9ec1ae874cf937e2e35 (diff) | |
download | dexon-solidity-3b0ca66cd2c211f6678f26f0f97fb4552691f043.tar dexon-solidity-3b0ca66cd2c211f6678f26f0f97fb4552691f043.tar.gz dexon-solidity-3b0ca66cd2c211f6678f26f0f97fb4552691f043.tar.bz2 dexon-solidity-3b0ca66cd2c211f6678f26f0f97fb4552691f043.tar.lz dexon-solidity-3b0ca66cd2c211f6678f26f0f97fb4552691f043.tar.xz dexon-solidity-3b0ca66cd2c211f6678f26f0f97fb4552691f043.tar.zst dexon-solidity-3b0ca66cd2c211f6678f26f0f97fb4552691f043.zip |
Accessors for multiple mappings implemented
-rw-r--r-- | SolidityEndToEndTest.cpp | 3 | ||||
-rw-r--r-- | SolidityNameAndTypeResolution.cpp | 15 |
2 files changed, 16 insertions, 2 deletions
diff --git a/SolidityEndToEndTest.cpp b/SolidityEndToEndTest.cpp index 63a8ebcd..9a04e02d 100644 --- a/SolidityEndToEndTest.cpp +++ b/SolidityEndToEndTest.cpp @@ -925,16 +925,19 @@ BOOST_AUTO_TEST_CASE(complex_accessors) " mapping(uint256 => string4) to_string_map;\n" " mapping(uint256 => bool) to_bool_map;\n" " mapping(uint256 => uint256) to_uint_map;\n" + " mapping(uint256 => mapping(uint256 => uint256)) to_multiple_map;\n" " function test() {\n" " to_string_map[42] = \"24\";\n" " to_bool_map[42] = false;\n" " to_uint_map[42] = 12;\n" + " to_multiple_map[42][23] = 31;\n" " }\n" "}\n"; compileAndRun(sourceCode); BOOST_CHECK(callContractFunction("to_string_map(uint256)", 42) == encodeArgs("24")); BOOST_CHECK(callContractFunction("to_bool_map(uint256)", 42) == encodeArgs(false)); BOOST_CHECK(callContractFunction("to_uint_map(uint256)", 42) == encodeArgs(12)); + BOOST_CHECK(callContractFunction("to_multiple_map(uint256,uint256)", 42, 23) == encodeArgs(31)); } BOOST_AUTO_TEST_CASE(balance) diff --git a/SolidityNameAndTypeResolution.cpp b/SolidityNameAndTypeResolution.cpp index df0e07e1..2fe3288a 100644 --- a/SolidityNameAndTypeResolution.cpp +++ b/SolidityNameAndTypeResolution.cpp @@ -638,6 +638,7 @@ BOOST_AUTO_TEST_CASE(state_variable_accessors) " }\n" "uint256 foo;\n" "mapping(uint=>string4) map;\n" + "mapping(uint=>mapping(uint=>string4)) multiple_map;\n" "}\n"; ASTPointer<SourceUnit> source; @@ -649,10 +650,20 @@ BOOST_AUTO_TEST_CASE(state_variable_accessors) auto returnParams = function->getReturnParameterTypeNames(); BOOST_CHECK_EQUAL(returnParams.at(0), "uint256"); BOOST_CHECK(function->isConstant()); + function = retrieveFunctionBySignature(contract, "map(uint256)"); BOOST_REQUIRE(function && function->hasDeclaration()); - auto Params = function->getParameterTypeNames(); - BOOST_CHECK_EQUAL(returnParams.at(0), "uint256"); + auto params = function->getParameterTypeNames(); + BOOST_CHECK_EQUAL(params.at(0), "uint256"); + returnParams = function->getReturnParameterTypeNames(); + BOOST_CHECK_EQUAL(returnParams.at(0), "string4"); + BOOST_CHECK(function->isConstant()); + + function = retrieveFunctionBySignature(contract, "multiple_map(uint256,uint256)"); + BOOST_REQUIRE(function && function->hasDeclaration()); + params = function->getParameterTypeNames(); + BOOST_CHECK_EQUAL(params.at(0), "uint256"); + BOOST_CHECK_EQUAL(params.at(1), "uint256"); returnParams = function->getReturnParameterTypeNames(); BOOST_CHECK_EQUAL(returnParams.at(0), "string4"); BOOST_CHECK(function->isConstant()); |