mirror of
https://github.com/RGBCube/serenity
synced 2025-05-19 00:15:08 +00:00
LibJS: Update import referrer's [[LoadedModules]] in place
We were previously updating a copy of the list, which meant loading could not proceed even after a module was loaded.
This commit is contained in:
parent
5e67853b49
commit
99106df834
3 changed files with 8 additions and 5 deletions
|
@ -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<NonnullGCPtr<Script>>() || referrer.has<NonnullGCPtr<CyclicModule>>()) {
|
||||
auto loaded_modules = referrer.visit(
|
||||
[](JS::NonnullGCPtr<JS::Script> script) -> Vector<ModuleWithSpecifier> { return script->loaded_modules(); },
|
||||
[](JS::NonnullGCPtr<JS::CyclicModule> module) -> Vector<ModuleWithSpecifier> { return module->loaded_modules(); },
|
||||
[](auto&) {
|
||||
auto& loaded_modules = referrer.visit(
|
||||
[](JS::NonnullGCPtr<JS::Realm>&) -> Vector<ModuleWithSpecifier>& {
|
||||
VERIFY_NOT_REACHED();
|
||||
return Vector<ModuleWithSpecifier> {};
|
||||
__builtin_unreachable();
|
||||
},
|
||||
[](auto& script_or_module) -> Vector<ModuleWithSpecifier>& {
|
||||
return script_or_module->loaded_modules();
|
||||
});
|
||||
|
||||
bool found_record = false;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue