From 136a9a9d6b657e29680ca53f158f46eb5b92e9e7 Mon Sep 17 00:00:00 2001 From: Josh Wolfe Date: Sun, 2 Apr 2017 12:46:18 -0700 Subject: variable declarations must be followed by semicolon --- src/parser.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/parser.cpp') diff --git a/src/parser.cpp b/src/parser.cpp index 47abebe50d..77a358376b 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -1598,8 +1598,6 @@ static AstNode *ast_parse_variable_declaration_expr(ParseContext *pc, size_t *to *token_index += 1; if (eq_or_colon->id == TokenIdEq) { node->data.variable_declaration.expr = ast_parse_expression(pc, token_index, true); - - return node; } else if (eq_or_colon->id == TokenIdColon) { node->data.variable_declaration.type = ast_parse_type_expr(pc, token_index, true); Token *eq_token = &pc->tokens->at(*token_index); @@ -1608,11 +1606,15 @@ static AstNode *ast_parse_variable_declaration_expr(ParseContext *pc, size_t *to node->data.variable_declaration.expr = ast_parse_expression(pc, token_index, true); } - - return node; } else { ast_invalid_token_error(pc, eq_or_colon); } + + // peek ahead and ensure that all variable declarations are followed by a semicolon + Token *semicolon_token = &pc->tokens->at(*token_index); + ast_expect_token(pc, semicolon_token, TokenIdSemicolon); + + return node; } /* -- cgit v1.2.3