mirror of https://github.com/tc39/test262.git
40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
|
// Copyright (C) 2018 Rick Waldron. All rights reserved.
|
||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||
|
/*---
|
||
|
description: Module is evaluated exactly once
|
||
|
esid: sec-moduleevaluation
|
||
|
info: |
|
||
|
[...]
|
||
|
4. If module.[[Evaluated]] is true, return undefined.
|
||
|
5. Set module.[[Evaluated]] to true.
|
||
|
6. For each String required that is an element of module.[[RequestedModules]] do,
|
||
|
a. Let requiredModule be ? HostResolveImportedModule(module, required).
|
||
|
b. Perform ? requiredModule.ModuleEvaluation().
|
||
|
[...]
|
||
|
|
||
|
This test is meant to be flagged as module code, it should not initially
|
||
|
run as script code or the result will not be the same.
|
||
|
includes: [fnGlobalObject.js]
|
||
|
flags: [async, module]
|
||
|
features: [dynamic-import]
|
||
|
---*/
|
||
|
|
||
|
var global = fnGlobalObject();
|
||
|
|
||
|
if (typeof global.evaluated === 'undefined') {
|
||
|
global.evaluated = 0;
|
||
|
}
|
||
|
|
||
|
global.evaluated++;
|
||
|
|
||
|
Promise.all([
|
||
|
import('./eval-self-once-module.js'),
|
||
|
import('./eval-self-once-module.js'),
|
||
|
]).then(async () => {
|
||
|
// Use await to serialize imports
|
||
|
await import('./eval-self-once-module.js');
|
||
|
await import('./eval-self-once-module.js');
|
||
|
|
||
|
assert.sameValue(global.evaluated, 1, 'global property was defined and incremented only once');
|
||
|
}).then($DONE, $DONE);
|