Enforce commas in tuple syntax

This commit is contained in:
Federico Bond 2017-08-08 18:58:06 -03:00 committed by Alex Beregszaszi
parent 5b26e2bcee
commit a8c047f48d
3 changed files with 16 additions and 2 deletions

View File

@ -6,6 +6,7 @@ Features:
* Metadata: Store experimental flag in metadata CBOR.
Bugfixes:
* Parser: Enforce commas between array and tuple elements.
### 0.4.15 (2017-08-08)

View File

@ -1300,10 +1300,11 @@ ASTPointer<Expression> Parser::parsePrimaryExpression()
parserError("Expected expression (inline array elements cannot be omitted).");
else
components.push_back(ASTPointer<Expression>());
if (m_scanner->currentToken() == oppositeToken)
break;
else if (m_scanner->currentToken() == Token::Comma)
m_scanner->next();
expectToken(Token::Comma);
}
nodeFactory.markEndPosition();
expectToken(oppositeToken);

View File

@ -1187,6 +1187,18 @@ BOOST_AUTO_TEST_CASE(tuples)
BOOST_CHECK(successParse(text));
}
BOOST_AUTO_TEST_CASE(tuples_without_commas)
{
char const* text = R"(
contract C {
function f() {
var a = (2 2);
}
}
)";
CHECK_PARSE_ERROR(text, "Expected token Comma");
}
BOOST_AUTO_TEST_CASE(member_access_parser_ambiguity)
{
char const* text = R"(