diff options
author | Linus Groh <mail@linusgroh.de> | 2022-05-01 01:10:05 +0200 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2022-05-01 22:47:38 +0200 |
commit | acda12597ab9ebaf4e3d62a4e27b1ecd6c45d016 (patch) | |
tree | fdeaedd7d633f8ffb6815f9d262d2bb2529bea92 | |
parent | cb66474fb55ddd7e5b9f7186caf4a9c180518126 (diff) | |
download | serenity-acda12597ab9ebaf4e3d62a4e27b1ecd6c45d016.zip |
LibJS: Rename scope to environment
This is an editorial change in the ECMA-262 spec.
See: https://github.com/tc39/ecma262/commit/3246553
8 files changed, 43 insertions, 43 deletions
diff --git a/Userland/Libraries/LibJS/AST.cpp b/Userland/Libraries/LibJS/AST.cpp index 0d32dec26c..bb903865af 100644 --- a/Userland/Libraries/LibJS/AST.cpp +++ b/Userland/Libraries/LibJS/AST.cpp @@ -292,22 +292,22 @@ Value FunctionExpression::instantiate_ordinary_function_expression(Interpreter& auto has_own_name = !name().is_empty(); auto const& used_name = has_own_name ? name() : given_name; - auto* scope = interpreter.lexical_environment(); + auto* environment = interpreter.lexical_environment(); if (has_own_name) { - VERIFY(scope); - scope = new_declarative_environment(*scope); - MUST(scope->create_immutable_binding(global_object, name(), false)); + VERIFY(environment); + environment = new_declarative_environment(*environment); + MUST(environment->create_immutable_binding(global_object, name(), false)); } - auto* private_scope = interpreter.vm().running_execution_context().private_environment; + auto* private_environment = interpreter.vm().running_execution_context().private_environment; - auto closure = ECMAScriptFunctionObject::create(global_object, used_name, source_text(), body(), parameters(), function_length(), scope, private_scope, kind(), is_strict_mode(), might_need_arguments_object(), contains_direct_call_to_eval(), is_arrow_function()); + auto closure = ECMAScriptFunctionObject::create(global_object, used_name, source_text(), body(), parameters(), function_length(), environment, private_environment, kind(), is_strict_mode(), might_need_arguments_object(), contains_direct_call_to_eval(), is_arrow_function()); // FIXME: 6. Perform SetFunctionName(closure, name). // FIXME: 7. Perform MakeConstructor(closure). if (has_own_name) - MUST(scope->initialize_binding(global_object, name(), closure)); + MUST(environment->initialize_binding(global_object, name(), closure)); return closure; } @@ -1667,14 +1667,14 @@ ThrowCompletionOr<ClassElement::ClassValue> StaticInitializer::class_element_eva // 1. Let lex be the running execution context's LexicalEnvironment. auto* lexical_environment = interpreter.vm().running_execution_context().lexical_environment; - // 2. Let privateScope be the running execution context's PrivateEnvironment. - auto* private_scope = interpreter.vm().running_execution_context().private_environment; + // 2. Let privateEnv be the running execution context's PrivateEnvironment. + auto* private_environment = interpreter.vm().running_execution_context().private_environment; // 3. Let sourceText be the empty sequence of Unicode code points. // 4. Let formalParameters be an instance of the production FormalParameters : [empty] . - // 5. Let bodyFunction be OrdinaryFunctionCreate(%Function.prototype%, sourceText, formalParameters, ClassStaticBlockBody, non-lexical-this, lex, privateScope). + // 5. Let bodyFunction be OrdinaryFunctionCreate(%Function.prototype%, sourceText, formalParameters, ClassStaticBlockBody, non-lexical-this, lex, privateEnv). // Note: The function bodyFunction is never directly accessible to ECMAScript code. - auto* body_function = ECMAScriptFunctionObject::create(global_object, String::empty(), String::empty(), *m_function_body, {}, 0, lexical_environment, private_scope, FunctionKind::Normal, true, false, m_contains_direct_call_to_eval, false); + auto* body_function = ECMAScriptFunctionObject::create(global_object, String::empty(), String::empty(), *m_function_body, {}, 0, lexical_environment, private_environment, FunctionKind::Normal, true, false, m_contains_direct_call_to_eval, false); // 6. Perform MakeMethod(bodyFunction, homeObject). body_function->make_method(home_object); @@ -1756,7 +1756,7 @@ ThrowCompletionOr<ECMAScriptFunctionObject*> ClassExpression::class_definition_e auto& vm = interpreter.vm(); auto* environment = vm.lexical_environment(); VERIFY(environment); - auto* class_scope = new_declarative_environment(*environment); + auto* class_environment = new_declarative_environment(*environment); // We might not set the lexical environment but we always want to restore it eventually. ArmedScopeGuard restore_environment = [&] { @@ -1764,7 +1764,7 @@ ThrowCompletionOr<ECMAScriptFunctionObject*> ClassExpression::class_definition_e }; if (!binding_name.is_null()) - MUST(class_scope->create_immutable_binding(global_object, binding_name, true)); + MUST(class_environment->create_immutable_binding(global_object, binding_name, true)); auto* outer_private_environment = vm.running_execution_context().private_environment; auto* class_private_environment = new_private_environment(vm, outer_private_environment); @@ -1780,7 +1780,7 @@ ThrowCompletionOr<ECMAScriptFunctionObject*> ClassExpression::class_definition_e auto* constructor_parent = vm.current_realm()->global_object().function_prototype(); if (!m_super_class.is_null()) { - vm.running_execution_context().lexical_environment = class_scope; + vm.running_execution_context().lexical_environment = class_environment; // Note: Since our execute does evaluation and GetValue in once we must check for a valid reference first @@ -1815,7 +1815,7 @@ ThrowCompletionOr<ECMAScriptFunctionObject*> ClassExpression::class_definition_e auto* prototype = Object::create(global_object, proto_parent); VERIFY(prototype); - vm.running_execution_context().lexical_environment = class_scope; + vm.running_execution_context().lexical_environment = class_environment; vm.running_execution_context().private_environment = class_private_environment; ScopeGuard restore_private_environment = [&] { vm.running_execution_context().private_environment = outer_private_environment; @@ -1889,7 +1889,7 @@ ThrowCompletionOr<ECMAScriptFunctionObject*> ClassExpression::class_definition_e restore_environment.disarm(); if (!binding_name.is_null()) - MUST(class_scope->initialize_binding(global_object, binding_name, class_constructor)); + MUST(class_environment->initialize_binding(global_object, binding_name, class_constructor)); for (auto& field : instance_fields) class_constructor->add_field(field); diff --git a/Userland/Libraries/LibJS/Runtime/DeclarativeEnvironment.cpp b/Userland/Libraries/LibJS/Runtime/DeclarativeEnvironment.cpp index 5153d2c58c..8fbefbecb5 100644 --- a/Userland/Libraries/LibJS/Runtime/DeclarativeEnvironment.cpp +++ b/Userland/Libraries/LibJS/Runtime/DeclarativeEnvironment.cpp @@ -16,9 +16,9 @@ namespace JS { DeclarativeEnvironment* DeclarativeEnvironment::create_for_per_iteration_bindings(Badge<ForStatement>, DeclarativeEnvironment& other, size_t bindings_size) { auto bindings = other.m_bindings.span().slice(0, bindings_size); - auto* parent_scope = other.outer_environment(); + auto* parent_environment = other.outer_environment(); - return parent_scope->heap().allocate_without_global_object<DeclarativeEnvironment>(parent_scope, bindings); + return parent_environment->heap().allocate_without_global_object<DeclarativeEnvironment>(parent_environment, bindings); } DeclarativeEnvironment::DeclarativeEnvironment() @@ -26,13 +26,13 @@ DeclarativeEnvironment::DeclarativeEnvironment() { } -DeclarativeEnvironment::DeclarativeEnvironment(Environment* parent_scope) - : Environment(parent_scope) +DeclarativeEnvironment::DeclarativeEnvironment(Environment* parent_environment) + : Environment(parent_environment) { } -DeclarativeEnvironment::DeclarativeEnvironment(Environment* parent_scope, Span<Binding const> bindings) - : Environment(parent_scope) +DeclarativeEnvironment::DeclarativeEnvironment(Environment* parent_environment, Span<Binding const> bindings) + : Environment(parent_environment) , m_bindings(bindings) { } diff --git a/Userland/Libraries/LibJS/Runtime/DeclarativeEnvironment.h b/Userland/Libraries/LibJS/Runtime/DeclarativeEnvironment.h index d22fab88d3..53ff5a7a5d 100644 --- a/Userland/Libraries/LibJS/Runtime/DeclarativeEnvironment.h +++ b/Userland/Libraries/LibJS/Runtime/DeclarativeEnvironment.h @@ -30,8 +30,8 @@ public: static DeclarativeEnvironment* create_for_per_iteration_bindings(Badge<ForStatement>, DeclarativeEnvironment& other, size_t bindings_size); DeclarativeEnvironment(); - explicit DeclarativeEnvironment(Environment* parent_scope); - explicit DeclarativeEnvironment(Environment* parent_scope, Span<Binding const> bindings); + explicit DeclarativeEnvironment(Environment* parent_environment); + explicit DeclarativeEnvironment(Environment* parent_environment, Span<Binding const> bindings); virtual ~DeclarativeEnvironment() override = default; virtual ThrowCompletionOr<bool> has_binding(FlyString const& name, Optional<size_t>* = nullptr) const override; diff --git a/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp b/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp index f0f9fa8ace..17a93a60f9 100644 --- a/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp +++ b/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp @@ -29,7 +29,7 @@ namespace JS { -ECMAScriptFunctionObject* ECMAScriptFunctionObject::create(GlobalObject& global_object, FlyString name, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, Environment* parent_scope, PrivateEnvironment* private_scope, FunctionKind kind, bool is_strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name) +ECMAScriptFunctionObject* ECMAScriptFunctionObject::create(GlobalObject& global_object, FlyString name, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind kind, bool is_strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name) { Object* prototype = nullptr; switch (kind) { @@ -46,20 +46,20 @@ ECMAScriptFunctionObject* ECMAScriptFunctionObject::create(GlobalObject& global_ prototype = global_object.async_generator_function_prototype(); break; } - return global_object.heap().allocate<ECMAScriptFunctionObject>(global_object, move(name), move(source_text), ecmascript_code, move(parameters), m_function_length, parent_scope, private_scope, *prototype, kind, is_strict, might_need_arguments_object, contains_direct_call_to_eval, is_arrow_function, move(class_field_initializer_name)); + return global_object.heap().allocate<ECMAScriptFunctionObject>(global_object, move(name), move(source_text), ecmascript_code, move(parameters), m_function_length, parent_environment, private_environment, *prototype, kind, is_strict, might_need_arguments_object, contains_direct_call_to_eval, is_arrow_function, move(class_field_initializer_name)); } -ECMAScriptFunctionObject* ECMAScriptFunctionObject::create(GlobalObject& global_object, FlyString name, Object& prototype, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, Environment* parent_scope, PrivateEnvironment* private_scope, FunctionKind kind, bool is_strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name) +ECMAScriptFunctionObject* ECMAScriptFunctionObject::create(GlobalObject& global_object, FlyString name, Object& prototype, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind kind, bool is_strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name) { - return global_object.heap().allocate<ECMAScriptFunctionObject>(global_object, move(name), move(source_text), ecmascript_code, move(parameters), m_function_length, parent_scope, private_scope, prototype, kind, is_strict, might_need_arguments_object, contains_direct_call_to_eval, is_arrow_function, move(class_field_initializer_name)); + return global_object.heap().allocate<ECMAScriptFunctionObject>(global_object, move(name), move(source_text), ecmascript_code, move(parameters), m_function_length, parent_environment, private_environment, prototype, kind, is_strict, might_need_arguments_object, contains_direct_call_to_eval, is_arrow_function, move(class_field_initializer_name)); } -ECMAScriptFunctionObject::ECMAScriptFunctionObject(FlyString name, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> formal_parameters, i32 function_length, Environment* parent_scope, PrivateEnvironment* private_scope, Object& prototype, FunctionKind kind, bool strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name) +ECMAScriptFunctionObject::ECMAScriptFunctionObject(FlyString name, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> formal_parameters, i32 function_length, Environment* parent_environment, PrivateEnvironment* private_environment, Object& prototype, FunctionKind kind, bool strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name) : FunctionObject(prototype) , m_name(move(name)) , m_function_length(function_length) - , m_environment(parent_scope) - , m_private_environment(private_scope) + , m_environment(parent_environment) + , m_private_environment(private_environment) , m_formal_parameters(move(formal_parameters)) , m_ecmascript_code(ecmascript_code) , m_realm(global_object().associated_realm()) diff --git a/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.h b/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.h index 08afd478ac..6e417e782a 100644 --- a/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.h +++ b/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.h @@ -32,10 +32,10 @@ public: Global, }; - static ECMAScriptFunctionObject* create(GlobalObject&, FlyString name, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, Environment* parent_scope, PrivateEnvironment* private_scope, FunctionKind, bool is_strict, bool might_need_arguments_object = true, bool contains_direct_call_to_eval = true, bool is_arrow_function = false, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name = {}); - static ECMAScriptFunctionObject* create(GlobalObject&, FlyString name, Object& prototype, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, Environment* parent_scope, PrivateEnvironment* private_scope, FunctionKind, bool is_strict, bool might_need_arguments_object = true, bool contains_direct_call_to_eval = true, bool is_arrow_function = false, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name = {}); + static ECMAScriptFunctionObject* create(GlobalObject&, FlyString name, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind, bool is_strict, bool might_need_arguments_object = true, bool contains_direct_call_to_eval = true, bool is_arrow_function = false, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name = {}); + static ECMAScriptFunctionObject* create(GlobalObject&, FlyString name, Object& prototype, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, FunctionKind, bool is_strict, bool might_need_arguments_object = true, bool contains_direct_call_to_eval = true, bool is_arrow_function = false, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name = {}); - ECMAScriptFunctionObject(FlyString name, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, Environment* parent_scope, PrivateEnvironment* private_scope, Object& prototype, FunctionKind, bool is_strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name); + ECMAScriptFunctionObject(FlyString name, String source_text, Statement const& ecmascript_code, Vector<FunctionNode::Parameter> parameters, i32 m_function_length, Environment* parent_environment, PrivateEnvironment* private_environment, Object& prototype, FunctionKind, bool is_strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function, Variant<PropertyKey, PrivateName, Empty> class_field_initializer_name); virtual void initialize(GlobalObject&) override; virtual ~ECMAScriptFunctionObject() override = default; diff --git a/Userland/Libraries/LibJS/Runtime/FunctionConstructor.cpp b/Userland/Libraries/LibJS/Runtime/FunctionConstructor.cpp index b417ce12d6..123e6f21d1 100644 --- a/Userland/Libraries/LibJS/Runtime/FunctionConstructor.cpp +++ b/Userland/Libraries/LibJS/Runtime/FunctionConstructor.cpp @@ -228,14 +228,14 @@ ThrowCompletionOr<ECMAScriptFunctionObject*> FunctionConstructor::create_dynamic // 28. Let realmF be the current Realm Record. auto* realm = vm.current_realm(); - // 29. Let scope be realmF.[[GlobalEnv]]. - auto* scope = &realm->global_environment(); + // 29. Let env be realmF.[[GlobalEnv]]. + auto* environment = &realm->global_environment(); - // 30. Let privateScope be null. - PrivateEnvironment* private_scope = nullptr; + // 30. Let privateEnv be null. + PrivateEnvironment* private_environment = nullptr; - // 31. Let F be ! OrdinaryFunctionCreate(proto, sourceText, parameters, body, non-lexical-this, scope, privateScope). - auto* function = ECMAScriptFunctionObject::create(global_object, "anonymous", *prototype, move(source_text), expr->body(), expr->parameters(), expr->function_length(), scope, private_scope, expr->kind(), expr->is_strict_mode(), expr->might_need_arguments_object(), contains_direct_call_to_eval); + // 31. Let F be ! OrdinaryFunctionCreate(proto, sourceText, parameters, body, non-lexical-this, env, privateEnv). + auto* function = ECMAScriptFunctionObject::create(global_object, "anonymous", *prototype, move(source_text), expr->body(), expr->parameters(), expr->function_length(), environment, private_environment, expr->kind(), expr->is_strict_mode(), expr->might_need_arguments_object(), contains_direct_call_to_eval); // FIXME: Remove the name argument from create() and do this instead. // 32. Perform SetFunctionName(F, "anonymous"). diff --git a/Userland/Libraries/LibJS/Runtime/FunctionEnvironment.cpp b/Userland/Libraries/LibJS/Runtime/FunctionEnvironment.cpp index 51d376a00c..0f371f54d9 100644 --- a/Userland/Libraries/LibJS/Runtime/FunctionEnvironment.cpp +++ b/Userland/Libraries/LibJS/Runtime/FunctionEnvironment.cpp @@ -11,8 +11,8 @@ namespace JS { -FunctionEnvironment::FunctionEnvironment(Environment* parent_scope) - : DeclarativeEnvironment(parent_scope) +FunctionEnvironment::FunctionEnvironment(Environment* parent_environment) + : DeclarativeEnvironment(parent_environment) { } diff --git a/Userland/Libraries/LibJS/Runtime/FunctionEnvironment.h b/Userland/Libraries/LibJS/Runtime/FunctionEnvironment.h index 19f6bfd901..2879851a3c 100644 --- a/Userland/Libraries/LibJS/Runtime/FunctionEnvironment.h +++ b/Userland/Libraries/LibJS/Runtime/FunctionEnvironment.h @@ -22,7 +22,7 @@ public: Uninitialized, }; - explicit FunctionEnvironment(Environment* parent_scope); + explicit FunctionEnvironment(Environment* parent_environment); virtual ~FunctionEnvironment() override = default; ThisBindingStatus this_binding_status() const { return m_this_binding_status; } |