From 27913154ea7c8f766a27ce0873d878c5d09809ea Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Thu, 21 May 2020 23:45:53 +0100 Subject: [PATCH] LibJS: Disallow multiple parameters in paren-less arrow function Fixes #2323. --- Libraries/LibJS/Parser.cpp | 2 +- Libraries/LibJS/Tests/arrow-functions.js | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Libraries/LibJS/Parser.cpp b/Libraries/LibJS/Parser.cpp index 3b1343079f..1c4c9951e2 100644 --- a/Libraries/LibJS/Parser.cpp +++ b/Libraries/LibJS/Parser.cpp @@ -287,7 +287,7 @@ RefPtr Parser::try_parse_arrow_function_expression(bool expe i32 function_length = -1; while (true) { if (match(TokenType::Comma)) { - if (has_rest_parameter) { + if (has_rest_parameter || !expect_parens) { parse_failed = true; break; } diff --git a/Libraries/LibJS/Tests/arrow-functions.js b/Libraries/LibJS/Tests/arrow-functions.js index 6c9f7eadaf..a0461caa97 100644 --- a/Libraries/LibJS/Tests/arrow-functions.js +++ b/Libraries/LibJS/Tests/arrow-functions.js @@ -55,6 +55,11 @@ try { })(10); assert(half === 5); + var foo, bar; + foo = bar, baz => {}; + assert(foo === undefined); + assert(bar === undefined); + console.log("PASS"); } catch { console.log("FAIL");