From 467a5ceb18d3c1f24f193bfbd8da05dd50d74afc Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 2 Dec 2023 12:38:21 +0100 Subject: [PATCH] LibJS: Split big VERIFY conditions into smaller ones in CyclicModule This makes assertion failures here more informative. --- Userland/Libraries/LibJS/CyclicModule.cpp | 6 ++++-- Userland/Libraries/LibJS/SourceTextModule.cpp | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibJS/CyclicModule.cpp b/Userland/Libraries/LibJS/CyclicModule.cpp index 3e04d4bac2..802c8ec802 100644 --- a/Userland/Libraries/LibJS/CyclicModule.cpp +++ b/Userland/Libraries/LibJS/CyclicModule.cpp @@ -170,7 +170,8 @@ ThrowCompletionOr CyclicModule::link(VM& vm) { dbgln_if(JS_MODULE_DEBUG, "[JS MODULE] link[{}]()", this); // 1. Assert: module.[[Status]] is not linking or evaluating. - VERIFY(m_status != ModuleStatus::Linking && m_status != ModuleStatus::Evaluating); + VERIFY(m_status != ModuleStatus::Linking); + VERIFY(m_status != ModuleStatus::Evaluating); // 2. Let stack be a new empty List. Vector stack; @@ -387,7 +388,8 @@ ThrowCompletionOr CyclicModule::evaluate(VM& vm) VERIFY(m_status == ModuleStatus::Evaluated); // c. Assert: module.[[EvaluationError]] is result. - VERIFY(m_evaluation_error.is_error() && same_value(*m_evaluation_error.throw_completion().value(), *result.throw_completion().value())); + VERIFY(m_evaluation_error.is_error()); + VERIFY(same_value(*m_evaluation_error.throw_completion().value(), *result.throw_completion().value())); // d. Perform ! Call(capability.[[Reject]], undefined, « result.[[Value]] »). MUST(call(vm, *m_top_level_capability->reject(), js_undefined(), *result.throw_completion().value())); diff --git a/Userland/Libraries/LibJS/SourceTextModule.cpp b/Userland/Libraries/LibJS/SourceTextModule.cpp index 7254dd9e74..fd44b3df96 100644 --- a/Userland/Libraries/LibJS/SourceTextModule.cpp +++ b/Userland/Libraries/LibJS/SourceTextModule.cpp @@ -676,7 +676,10 @@ ThrowCompletionOr SourceTextModule::execute_module(VM& vm, GCPtrscript_or_module = NonnullGCPtr(*this); // 5. Assert: module has been linked and declarations in its module environment have been instantiated. - VERIFY(m_status != ModuleStatus::Unlinked && m_status != ModuleStatus::Linking && environment()); + VERIFY(m_status != ModuleStatus::New); + VERIFY(m_status != ModuleStatus::Unlinked); + VERIFY(m_status != ModuleStatus::Linking); + VERIFY(environment()); // 6. Set the VariableEnvironment of moduleContext to module.[[Environment]]. module_context->variable_environment = environment();