mirror of
https://github.com/SerenityOS/serenity
synced 2024-09-06 17:06:31 +00:00
LibJS: Don't parse arrow function with newline between ) and =>
If there's a newline between the closing paren and arrow it's not a valid arrow function, ASI should kick in instead (it'll then fail with "Unexpected token Arrow")
This commit is contained in:
parent
965d952ff3
commit
e898c98873
|
@ -353,6 +353,10 @@ RefPtr<FunctionExpression> Parser::try_parse_arrow_function_expression(bool expe
|
|||
return nullptr;
|
||||
parameters.append({ consume().value(), {} });
|
||||
}
|
||||
// If there's a newline between the closing paren and arrow it's not a valid arrow function,
|
||||
// ASI should kick in instead (it'll then fail with "Unexpected token Arrow")
|
||||
if (m_parser_state.m_current_token.trivia().contains('\n'))
|
||||
return nullptr;
|
||||
if (!match(TokenType::Arrow))
|
||||
return nullptr;
|
||||
consume();
|
||||
|
|
|
@ -160,4 +160,5 @@ test("syntax errors", () => {
|
|||
expect("(a b) => {}").not.toEval();
|
||||
expect("(a ...b) => {}").not.toEval();
|
||||
expect("(a = 1 = 2) => {}").not.toEval();
|
||||
expect("()\n=> {}").not.toEval();
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue