mirror of https://github.com/tc39/test262.git
44 lines
1.7 KiB
JavaScript
44 lines
1.7 KiB
JavaScript
// Copyright (C) 2024 Igalia, S.L. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
esid: sec-getmodulenamespace
|
|
description: >
|
|
Deferred namespace objects are created and cached appropriately
|
|
info: |
|
|
GetModuleNamespace ( _module_, _phase_ )
|
|
1. ...
|
|
1. If _phase_ is ~defer~, let _namespace_ be _module_.[[DeferredNamespace]], otherwise let _namespace_ be _module_.[[Namespace]].
|
|
1. If _namespace_ is ~empty~, then
|
|
1. ...
|
|
1. Set _namespace_ to ModuleNamespaceCreate(_module_, _unambiguousNames_, _phase_).
|
|
1. Return _namespace_.
|
|
|
|
ModuleNamespaceCreate ( _module_, _exports_, _phase_ )
|
|
1. ...
|
|
1. Let _M_ be MakeBasicObject(_internalSlotsList_).
|
|
1. ...
|
|
1. If _phase_ is ~defer~, then
|
|
1. Set _module_.[[DeferredNamespace]] to _M_.
|
|
1. ...
|
|
1. Else,
|
|
1. Set _module_.[[Namespace]] to _M_.
|
|
1. ...
|
|
1. Return _M_.
|
|
|
|
flags: [module]
|
|
features: [import-defer]
|
|
---*/
|
|
|
|
import * as nsEager from "./dep_FIXTURE.js";
|
|
|
|
import defer * as nsDeferred1 from "./dep_FIXTURE.js";
|
|
import defer * as nsDeferred2 from "./dep_FIXTURE.js";
|
|
import { depDeferredNamespace as nsDeferred3 } from "./dep-defer-ns_FIXTURE.js";
|
|
const nsDeferred4 = await import.defer("./dep_FIXTURE.js");
|
|
|
|
assert.sameValue(nsDeferred1, nsDeferred2, "Deferred import of the same module twice gives the same object");
|
|
assert.sameValue(nsDeferred1, nsDeferred3, "Deferred import of the same module twice from different files gives the same object");
|
|
assert.sameValue(nsDeferred1, nsDeferred4, "Static and dynamic deferred import of the same module gives the same object");
|
|
assert.notSameValue(nsDeferred1, nsEager, "Deferred namespaces are distinct from eager namespaces");
|