1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 08:48:11 +00:00

LibJS: Delete Declaration::for_each_lexically_declared_name

1. Replaces for_each_lexically_declared_name usage with more generic
for_each_lexically_declared_identifier.
2. Deletes for_each_lexically_declared_name.
This commit is contained in:
Aliaksandr Kalenik 2023-07-20 16:54:20 +02:00 committed by Andreas Kling
parent 231d58dd62
commit 0fa47405df
4 changed files with 7 additions and 18 deletions

View file

@ -4367,16 +4367,6 @@ ThrowCompletionOr<void> ScopeNode::for_each_lexically_scoped_declaration(ThrowCo
return {};
}
ThrowCompletionOr<void> ScopeNode::for_each_lexically_declared_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const
{
for (auto const& declaration : m_lexical_declarations) {
TRY(declaration->for_each_bound_identifier([&](auto const& identifier) {
return callback(identifier.string());
}));
}
return {};
}
ThrowCompletionOr<void> ScopeNode::for_each_lexically_declared_identifier(ThrowCompletionOrVoidCallback<Identifier const&>&& callback) const
{
for (auto const& declaration : m_lexical_declarations) {

View file

@ -307,7 +307,6 @@ public:
[[nodiscard]] size_t lexical_declaration_count() const { return m_lexical_declarations.size(); }
ThrowCompletionOr<void> for_each_lexically_scoped_declaration(ThrowCompletionOrVoidCallback<Declaration const&>&& callback) const;
ThrowCompletionOr<void> for_each_lexically_declared_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const;
ThrowCompletionOr<void> for_each_lexically_declared_identifier(ThrowCompletionOrVoidCallback<Identifier const&>&& callback) const;
ThrowCompletionOr<void> for_each_var_declared_name(ThrowCompletionOrVoidCallback<DeprecatedFlyString const&>&& callback) const;

View file

@ -762,8 +762,8 @@ void Parser::parse_module(Program& program)
auto const& exported_name = entry.local_or_import_name;
bool found = false;
// NOTE: Nothing in the callback throws an exception.
MUST(program.for_each_lexically_declared_name([&](auto const& name) {
if (name == exported_name)
MUST(program.for_each_lexically_declared_identifier([&](auto const& identifier) {
if (identifier.string() == exported_name)
found = true;
}));
if (found)
@ -3706,9 +3706,9 @@ NonnullRefPtr<CatchClause const> Parser::parse_catch_clause()
auto body = parse_block_statement();
// NOTE: Nothing in the callback throws an exception.
MUST(body->for_each_lexically_declared_name([&](auto const& name) {
if (bound_names.contains(name))
syntax_error(DeprecatedString::formatted("Identifier '{}' already declared as catch parameter", name));
MUST(body->for_each_lexically_declared_identifier([&](auto const& identifier) {
if (bound_names.contains(identifier.string()))
syntax_error(DeprecatedString::formatted("Identifier '{}' already declared as catch parameter", identifier.string()));
}));
if (pattern_parameter) {

View file

@ -441,8 +441,8 @@ ThrowCompletionOr<void> ECMAScriptFunctionObject::function_declaration_instantia
if (!has_parameter_expressions && arguments_object_needed) {
// NOTE: Nothing in the callback throws an exception.
MUST(scope_body->for_each_lexically_declared_name([&](auto const& name) {
if (name == arguments_name)
MUST(scope_body->for_each_lexically_declared_identifier([&](auto const& identifier) {
if (identifier.string() == arguments_name)
arguments_object_needed = false;
}));
}