diff options
author | subtly <subtly@users.noreply.github.com> | 2015-04-28 21:19:06 +0800 |
---|---|---|
committer | subtly <subtly@users.noreply.github.com> | 2015-04-28 21:19:06 +0800 |
commit | e3a2d037e44de6c060e605161848f17e4140f9e4 (patch) | |
tree | a60d8df6b73ff84cf47fa7292f32d9326d018b95 | |
parent | 8d8f7c69286b6e7b73d4f1560d2d0d4d61317153 (diff) | |
parent | 717f2559696380c51d39cbf0105785c85ce3f3cf (diff) | |
download | dexon-solidity-e3a2d037e44de6c060e605161848f17e4140f9e4.tar dexon-solidity-e3a2d037e44de6c060e605161848f17e4140f9e4.tar.gz dexon-solidity-e3a2d037e44de6c060e605161848f17e4140f9e4.tar.bz2 dexon-solidity-e3a2d037e44de6c060e605161848f17e4140f9e4.tar.lz dexon-solidity-e3a2d037e44de6c060e605161848f17e4140f9e4.tar.xz dexon-solidity-e3a2d037e44de6c060e605161848f17e4140f9e4.tar.zst dexon-solidity-e3a2d037e44de6c060e605161848f17e4140f9e4.zip |
Merge branch 'develop' into discovery
-rw-r--r-- | libsolidity/SolidityEndToEndTest.cpp | 20 | ||||
-rw-r--r-- | libsolidity/SolidityExpressionCompiler.cpp | 2 |
2 files changed, 20 insertions, 2 deletions
diff --git a/libsolidity/SolidityEndToEndTest.cpp b/libsolidity/SolidityEndToEndTest.cpp index 596f710b..24e5f7b4 100644 --- a/libsolidity/SolidityEndToEndTest.cpp +++ b/libsolidity/SolidityEndToEndTest.cpp @@ -3381,6 +3381,26 @@ BOOST_AUTO_TEST_CASE(bytes_index_access) BOOST_CHECK(callContractFunction("storageWrite()") == encodeArgs(0x193)); } +BOOST_AUTO_TEST_CASE(bytes_delete_element) +{ + char const* sourceCode = R"( + contract c { + bytes data; + function test1() external returns (bool) { + data.length = 100; + for (uint i = 0; i < data.length; i++) + data[i] = byte(i); + delete data[94]; + delete data[96]; + delete data[98]; + return data[94] == 0 && data[95] == 95 && data[96] == 0 && data[97] == 97; + } + } + )"; + compileAndRun(sourceCode); + BOOST_CHECK(callContractFunction("test1()") == encodeArgs(true)); +} + BOOST_AUTO_TEST_CASE(array_copy_calldata_storage) { char const* sourceCode = R"( diff --git a/libsolidity/SolidityExpressionCompiler.cpp b/libsolidity/SolidityExpressionCompiler.cpp index b2436cfa..ee631197 100644 --- a/libsolidity/SolidityExpressionCompiler.cpp +++ b/libsolidity/SolidityExpressionCompiler.cpp @@ -50,14 +50,12 @@ public: FirstExpressionExtractor(ASTNode& _node): m_expression(nullptr) { _node.accept(*this); } Expression* getExpression() const { return m_expression; } private: - virtual bool visit(Expression& _expression) override { return checkExpression(_expression); } virtual bool visit(Assignment& _expression) override { return checkExpression(_expression); } virtual bool visit(UnaryOperation& _expression) override { return checkExpression(_expression); } virtual bool visit(BinaryOperation& _expression) override { return checkExpression(_expression); } virtual bool visit(FunctionCall& _expression) override { return checkExpression(_expression); } virtual bool visit(MemberAccess& _expression) override { return checkExpression(_expression); } virtual bool visit(IndexAccess& _expression) override { return checkExpression(_expression); } - virtual bool visit(PrimaryExpression& _expression) override { return checkExpression(_expression); } virtual bool visit(Identifier& _expression) override { return checkExpression(_expression); } virtual bool visit(ElementaryTypeNameExpression& _expression) override { return checkExpression(_expression); } virtual bool visit(Literal& _expression) override { return checkExpression(_expression); } |