mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 10:48:11 +00:00
LibJS: Parse arrow function expression with correct precedence
The parser was chomping on commas present after the arrow function expression. eg. [x=>x,2] would parse as [x=>(x,2)] instead of [(x=>x),2]. This is not the case anymore. I've added a small test to prove this.
This commit is contained in:
parent
20faa93cb0
commit
4e8de753c9
3 changed files with 7 additions and 5 deletions
|
@ -370,7 +370,7 @@ RefPtr<FunctionExpression> Parser::try_parse_arrow_function_expression(bool expe
|
|||
// for arrow function bodies which are a single expression.
|
||||
// Esprima generates a single "ArrowFunctionExpression"
|
||||
// with a "body" property.
|
||||
auto return_expression = parse_expression(0);
|
||||
auto return_expression = parse_expression(2);
|
||||
auto return_block = create_ast_node<BlockStatement>();
|
||||
return_block->append<ReturnStatement>(move(return_expression));
|
||||
return return_block;
|
||||
|
@ -848,8 +848,7 @@ NonnullRefPtr<Expression> Parser::parse_secondary_expression(NonnullRefPtr<Expre
|
|||
syntax_error(
|
||||
String::format("'%s' cannot be assigned to in strict mode code", name.characters()),
|
||||
m_parser_state.m_current_token.line_number(),
|
||||
m_parser_state.m_current_token.line_column()
|
||||
);
|
||||
m_parser_state.m_current_token.line_column());
|
||||
}
|
||||
}
|
||||
return create_ast_node<AssignmentExpression>(AssignmentOp::Assignment, move(lhs), parse_expression(min_precedence, associativity));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue