浏览代码

LibJS: Do not create environment bindings for local variables

If variable is local it is not stored in an environment so we don't
need a binding.
Aliaksandr Kalenik 1 年之前
父节点
当前提交
98f479318a
共有 1 个文件被更改,包括 3 次插入1 次删除
  1. 3 1
      Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp

+ 3 - 1
Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp

@@ -714,7 +714,9 @@ ThrowCompletionOr<void> ECMAScriptFunctionObject::function_declaration_instantia
                 //       1. Append n to instantiatedVarNames.
 
                 // 2. Perform ! varEnv.CreateMutableBinding(n, false).
-                MUST(var_environment->create_mutable_binding(vm, id.string(), false));
+                // NOTE: We ignore locals because they are stored in ExecutionContext instead of environment.
+                if (!id.is_local())
+                    MUST(var_environment->create_mutable_binding(vm, id.string(), false));
 
                 Value initial_value;