mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #9225 from ethereum/fixLocationOfYulAssignment
Fix location of yul assignment
This commit is contained in:
commit
b1d22ab2c8
@ -11,6 +11,7 @@ Compiler Features:
|
||||
Bugfixes:
|
||||
* NatSpec: Do not consider ``////`` and ``/***`` as NatSpec comments.
|
||||
* Type Checker: Fix internal error related to ``using for`` applied to non-libraries.
|
||||
* Yul: Fix source location of variable multi-assignment.
|
||||
|
||||
|
||||
### 0.6.10 (2020-06-11)
|
||||
|
@ -175,7 +175,8 @@ Statement Parser::parseStatement()
|
||||
case Token::Comma:
|
||||
case Token::AssemblyAssign:
|
||||
{
|
||||
std::vector<Identifier> variableNames;
|
||||
Assignment assignment;
|
||||
assignment.location = locationOf(elementary);
|
||||
|
||||
while (true)
|
||||
{
|
||||
@ -197,7 +198,7 @@ Statement Parser::parseStatement()
|
||||
if (m_dialect.builtin(identifier.name))
|
||||
fatalParserError(6272_error, "Cannot assign to builtin function \"" + identifier.name.str() + "\".");
|
||||
|
||||
variableNames.emplace_back(identifier);
|
||||
assignment.variableNames.emplace_back(identifier);
|
||||
|
||||
if (currentToken() != Token::Comma)
|
||||
break;
|
||||
@ -207,10 +208,6 @@ Statement Parser::parseStatement()
|
||||
elementary = parseElementaryOperation();
|
||||
}
|
||||
|
||||
Assignment assignment;
|
||||
assignment.location = std::get<Identifier>(elementary).location;
|
||||
assignment.variableNames = std::move(variableNames);
|
||||
|
||||
expectToken(Token::AssemblyAssign);
|
||||
|
||||
assignment.value = make_unique<Expression>(parseExpression());
|
||||
|
@ -0,0 +1,8 @@
|
||||
contract C {
|
||||
function f() pure public {
|
||||
uint x; uint y;
|
||||
assembly { x, y := 7 }
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// DeclarationError: (87-96): Variable count does not match number of values (2 vs. 1)
|
Loading…
Reference in New Issue
Block a user