aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libsolidity/inlineasm/AsmParser.cpp4
-rw-r--r--test/libsolidity/InlineAssembly.cpp5
2 files changed, 9 insertions, 0 deletions
diff --git a/libsolidity/inlineasm/AsmParser.cpp b/libsolidity/inlineasm/AsmParser.cpp
index 124a5d26..3f794351 100644
--- a/libsolidity/inlineasm/AsmParser.cpp
+++ b/libsolidity/inlineasm/AsmParser.cpp
@@ -73,6 +73,7 @@ assembly::Statement Parser::parseStatement()
return assembly::Assignment{assembly::Identifier{name}};
}
case Token::Return: // opcode
+ case Token::Byte: // opcode
default:
break;
}
@@ -143,10 +144,13 @@ assembly::Statement Parser::parseElementaryOperation(bool _onlySinglePusher)
{
case Token::Identifier:
case Token::Return:
+ case Token::Byte:
{
string literal;
if (m_scanner->currentToken() == Token::Return)
literal = "return";
+ else if (m_scanner->currentToken() == Token::Byte)
+ literal = "byte";
else
literal = m_scanner->currentLiteral();
// first search the set of instructions.
diff --git a/test/libsolidity/InlineAssembly.cpp b/test/libsolidity/InlineAssembly.cpp
index 153b3fa8..779fc3f8 100644
--- a/test/libsolidity/InlineAssembly.cpp
+++ b/test/libsolidity/InlineAssembly.cpp
@@ -88,6 +88,11 @@ BOOST_AUTO_TEST_CASE(simple_instructions)
BOOST_CHECK(successParse("{ dup1 dup1 mul dup1 sub }"));
}
+BOOST_AUTO_TEST_CASE(keywords)
+{
+ BOOST_CHECK(successParse("{ byte return }"));
+}
+
BOOST_AUTO_TEST_CASE(constants)
{
BOOST_CHECK(successParse("{ 7 8 mul }"));