From bebd5c097c9a5d8e1cfa20d8f1459006c76709e0 Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Thu, 23 Apr 2020 19:17:39 +0100 Subject: [PATCH] LibJS: Require colon in object expression for non-identifier keys {foo} is valid - {"foo"} or {1} is not. --- Libraries/LibJS/Parser.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Libraries/LibJS/Parser.cpp b/Libraries/LibJS/Parser.cpp index b9b6cf0025..e608e87a87 100644 --- a/Libraries/LibJS/Parser.cpp +++ b/Libraries/LibJS/Parser.cpp @@ -440,8 +440,10 @@ NonnullRefPtr Parser::parse_object_expression() while (!done() && !match(TokenType::CurlyClose)) { FlyString property_name; + auto need_colon = true; if (match_identifier_name()) { property_name = consume().value(); + need_colon = false; } else if (match(TokenType::StringLiteral)) { property_name = consume(TokenType::StringLiteral).string_value(); } else if (match(TokenType::NumericLiteral)) { @@ -457,7 +459,7 @@ NonnullRefPtr Parser::parse_object_expression() continue; } - if (match(TokenType::Colon)) { + if (need_colon || match(TokenType::Colon)) { consume(TokenType::Colon); properties.set(property_name, parse_expression(0)); } else {