aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCJentzsch <jentzsch.software@gmail.com>2015-05-07 17:44:23 +0800
committerCJentzsch <jentzsch.software@gmail.com>2015-05-07 17:44:23 +0800
commit612ee398b7dae5f387f94fe169de4301929d5ac4 (patch)
treef5f22f1068cc2de0386c087d90593ad263c84992
parent75982d444f52e864e56daf6054c2f13835b3a961 (diff)
parente66e225827624ccaaf88f4897715e6e5032849e0 (diff)
downloaddexon-solidity-612ee398b7dae5f387f94fe169de4301929d5ac4.tar
dexon-solidity-612ee398b7dae5f387f94fe169de4301929d5ac4.tar.gz
dexon-solidity-612ee398b7dae5f387f94fe169de4301929d5ac4.tar.bz2
dexon-solidity-612ee398b7dae5f387f94fe169de4301929d5ac4.tar.lz
dexon-solidity-612ee398b7dae5f387f94fe169de4301929d5ac4.tar.xz
dexon-solidity-612ee398b7dae5f387f94fe169de4301929d5ac4.tar.zst
dexon-solidity-612ee398b7dae5f387f94fe169de4301929d5ac4.zip
Merge remote-tracking branch 'upstream/develop' into walletTests
-rw-r--r--TestHelper.cpp10
-rw-r--r--TestHelper.h2
-rw-r--r--libsolidity/Assembly.cpp6
-rw-r--r--libsolidity/SolidityEndToEndTest.cpp46
-rw-r--r--libsolidity/SolidityOptimizer.cpp6
5 files changed, 61 insertions, 9 deletions
diff --git a/TestHelper.cpp b/TestHelper.cpp
index eecf6f80..144a1a28 100644
--- a/TestHelper.cpp
+++ b/TestHelper.cpp
@@ -715,11 +715,10 @@ Options::Options()
vmtrace = true;
else if (arg == "--filltests")
fillTests = true;
- else if (arg.compare(0, 7, "--stats") == 0)
+ else if (arg == "--stats" && i + 1 < argc)
{
stats = true;
- if (arg.size() > 7)
- statsOutFile = arg.substr(8); // skip '=' char
+ statsOutFile = argv[i + 1];
}
else if (arg == "--performance")
performance = true;
@@ -741,6 +740,11 @@ Options::Options()
inputLimits = true;
bigData = true;
}
+ else if (arg == "--singletest" && i + 1 < argc)
+ {
+ singleTest = true;
+ singleTestName = argv[i + 1];
+ }
}
}
diff --git a/TestHelper.h b/TestHelper.h
index 10e76aa9..02f509e4 100644
--- a/TestHelper.h
+++ b/TestHelper.h
@@ -188,6 +188,8 @@ public:
/// Test selection
/// @{
+ bool singleTest = false;
+ std::string singleTestName;
bool performance = false;
bool quadratic = false;
bool memory = false;
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;