Prechádzať zdrojové kódy

LibJS: Make missing variable decls in for..in/of a syntax error

...instead of a hard crash :P
Ali Mohammad Pur 4 rokov pred
rodič
commit
724b89f90c
1 zmenil súbory, kde vykonal 3 pridanie a 1 odobranie
  1. 3 1
      Userland/Libraries/LibJS/Parser.cpp

+ 3 - 1
Userland/Libraries/LibJS/Parser.cpp

@@ -1961,7 +1961,9 @@ NonnullRefPtr<Statement> Parser::parse_for_in_of_statement(NonnullRefPtr<ASTNode
         auto declarations = static_cast<VariableDeclaration&>(*lhs).declarations();
         auto declarations = static_cast<VariableDeclaration&>(*lhs).declarations();
         if (declarations.size() > 1)
         if (declarations.size() > 1)
             syntax_error("multiple declarations not allowed in for..in/of");
             syntax_error("multiple declarations not allowed in for..in/of");
-        if (declarations.first().init() != nullptr)
+        if (declarations.size() < 1)
+            syntax_error("need exactly one variable declaration in for..in/of");
+        else if (declarations.first().init() != nullptr)
             syntax_error("variable initializer not allowed in for..in/of");
             syntax_error("variable initializer not allowed in for..in/of");
     }
     }
     auto in_or_of = consume();
     auto in_or_of = consume();