Skip to content

Commit

Permalink
Add test for TLA DFS invariant
Browse files Browse the repository at this point in the history
This behavior was introduced after the Top-Level Await proposal reached
stage 3: tc39/proposal-top-level-await#159
  • Loading branch information
jugglinmike committed May 14, 2021
1 parent 4f50cbf commit faada4f
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// Copyright (C) 2021 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
await 0;
globalThis.test262 = 'async';
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// Copyright (C) 2021 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
import './dfs-invariant-async_FIXTURE.js';
globalThis.test262 += ':direct-1';
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// Copyright (C) 2021 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
import './dfs-invariant-async_FIXTURE.js';
globalThis.test262 += ':direct-2';
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// Copyright (C) 2021 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
import './dfs-invariant-direct-1_FIXTURE.js';
globalThis.test262 += ':indirect';
40 changes: 40 additions & 0 deletions test/language/module-code/top-level-await/dfs-invariant.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// Copyright (C) 2021 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: Parent completion orderings match the synchronous module behavior
info: |
6.2.4 AsyncModuleExecutionFulfilled ( module )
[...]
5. Let _execList_ be a new empty List.
6. Perform ! GatherAsyncParentCompletions(_module_, _execList_).
7. Let _sortedExecList_ be a List of elements that are the elements of
_execList_, in the order in which they had their [[AsyncEvaluating]]
fields set to *true* in InnerModuleEvaluation.
8. Assert: All elements of _sortedExecList_ have their [[AsyncEvaluating]]
field set to *true*, [[PendingAsyncDependencies]] field set to 0 and
[[EvaluationError]] field set to *undefined*.
[...]
Dependency graph for this test:
dfs-invariant.js
.-----------------------------------+-------.
| | v
| | dfs-invariant-indirect_FIXTURE.js
| .---|----------------------'
v v v
dfs-invariant-direct-1_FIXTURE.js dfs-invariant-direct-2_FIXTURE.js
'--------. .--------'
v v
dfs-invariant-async_FIXTURE.js
esid: sec-moduleevaluation
flags: [module]
features: [top-level-await, globalThis]
---*/

import './dfs-invariant-direct-1_FIXTURE.js';
import './dfs-invariant-direct-2_FIXTURE.js';
import './dfs-invariant-indirect_FIXTURE.js';

assert.sameValue(globalThis.test262, 'async:direct-1:direct-2:indirect');

0 comments on commit faada4f

Please sign in to comment.