Explorar o código

LibJS: Add a couple of missing spec steps to PerformEval

I missed these in 34f902fb524808b308efe4568ff5a026d2cb4884.
Luke Wilde %!s(int64=3) %!d(string=hai) anos
pai
achega
ee6fb51db6
Modificáronse 1 ficheiros con 7 adicións e 2 borrados
  1. 7 2
      Userland/Libraries/LibJS/Runtime/AbstractOperations.cpp

+ 7 - 2
Userland/Libraries/LibJS/Runtime/AbstractOperations.cpp

@@ -579,9 +579,14 @@ ThrowCompletionOr<Value> perform_eval(GlobalObject& global_object, Value x, Call
         return vm.throw_completion<SyntaxError>(global_object, error.to_string());
         return vm.throw_completion<SyntaxError>(global_object, error.to_string());
     }
     }
 
 
-    auto strict_eval = strict_caller == CallerMode::Strict;
-    if (program->is_strict_mode())
+    bool strict_eval = false;
+
+    // 12. If strictCaller is true, let strictEval be true.
+    if (strict_caller == CallerMode::Strict)
         strict_eval = true;
         strict_eval = true;
+    // 13. Else, let strictEval be IsStrict of script.
+    else
+        strict_eval = program->is_strict_mode();
 
 
     // 14. Let runningContext be the running execution context.
     // 14. Let runningContext be the running execution context.
     // 15. NOTE: If direct is true, runningContext will be the execution context that performed the direct eval. If direct is false, runningContext will be the execution context for the invocation of the eval function.
     // 15. NOTE: If direct is true, runningContext will be the execution context that performed the direct eval. If direct is false, runningContext will be the execution context for the invocation of the eval function.