LibJS: Reset in_formal_parameter_context after entering a new function

Fixes a bug when "'Await' expression is not allowed in formal parameters
of an async function" is thrown for "await" encountered in a function
definition assigned to a default function parameter.

Fixes loading of https://excalidraw.com/
This commit is contained in:
Aliaksandr Kalenik 2024-09-08 14:04:25 +02:00 committed by Andreas Kling
commit 10064d0e1a
Notes: github-actions[bot] 2024-09-08 15:45:29 +00:00
2 changed files with 26 additions and 0 deletions

View file

@ -982,6 +982,8 @@ static bool is_simple_parameter_list(Vector<FunctionParameter> const& parameters
RefPtr<FunctionExpression const> Parser::try_parse_arrow_function_expression(bool expect_parens, bool is_async)
{
TemporaryChange in_formal_parameter_context_rollback(m_state.in_formal_parameter_context, false);
if (is_async)
VERIFY(match(TokenType::Async));
@ -2888,6 +2890,7 @@ NonnullRefPtr<FunctionNodeType> Parser::parse_function_node(u16 parse_options, O
TemporaryChange continue_context_rollback(m_state.in_continue_context, false);
TemporaryChange class_field_initializer_rollback(m_state.in_class_field_initializer, false);
TemporaryChange might_need_arguments_object_rollback(m_state.function_might_need_arguments_object, false);
TemporaryChange in_formal_parameter_context_rollback(m_state.in_formal_parameter_context, false);
constexpr auto is_function_expression = IsSame<FunctionNodeType, FunctionExpression>;
FunctionKind function_kind;