소스 검색

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.
Aliaksandr Kalenik 2 년 전
부모
커밋
0fa47405df

+ 0 - 10
Userland/Libraries/LibJS/AST.cpp

@@ -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) {

+ 0 - 1
Userland/Libraries/LibJS/AST.h

@@ -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;

+ 5 - 5
Userland/Libraries/LibJS/Parser.cpp

@@ -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) {

+ 2 - 2
Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp

@@ -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;
             }));
         }