aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/inlineasm/AsmParser.cpp
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2017-11-27 22:02:46 +0800
committerGitHub <noreply@github.com>2017-11-27 22:02:46 +0800
commita1f59cbb17d29ca5f92fa1cc20d17f47026ade5a (patch)
treed17e5ab7a2c9cd5ffacba728851e6c127182fbe0 /libsolidity/inlineasm/AsmParser.cpp
parenta7136dbc16ba7e0cf8a7d6097d50cc40c1248914 (diff)
parent1d91b65b726d4757b866124d75834f28a9bc9eb9 (diff)
downloaddexon-solidity-a1f59cbb17d29ca5f92fa1cc20d17f47026ade5a.tar
dexon-solidity-a1f59cbb17d29ca5f92fa1cc20d17f47026ade5a.tar.gz
dexon-solidity-a1f59cbb17d29ca5f92fa1cc20d17f47026ade5a.tar.bz2
dexon-solidity-a1f59cbb17d29ca5f92fa1cc20d17f47026ade5a.tar.lz
dexon-solidity-a1f59cbb17d29ca5f92fa1cc20d17f47026ade5a.tar.xz
dexon-solidity-a1f59cbb17d29ca5f92fa1cc20d17f47026ade5a.tar.zst
dexon-solidity-a1f59cbb17d29ca5f92fa1cc20d17f47026ade5a.zip
Merge pull request #3220 from ethereum/IuliaIf
If statement for Iulia / Inline Assembly
Diffstat (limited to 'libsolidity/inlineasm/AsmParser.cpp')
-rw-r--r--libsolidity/inlineasm/AsmParser.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/libsolidity/inlineasm/AsmParser.cpp b/libsolidity/inlineasm/AsmParser.cpp
index 1f4df75b..8f171005 100644
--- a/libsolidity/inlineasm/AsmParser.cpp
+++ b/libsolidity/inlineasm/AsmParser.cpp
@@ -73,13 +73,23 @@ assembly::Statement Parser::parseStatement()
return parseFunctionDefinition();
case Token::LBrace:
return parseBlock();
+ case Token::If:
+ {
+ assembly::If _if = createWithLocation<assembly::If>();
+ m_scanner->next();
+ _if.condition = make_shared<Statement>(parseExpression());
+ if (_if.condition->type() == typeid(assembly::Instruction))
+ fatalParserError("Instructions are not supported as conditions for if - try to append \"()\".");
+ _if.body = parseBlock();
+ return _if;
+ }
case Token::Switch:
{
assembly::Switch _switch = createWithLocation<assembly::Switch>();
m_scanner->next();
_switch.expression = make_shared<Statement>(parseExpression());
if (_switch.expression->type() == typeid(assembly::Instruction))
- fatalParserError("Instructions are not supported as expressions for switch.");
+ fatalParserError("Instructions are not supported as expressions for switch - try to append \"()\".");
while (m_scanner->currentToken() == Token::Case)
_switch.cases.emplace_back(parseCase());
if (m_scanner->currentToken() == Token::Default)