瀏覽代碼

LibJS: Update CyclicModule to match current spec

Just some minor comment tweaks and an updated assertion.
Andreas Kling 1 年之前
父節點
當前提交
d7005be768
共有 1 個文件被更改,包括 5 次插入6 次删除
  1. 5 6
      Userland/Libraries/LibJS/CyclicModule.cpp

+ 5 - 6
Userland/Libraries/LibJS/CyclicModule.cpp

@@ -165,13 +165,12 @@ void continue_module_loading(GraphLoadingState& state, ThrowCompletionOr<Nonnull
     // 4. Return UNUSED.
     // 4. Return UNUSED.
 }
 }
 
 
-// 16.2.1.5.1 Link ( ), https://tc39.es/ecma262/#sec-moduledeclarationlinking
+// 16.2.1.5.2 Link ( ), https://tc39.es/ecma262/#sec-moduledeclarationlinking
 ThrowCompletionOr<void> CyclicModule::link(VM& vm)
 ThrowCompletionOr<void> CyclicModule::link(VM& vm)
 {
 {
     dbgln_if(JS_MODULE_DEBUG, "[JS MODULE] link[{}]()", this);
     dbgln_if(JS_MODULE_DEBUG, "[JS MODULE] link[{}]()", this);
-    // 1. Assert: module.[[Status]] is not linking or evaluating.
-    VERIFY(m_status != ModuleStatus::Linking);
-    VERIFY(m_status != ModuleStatus::Evaluating);
+    // 1. Assert: module.[[Status]] is one of unlinked, linked, evaluating-async, or evaluated.
+    VERIFY(m_status == ModuleStatus::Unlinked || m_status == ModuleStatus::Linked || m_status == ModuleStatus::EvaluatingAsync || m_status == ModuleStatus::Evaluated);
     // 2. Let stack be a new empty List.
     // 2. Let stack be a new empty List.
     Vector<Module*> stack;
     Vector<Module*> stack;
 
 
@@ -194,11 +193,11 @@ ThrowCompletionOr<void> CyclicModule::link(VM& vm)
         // b. Assert: module.[[Status]] is unlinked.
         // b. Assert: module.[[Status]] is unlinked.
         VERIFY(m_status == ModuleStatus::Unlinked);
         VERIFY(m_status == ModuleStatus::Unlinked);
 
 
-        // c. Return result.
+        // c. Return ? result.
         return result.release_error();
         return result.release_error();
     }
     }
 
 
-    // 5. Assert: module.[[Status]] is linked, evaluating-async, or evaluated.
+    // 5. Assert: module.[[Status]] is one of linked, evaluating-async, or evaluated.
     VERIFY(m_status == ModuleStatus::Linked || m_status == ModuleStatus::EvaluatingAsync || m_status == ModuleStatus::Evaluated);
     VERIFY(m_status == ModuleStatus::Linked || m_status == ModuleStatus::EvaluatingAsync || m_status == ModuleStatus::Evaluated);
     // 6. Assert: stack is empty.
     // 6. Assert: stack is empty.
     VERIFY(stack.is_empty());
     VERIFY(stack.is_empty());