diff --git a/Userland/Libraries/LibJS/CyclicModule.h b/Userland/Libraries/LibJS/CyclicModule.h index f82a278610..aa4fd024d7 100644 --- a/Userland/Libraries/LibJS/CyclicModule.h +++ b/Userland/Libraries/LibJS/CyclicModule.h @@ -38,6 +38,7 @@ public: Vector const& requested_modules() const { return m_requested_modules; } Vector const& loaded_modules() const { return m_loaded_modules; } + Vector& loaded_modules() { return m_loaded_modules; } protected: CyclicModule(Realm& realm, StringView filename, bool has_top_level_await, Vector requested_modules, Script::HostDefined* host_defined); diff --git a/Userland/Libraries/LibJS/Module.cpp b/Userland/Libraries/LibJS/Module.cpp index 7509f8096c..3277889b18 100644 --- a/Userland/Libraries/LibJS/Module.cpp +++ b/Userland/Libraries/LibJS/Module.cpp @@ -73,12 +73,13 @@ void finish_loading_imported_module(ImportedModuleReferrer referrer, ModuleReque if (!result.is_error()) { // NOTE: Only Script and CyclicModule referrers have the [[LoadedModules]] internal slot. if (referrer.has>() || referrer.has>()) { - auto loaded_modules = referrer.visit( - [](JS::NonnullGCPtr script) -> Vector { return script->loaded_modules(); }, - [](JS::NonnullGCPtr module) -> Vector { return module->loaded_modules(); }, - [](auto&) { + auto& loaded_modules = referrer.visit( + [](JS::NonnullGCPtr&) -> Vector& { VERIFY_NOT_REACHED(); - return Vector {}; + __builtin_unreachable(); + }, + [](auto& script_or_module) -> Vector& { + return script_or_module->loaded_modules(); }); bool found_record = false; diff --git a/Userland/Libraries/LibJS/Script.h b/Userland/Libraries/LibJS/Script.h index 4b8af18324..ad0cd703a0 100644 --- a/Userland/Libraries/LibJS/Script.h +++ b/Userland/Libraries/LibJS/Script.h @@ -31,6 +31,7 @@ public: Realm& realm() { return *m_realm; } Program const& parse_node() const { return *m_parse_node; } + Vector& loaded_modules() { return m_loaded_modules; } Vector const& loaded_modules() const { return m_loaded_modules; } HostDefined* host_defined() const { return m_host_defined; }