aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/inlineasm
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2018-01-08 08:39:22 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2018-01-08 08:39:22 +0800
commit42f88757708c42f447572c9b96da06c06329e9bc (patch)
treeafbb0156aa46cd68cd82d010298629aa5bf7fb7c /libsolidity/inlineasm
parent767052f2f78a2fd7cd37991945b0a3f559851822 (diff)
downloaddexon-solidity-42f88757708c42f447572c9b96da06c06329e9bc.tar
dexon-solidity-42f88757708c42f447572c9b96da06c06329e9bc.tar.gz
dexon-solidity-42f88757708c42f447572c9b96da06c06329e9bc.tar.bz2
dexon-solidity-42f88757708c42f447572c9b96da06c06329e9bc.tar.lz
dexon-solidity-42f88757708c42f447572c9b96da06c06329e9bc.tar.xz
dexon-solidity-42f88757708c42f447572c9b96da06c06329e9bc.tar.zst
dexon-solidity-42f88757708c42f447572c9b96da06c06329e9bc.zip
Show restricted instruction warning before argument mismatch issue
Diffstat (limited to 'libsolidity/inlineasm')
-rw-r--r--libsolidity/inlineasm/AsmParser.cpp22
1 files changed, 11 insertions, 11 deletions
diff --git a/libsolidity/inlineasm/AsmParser.cpp b/libsolidity/inlineasm/AsmParser.cpp
index 5983d7ff..88a0afc1 100644
--- a/libsolidity/inlineasm/AsmParser.cpp
+++ b/libsolidity/inlineasm/AsmParser.cpp
@@ -254,17 +254,6 @@ assembly::Expression Parser::parseExpression()
if (operation.type() == typeid(Instruction))
{
Instruction const& instr = boost::get<Instruction>(operation);
- // Enforce functional notation for instructions requiring multiple arguments.
- int args = instructionInfo(instr.instruction).args;
- bool requireFunctionalNotation = (args > 0 || m_flavour != AsmFlavour::Loose);
- if (requireFunctionalNotation && currentToken() != Token::LParen)
- fatalParserError(string(
- "Expected token \"(\" (\"" +
- instructionNames().at(instr.instruction) +
- "\" expects " +
- boost::lexical_cast<string>(args) +
- " arguments)"
- ));
// Disallow instructions returning multiple values (and DUP/SWAP) as expression.
if (
instructionInfo(instr.instruction).ret != 1 ||
@@ -276,6 +265,17 @@ assembly::Expression Parser::parseExpression()
instructionNames().at(instr.instruction) +
"\" not allowed in this context."
);
+ // Enforce functional notation for instructions requiring multiple arguments.
+ int args = instructionInfo(instr.instruction).args;
+ bool requireFunctionalNotation = (args > 0 || m_flavour != AsmFlavour::Loose);
+ if (requireFunctionalNotation && currentToken() != Token::LParen)
+ fatalParserError(string(
+ "Expected token \"(\" (\"" +
+ instructionNames().at(instr.instruction) +
+ "\" expects " +
+ boost::lexical_cast<string>(args) +
+ " arguments)"
+ ));
}
if (currentToken() == Token::LParen)
return parseCall(std::move(operation));