diff --git a/Userland/Libraries/LibJS/Parser.cpp b/Userland/Libraries/LibJS/Parser.cpp index cd9949d7dd..7cc7ef11b9 100644 --- a/Userland/Libraries/LibJS/Parser.cpp +++ b/Userland/Libraries/LibJS/Parser.cpp @@ -2516,8 +2516,19 @@ NonnullRefPtr Parser::parse_for_in_of_statement(NonnullRefPtris_identifier() && !is(*lhs) && !is(*lhs) && !is(*lhs)) { + syntax_error(String::formatted("Invalid left-hand side in for-loop ('{}')", lhs->class_name())); } auto in_or_of = consume(); + + if (in_or_of.type() != TokenType::In) { + if (is(*lhs)) { + auto& member = static_cast(*lhs); + if (member.object().is_identifier() && static_cast(member.object()).string() == "let"sv) + syntax_error("For of statement may not start with let."); + } + } + auto rhs = parse_expression(0); consume(TokenType::ParenClose);