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);
|