浏览代码

LibJS: Fix do..while parsing by consuming parentheses explicitly (#1652)

Before this patch the parser accepted conditions without enclosing
parentheses (like: .."while number < 9").
Maxim Brunnmeier 5 年之前
父节点
当前提交
2c4a5849f6
共有 1 个文件被更改,包括 7 次插入0 次删除
  1. 7 0
      Libraries/LibJS/Parser.cpp

+ 7 - 0
Libraries/LibJS/Parser.cpp

@@ -729,9 +729,16 @@ NonnullRefPtr<TryStatement> Parser::parse_try_statement()
 NonnullRefPtr<DoWhileStatement> Parser::parse_do_while_statement()
 NonnullRefPtr<DoWhileStatement> Parser::parse_do_while_statement()
 {
 {
     consume(TokenType::Do);
     consume(TokenType::Do);
+
     auto body = parse_statement();
     auto body = parse_statement();
+
     consume(TokenType::While);
     consume(TokenType::While);
+    consume(TokenType::ParenOpen);
+
     auto test = parse_expression(0);
     auto test = parse_expression(0);
+
+    consume(TokenType::ParenClose);
+
     return create_ast_node<DoWhileStatement>(move(test), move(body));
     return create_ast_node<DoWhileStatement>(move(test), move(body));
 }
 }