Multi-variable declarations.

This commit is contained in:
chriseth
2015-10-13 12:16:23 +02:00
parent a5d12b8761
commit deebc7e860
9 changed files with 166 additions and 77 deletions
+10 -5
View File
@@ -785,12 +785,13 @@ ASTPointer<VariableDeclarationStatement> Parser::parseVariableDeclarationStateme
// Parse `var (a, b, ,, c) = ...` into a single VariableDeclarationStatement with multiple variables.
m_scanner->next();
m_scanner->next();
do
while (true)
{
ASTPointer<VariableDeclaration> var;
if (m_scanner->currentToken() == Token::Comma)
m_scanner->next();
else
if (
m_scanner->currentToken() != Token::Comma &&
m_scanner->currentToken() != Token::RParen
)
{
ASTNodeFactory varDeclNodeFactory(*this);
ASTPointer<ASTString> name = expectIdentifierToken();
@@ -802,7 +803,11 @@ ASTPointer<VariableDeclarationStatement> Parser::parseVariableDeclarationStateme
);
}
variables.push_back(var);
} while (m_scanner->currentToken() != Token::RParen);
if (m_scanner->currentToken() == Token::RParen)
break;
else
expectToken(Token::Comma);
}
nodeFactory.markEndPosition();
m_scanner->next();
}