aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-01-28 05:24:58 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2017-01-28 05:24:58 +0800
commiteb530aa217387092a84057b550c7665a4acf72b6 (patch)
tree5ce364bcff797079e9d27a265066ce11e3978f65
parentbfa3b4ca78fd1afe0756631ce0d1ccb9a6d9c467 (diff)
downloaddexon-solidity-eb530aa217387092a84057b550c7665a4acf72b6.tar.gz
dexon-solidity-eb530aa217387092a84057b550c7665a4acf72b6.tar.zst
dexon-solidity-eb530aa217387092a84057b550c7665a4acf72b6.zip
Add tests for invalid instruction
-rw-r--r--test/libsolidity/InlineAssembly.cpp5
-rw-r--r--test/libsolidity/SolidityEndToEndTest.cpp15
2 files changed, 20 insertions, 0 deletions
diff --git a/test/libsolidity/InlineAssembly.cpp b/test/libsolidity/InlineAssembly.cpp
index c051a982..cf0343a9 100644
--- a/test/libsolidity/InlineAssembly.cpp
+++ b/test/libsolidity/InlineAssembly.cpp
@@ -182,6 +182,11 @@ BOOST_AUTO_TEST_CASE(error_tag)
BOOST_CHECK(successAssemble("{ invalidJumpLabel }"));
}
+BOOST_AUTO_TEST_CASE(designated_invalid_instruction)
+{
+ BOOST_CHECK(successAssemble("{ invalid }"));
+}
+
BOOST_AUTO_TEST_CASE(inline_assembly_shadowed_instruction_declaration)
{
// Error message: "Cannot use instruction names for identifier names."
diff --git a/test/libsolidity/SolidityEndToEndTest.cpp b/test/libsolidity/SolidityEndToEndTest.cpp
index 646017fb..4075a016 100644
--- a/test/libsolidity/SolidityEndToEndTest.cpp
+++ b/test/libsolidity/SolidityEndToEndTest.cpp
@@ -9043,6 +9043,21 @@ BOOST_AUTO_TEST_CASE(recursive_structs)
BOOST_CHECK(callContractFunction("f()") == encodeArgs(u256(1)));
}
+BOOST_AUTO_TEST_CASE(invalid_instruction)
+{
+ char const* sourceCode = R"(
+ contract C {
+ function f() {
+ assembly {
+ invalid
+ }
+ }
+ }
+ )";
+ compileAndRun(sourceCode, 0, "C");
+ BOOST_CHECK(callContractFunction("f()") == encodeArgs());
+}
+
BOOST_AUTO_TEST_SUITE_END()
}