diff --git a/Userland/Libraries/LibJS/AST.cpp b/Userland/Libraries/LibJS/AST.cpp index a85a277d1e..55224112b9 100644 --- a/Userland/Libraries/LibJS/AST.cpp +++ b/Userland/Libraries/LibJS/AST.cpp @@ -4488,6 +4488,16 @@ ThrowCompletionOr ScopeNode::for_each_var_declared_name(ThrowCompletionOrV return {}; } +ThrowCompletionOr ScopeNode::for_each_var_declared_identifier(ThrowCompletionOrVoidCallback&& callback) const +{ + for (auto& declaration : m_var_declarations) { + TRY(declaration->for_each_bound_identifier([&](auto const& id) { + return callback(id); + })); + } + return {}; +} + ThrowCompletionOr ScopeNode::for_each_var_function_declaration_in_reverse_order(ThrowCompletionOrVoidCallback&& callback) const { for (ssize_t i = m_var_declarations.size() - 1; i >= 0; i--) { diff --git a/Userland/Libraries/LibJS/AST.h b/Userland/Libraries/LibJS/AST.h index 70fd796cec..43880c6b3b 100644 --- a/Userland/Libraries/LibJS/AST.h +++ b/Userland/Libraries/LibJS/AST.h @@ -310,6 +310,7 @@ public: ThrowCompletionOr for_each_lexically_declared_name(ThrowCompletionOrVoidCallback&& callback) const; ThrowCompletionOr for_each_var_declared_name(ThrowCompletionOrVoidCallback&& callback) const; + ThrowCompletionOr for_each_var_declared_identifier(ThrowCompletionOrVoidCallback&& callback) const; ThrowCompletionOr for_each_var_function_declaration_in_reverse_order(ThrowCompletionOrVoidCallback&& callback) const; ThrowCompletionOr for_each_lexical_function_declaration_in_reverse_order(ThrowCompletionOrVoidCallback&& callback) const;