diff options
Diffstat (limited to 'libsolidity')
-rw-r--r-- | libsolidity/Assembly.cpp | 6 | ||||
-rw-r--r-- | libsolidity/SolidityEndToEndTest.cpp | 46 | ||||
-rw-r--r-- | libsolidity/SolidityOptimizer.cpp | 6 |
3 files changed, 52 insertions, 6 deletions
diff --git a/libsolidity/Assembly.cpp b/libsolidity/Assembly.cpp index 8dcee7fb..ccc4bf81 100644 --- a/libsolidity/Assembly.cpp +++ b/libsolidity/Assembly.cpp @@ -17,20 +17,20 @@ /** * @author Lefteris Karapetsas <lefteris@ethdev.com> * @date 2015 - * Unit tests for Assembly Items from evmcore/Assembly.h + * Unit tests for Assembly Items from evmasm/Assembly.h */ #include <string> #include <iostream> #include <boost/test/unit_test.hpp> #include <libdevcore/Log.h> -#include <libevmcore/SourceLocation.h> +#include <libevmasm/SourceLocation.h> +#include <libevmasm/Assembly.h> #include <libsolidity/Scanner.h> #include <libsolidity/Parser.h> #include <libsolidity/NameAndTypeResolver.h> #include <libsolidity/Compiler.h> #include <libsolidity/AST.h> -#include <libevmcore/Assembly.h> using namespace std; using namespace dev::eth; diff --git a/libsolidity/SolidityEndToEndTest.cpp b/libsolidity/SolidityEndToEndTest.cpp index 24e5f7b4..f168ad45 100644 --- a/libsolidity/SolidityEndToEndTest.cpp +++ b/libsolidity/SolidityEndToEndTest.cpp @@ -300,6 +300,52 @@ BOOST_AUTO_TEST_CASE(for_loop_simple_init_expr) testSolidityAgainstCppOnRange("f(uint256)", for_loop_simple_init_expr_cpp, 0, 5); } +BOOST_AUTO_TEST_CASE(for_loop_break_continue) +{ + char const* sourceCode = R"( + contract test { + function f(uint n) returns (uint r) + { + uint i = 1; + uint k = 0; + for (i *= 5; k < n; i *= 7) + { + k++; + i += 4; + if (n % 3 == 0) + break; + i += 9; + if (n % 2 == 0) + continue; + i += 19; + } + return i; + } + } + )"; + compileAndRun(sourceCode); + + auto breakContinue = [](u256 const& n) -> u256 + { + u256 i = 1; + u256 k = 0; + for (i *= 5; k < n; i *= 7) + { + k++; + i += 4; + if (n % 3 == 0) + break; + i += 9; + if (n % 2 == 0) + continue; + i += 19; + } + return i; + }; + + testSolidityAgainstCppOnRange("f(uint256)", breakContinue, 0, 10); +} + BOOST_AUTO_TEST_CASE(calling_other_functions) { char const* sourceCode = "contract collatz {\n" diff --git a/libsolidity/SolidityOptimizer.cpp b/libsolidity/SolidityOptimizer.cpp index ceb9c68d..9cdaa588 100644 --- a/libsolidity/SolidityOptimizer.cpp +++ b/libsolidity/SolidityOptimizer.cpp @@ -26,9 +26,9 @@ #include <boost/test/unit_test.hpp> #include <boost/lexical_cast.hpp> #include <test/libsolidity/solidityExecutionFramework.h> -#include <libevmcore/CommonSubexpressionEliminator.h> -#include <libevmcore/ControlFlowGraph.h> -#include <libevmcore/Assembly.h> +#include <libevmasm/CommonSubexpressionEliminator.h> +#include <libevmasm/ControlFlowGraph.h> +#include <libevmasm/Assembly.h> using namespace std; using namespace dev::eth; |