From 401d97c45c18e6a4fe8c1e9a7c7751b612e9585a Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Wed, 5 Jul 2023 02:10:40 +0200 Subject: [PATCH] LibJS: Add ScopeNode::for_each_var_declared_identifier() The same as for_each_var_declared_name but for identifiers. --- Userland/Libraries/LibJS/AST.cpp | 10 ++++++++++ Userland/Libraries/LibJS/AST.h | 1 + 2 files changed, 11 insertions(+) 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;