Name Description Size
async-module-does-not-block-sibling-modules.js --- esid: sec-innermoduleevaluation description: > While an asynchronous module is waiting for a promise resolution, sibling modules in the modules graph must be evaluated. flags: [module, async] features: [top-level-await] --- 528
async-module-sync_FIXTURE.js 202
async-module-tla_FIXTURE.js 225
await-awaits-thenable-not-callable.js --- esid: prod-AwaitExpression description: > Await can await any thenable. If the thenable's then is not callable, await evaluates to the thenable flags: [module, async] features: [top-level-await] --- 460
await-awaits-thenables-that-throw.js --- esid: prod-AwaitExpression description: > Await can await any thenable. flags: [module, async] features: [top-level-await] --- 501
await-awaits-thenables.js --- esid: prod-AwaitExpression description: > Await can await any thenable. flags: [module, async] features: [top-level-await] --- 413
await-dynamic-import-rejection.js --- esid: sec-moduleevaluation description: > Top Level Await on a Dynamic import info: | InnerModuleEvaluation( module, stack, index ) ... 14. If module.[[PendingAsyncDependencies]] is > 0, set module.[[AsyncEvaluating]] to true. 15. Otherwise, if module.[[Async]] is true, perform ! ExecuteAsyncModule(module). 16. Otherwise, perform ? module.ExecuteModule(). ExecuteAsyncModule ( module ) 1. Assert: module.[[Status]] is "evaluating" or "evaluated". 2. Assert: module.[[Async]] is true. 3. Set module.[[AsyncEvaluating]] to true. 4. Let capability be ! NewPromiseCapability(%Promise%). 5. Let stepsFulfilled be the steps of a CallAsyncModuleFulfilled function as specified below. ... 8. Let stepsRejected be the steps of a CallAsyncModuleRejected function as specified below. ... 11. Perform ! PerformPromiseThen(capability.[[Promise]], onFulfilled, onRejected). 12. Perform ! module.ExecuteModule(capability). 13. Return. ExecuteModule ( [ capability ] ) ... 11. If module.[[Async]] is false, then a. Assert: capability was not provided. b. Push moduleCxt on to the execution context stack; moduleCxt is now the running execution context. c. Let result be the result of evaluating module.[[ECMAScriptCode]]. d. Suspend moduleCxt and remove it from the execution context stack. e. Resume the context that is now on the top of the execution context stack as the running execution context. f. Return Completion(result). 12. Otherwise, a. Assert: capability is a PromiseCapability Record. b. Perform ! AsyncBlockStart(capability, module.[[ECMAScriptCode]], moduleCxt). c. Return. flags: [module] features: [top-level-await, dynamic-import] negative: phase: runtime type: TypeError --- 2056
await-dynamic-import-resolution.js --- esid: sec-moduleevaluation description: > Top Level Await on a Dynamic import info: | InnerModuleEvaluation( module, stack, index ) ... 14. If module.[[PendingAsyncDependencies]] is > 0, set module.[[AsyncEvaluating]] to true. 15. Otherwise, if module.[[Async]] is true, perform ! ExecuteAsyncModule(module). 16. Otherwise, perform ? module.ExecuteModule(). ExecuteAsyncModule ( module ) 1. Assert: module.[[Status]] is "evaluating" or "evaluated". 2. Assert: module.[[Async]] is true. 3. Set module.[[AsyncEvaluating]] to true. 4. Let capability be ! NewPromiseCapability(%Promise%). 5. Let stepsFulfilled be the steps of a CallAsyncModuleFulfilled function as specified below. ... 8. Let stepsRejected be the steps of a CallAsyncModuleRejected function as specified below. ... 11. Perform ! PerformPromiseThen(capability.[[Promise]], onFulfilled, onRejected). 12. Perform ! module.ExecuteModule(capability). 13. Return. ExecuteModule ( [ capability ] ) ... 11. If module.[[Async]] is false, then a. Assert: capability was not provided. b. Push moduleCxt on to the execution context stack; moduleCxt is now the running execution context. c. Let result be the result of evaluating module.[[ECMAScriptCode]]. d. Suspend moduleCxt and remove it from the execution context stack. e. Resume the context that is now on the top of the execution context stack as the running execution context. f. Return Completion(result). 12. Otherwise, a. Assert: capability is a PromiseCapability Record. b. Perform ! AsyncBlockStart(capability, module.[[ECMAScriptCode]], moduleCxt). c. Return. flags: [module, async] features: [top-level-await, dynamic-import] --- 2064
await-expr-func-expression.js --- description: > A function after top level await is an expression and not a hoistable declaration info: | ModuleItem: StatementListItem[~Yield, +Await, ~Return] ... ExpressionStatement[Yield, Await]: [lookahead ∉ { {, function, async [no LineTerminator here] function, class, let [ }] Expression[+In, ?Yield, ?Await]; UnaryExpression[Yield, Await] [+Await]AwaitExpression[?Yield] AwaitExpression[Yield]: await UnaryExpression[?Yield, +Await] ... PrimaryExpression[Yield, Await]: this IdentifierReference[?Yield, ?Await] Literal ArrayLiteral[?Yield, ?Await] ObjectLiteral[?Yield, ?Await] FunctionExpression ClassExpression[?Yield, ?Await] GeneratorExpression AsyncFunctionExpression AsyncGeneratorExpression RegularExpressionLiteral TemplateLiteral[?Yield, ?Await, ~Tagged] CoverParenthesizedExpressionAndArrowParameterList[?Yield, ?Await] esid: prod-AwaitExpression flags: [module, async] features: [top-level-await] --- 1285
await-expr-new-expr-reject.js --- description: > Evaluation of a rejected promise info: | ModuleItem: StatementListItem[~Yield, +Await, ~Return] ... UnaryExpression[Yield, Await] [+Await]AwaitExpression[?Yield] AwaitExpression[Yield]: await UnaryExpression[?Yield, +Await] ... LeftHandSideExpression[Yield, Await]: NewExpression[?Yield, ?Await] CallExpression[?Yield, ?Await] NewExpression[Yield, Await]: MemberExpression[?Yield, ?Await] new NewExpression[?Yield, ?Await] MemberExpression[Yield, Await]: ... new MemberExpression[?Yield, ?Await] Arguments[?Yield, ?Await] esid: prod-AwaitExpression flags: [module, async] features: [top-level-await] --- 1031
await-expr-new-expr.js --- description: > Evaluation of await before a NewExpression info: | ModuleItem: StatementListItem[~Yield, +Await, ~Return] ... UnaryExpression[Yield, Await] [+Await]AwaitExpression[?Yield] AwaitExpression[Yield]: await UnaryExpression[?Yield, +Await] ... LeftHandSideExpression[Yield, Await]: NewExpression[?Yield, ?Await] CallExpression[?Yield, ?Await] NewExpression[Yield, Await]: MemberExpression[?Yield, ?Await] new NewExpression[?Yield, ?Await] MemberExpression[Yield, Await]: ... new MemberExpression[?Yield, ?Await] Arguments[?Yield, ?Await] esid: prod-AwaitExpression flags: [module, async] features: [top-level-await] --- 958
await-expr-regexp.js --- description: > Verify a RegularExpressionLiteral following an AwaitExpression is not ambiguous to an Division info: | ModuleItem: StatementListItem[~Yield, +Await, ~Return] ... UnaryExpression[Yield, Await] [+Await]AwaitExpression[?Yield] AwaitExpression[Yield]: await UnaryExpression[?Yield, +Await] ... PrimaryExpression[Yield, Await]: this IdentifierReference[?Yield, ?Await] Literal ArrayLiteral[?Yield, ?Await] ObjectLiteral[?Yield, ?Await] FunctionExpression ClassExpression[?Yield, ?Await] GeneratorExpression AsyncFunctionExpression AsyncGeneratorExpression RegularExpressionLiteral TemplateLiteral[?Yield, ?Await, ~Tagged] CoverParenthesizedExpressionAndArrowParameterList[?Yield, ?Await] esid: prod-AwaitExpression flags: [module, async] features: [top-level-await] --- 1185
await-expr-reject-throws.js --- description: > AwaitExpression evaluates to abrupt completions in promise rejections info: | ModuleItem: StatementListItem[~Yield, +Await, ~Return] ... UnaryExpression[Yield, Await] void UnaryExpression[?Yield, ?Await] [+Await]AwaitExpression[?Yield] AwaitExpression[Yield]: await UnaryExpression[?Yield, +Await] esid: prod-AwaitExpression flags: [module, async] features: [top-level-await] --- 1519
await-expr-resolution.js --- description: > AwaitExpression Resolutions info: | ModuleItem: StatementListItem[~Yield, +Await, ~Return] ... UnaryExpression[Yield, Await] void UnaryExpression[?Yield, ?Await] [+Await]AwaitExpression[?Yield] AwaitExpression[Yield]: await UnaryExpression[?Yield, +Await] esid: prod-AwaitExpression flags: [module, async] features: [top-level-await] --- 1168
await-void-expr.js --- description: > AwaitExpression void resolves into undefined info: | ModuleItem: StatementListItem[~Yield, +Await, ~Return] ... UnaryExpression[Yield, Await] void UnaryExpression[?Yield, ?Await] [+Await]AwaitExpression[?Yield] AwaitExpression[Yield]: await UnaryExpression[?Yield, +Await] esid: prod-AwaitExpression flags: [module, async] features: [top-level-await] --- 626
browser.js 0
dfs-invariant-async_FIXTURE.js 214
dfs-invariant-direct-1_FIXTURE.js 253
dfs-invariant-direct-2_FIXTURE.js 253
dfs-invariant-indirect_FIXTURE.js 256
dfs-invariant.js --- 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] --- 1749
dynamic-import-rejection.js --- esid: sec-moduleevaluation description: > Dynamic imported module with async exports info: | InnerModuleEvaluation( module, stack, index ) ... 14. If module.[[PendingAsyncDependencies]] is > 0, set module.[[AsyncEvaluating]] to true. 15. Otherwise, if module.[[Async]] is true, perform ! ExecuteAsyncModule(module). 16. Otherwise, perform ? module.ExecuteModule(). ExecuteAsyncModule ( module ) 1. Assert: module.[[Status]] is "evaluating" or "evaluated". 2. Assert: module.[[Async]] is true. 3. Set module.[[AsyncEvaluating]] to true. 4. Let capability be ! NewPromiseCapability(%Promise%). 5. Let stepsFulfilled be the steps of a CallAsyncModuleFulfilled function as specified below. ... 8. Let stepsRejected be the steps of a CallAsyncModuleRejected function as specified below. ... 11. Perform ! PerformPromiseThen(capability.[[Promise]], onFulfilled, onRejected). 12. Perform ! module.ExecuteModule(capability). 13. Return. ExecuteModule ( [ capability ] ) ... 11. If module.[[Async]] is false, then a. Assert: capability was not provided. b. Push moduleCxt on to the execution context stack; moduleCxt is now the running execution context. c. Let result be the result of evaluating module.[[ECMAScriptCode]]. d. Suspend moduleCxt and remove it from the execution context stack. e. Resume the context that is now on the top of the execution context stack as the running execution context. f. Return Completion(result). 12. Otherwise, a. Assert: capability is a PromiseCapability Record. b. Perform ! AsyncBlockStart(capability, module.[[ECMAScriptCode]], moduleCxt). c. Return. flags: [module, async] features: [top-level-await, dynamic-import] --- 2204
dynamic-import-resolution.js --- esid: sec-moduleevaluation description: > Dynamic imported module with async exports info: | InnerModuleEvaluation( module, stack, index ) ... 14. If module.[[PendingAsyncDependencies]] is > 0, set module.[[AsyncEvaluating]] to true. 15. Otherwise, if module.[[Async]] is true, perform ! ExecuteAsyncModule(module). 16. Otherwise, perform ? module.ExecuteModule(). ExecuteAsyncModule ( module ) 1. Assert: module.[[Status]] is "evaluating" or "evaluated". 2. Assert: module.[[Async]] is true. 3. Set module.[[AsyncEvaluating]] to true. 4. Let capability be ! NewPromiseCapability(%Promise%). 5. Let stepsFulfilled be the steps of a CallAsyncModuleFulfilled function as specified below. ... 8. Let stepsRejected be the steps of a CallAsyncModuleRejected function as specified below. ... 11. Perform ! PerformPromiseThen(capability.[[Promise]], onFulfilled, onRejected). 12. Perform ! module.ExecuteModule(capability). 13. Return. ExecuteModule ( [ capability ] ) ... 11. If module.[[Async]] is false, then a. Assert: capability was not provided. b. Push moduleCxt on to the execution context stack; moduleCxt is now the running execution context. c. Let result be the result of evaluating module.[[ECMAScriptCode]]. d. Suspend moduleCxt and remove it from the execution context stack. e. Resume the context that is now on the top of the execution context stack as the running execution context. f. Return Completion(result). 12. Otherwise, a. Assert: capability is a PromiseCapability Record. b. Perform ! AsyncBlockStart(capability, module.[[ECMAScriptCode]], moduleCxt). c. Return. flags: [module, async] features: [top-level-await, dynamic-import] --- 2086
early-errors-await-not-simple-assignment-target.js --- esid: prod-AwaitExpression description: > await is not a simple assignment target and cannot be assigned to. negative: phase: parse type: SyntaxError flags: [module] features: [top-level-await] --- 408
if-await-expr.js --- description: > Evaluate Await expression for IfStatement info: | ModuleItem: StatementListItem[~Yield, +Await, ~Return] ... UnaryExpression[Yield, Await] [+Await]AwaitExpression[?Yield] AwaitExpression[Yield]: await UnaryExpression[?Yield, +Await] esid: prod-AwaitExpression flags: [module, async] features: [top-level-await] --- 646
module-async-import-async-resolution-ticks.js --- esid: sec-moduleevaluation description: > Ticks from async module (w/ TLA) won't change loading async module info: | Table 3: Additional Fields of Cyclic Module Records [[Async]] ... Having an asynchronous dependency does not make the module asynchronous. This field must not change after the module is parsed. Evaluate ( ) Concrete Method ... 6. Let capability be ! NewPromiseCapability(%Promise%). 7. Set module.[[TopLevelCapability]] to capability. 8. Let result be InnerModuleEvaluation(module, stack, 0). 9. If result is an abrupt completion, then ... d. Perform ! Call(capability.[[Reject]], undefined, «result.[[Value]]»). 10. Otherwise, ... b. If module.[[AsyncEvaluating]] is false, then i. Perform ! Call(capability.[[Resolve]], undefined, «undefined»). ... 11. Return undefinedcapability.[[Promise]]. InnerModuleEvaluation( module, stack, index ) ... 14. If module.[[PendingAsyncDependencies]] is > 0, set module.[[AsyncEvaluating]] to true. 15. Otherwise, if module.[[Async]] is true, perform ! ExecuteAsyncModule(module). 16. Otherwise, perform ? module.ExecuteModule(). ExecuteAsyncModule ( module ) 1. Assert: module.[[Status]] is "evaluating" or "evaluated". 2. Assert: module.[[Async]] is true. 3. Set module.[[AsyncEvaluating]] to true. 4. Let capability be ! NewPromiseCapability(%Promise%). 5. Let stepsFulfilled be the steps of a CallAsyncModuleFulfilled function as specified below. ... 8. Let stepsRejected be the steps of a CallAsyncModuleRejected function as specified below. ... 11. Perform ! PerformPromiseThen(capability.[[Promise]], onFulfilled, onRejected). 12. Perform ! module.ExecuteModule(capability). 13. Return. ExecuteModule ( [ capability ] ) ... 11. If module.[[Async]] is false, then a. Assert: capability was not provided. b. Push moduleCxt on to the execution context stack; moduleCxt is now the running execution context. c. Let result be the result of evaluating module.[[ECMAScriptCode]]. d. Suspend moduleCxt and remove it from the execution context stack. e. Resume the context that is now on the top of the execution context stack as the running execution context. f. Return Completion(result). 12. Otherwise, a. Assert: capability is a PromiseCapability Record. b. Perform ! AsyncBlockStart(capability, module.[[ECMAScriptCode]], moduleCxt). c. Return. flags: [module, async] features: [top-level-await] --- 3042
module-import-rejection-body.js --- esid: sec-moduleevaluation description: > Evaluate imported rejected module info: | Table 3: Additional Fields of Cyclic Module Records [[Async]] ... Having an asynchronous dependency does not make the module asynchronous. This field must not change after the module is parsed. Evaluate ( ) Concrete Method ... 6. Let capability be ! NewPromiseCapability(%Promise%). 7. Set module.[[TopLevelCapability]] to capability. 8. Let result be InnerModuleEvaluation(module, stack, 0). 9. If result is an abrupt completion, then ... d. Perform ! Call(capability.[[Reject]], undefined, «result.[[Value]]»). 10. Otherwise, ... b. If module.[[AsyncEvaluating]] is false, then i. Perform ! Call(capability.[[Resolve]], undefined, «undefined»). ... 11. Return undefinedcapability.[[Promise]]. InnerModuleEvaluation( module, stack, index ) ... 14. If module.[[PendingAsyncDependencies]] is > 0, set module.[[AsyncEvaluating]] to true. 15. Otherwise, if module.[[Async]] is true, perform ! ExecuteAsyncModule(module). 16. Otherwise, perform ? module.ExecuteModule(). ExecuteAsyncModule ( module ) 1. Assert: module.[[Status]] is "evaluating" or "evaluated". 2. Assert: module.[[Async]] is true. 3. Set module.[[AsyncEvaluating]] to true. 4. Let capability be ! NewPromiseCapability(%Promise%). 5. Let stepsFulfilled be the steps of a CallAsyncModuleFulfilled function as specified below. ... 8. Let stepsRejected be the steps of a CallAsyncModuleRejected function as specified below. ... 11. Perform ! PerformPromiseThen(capability.[[Promise]], onFulfilled, onRejected). 12. Perform ! module.ExecuteModule(capability). 13. Return. ExecuteModule ( [ capability ] ) ... 11. If module.[[Async]] is false, then a. Assert: capability was not provided. b. Push moduleCxt on to the execution context stack; moduleCxt is now the running execution context. c. Let result be the result of evaluating module.[[ECMAScriptCode]]. d. Suspend moduleCxt and remove it from the execution context stack. e. Resume the context that is now on the top of the execution context stack as the running execution context. f. Return Completion(result). 12. Otherwise, a. Assert: capability is a PromiseCapability Record. b. Perform ! AsyncBlockStart(capability, module.[[ECMAScriptCode]], moduleCxt). c. Return. flags: [module] features: [top-level-await] negative: phase: runtime type: TypeError --- 2794
module-import-rejection-body_FIXTURE.js 297
module-import-rejection-tick.js --- esid: sec-moduleevaluation description: > Evaluate imported rejected module info: | Table 3: Additional Fields of Cyclic Module Records [[Async]] ... Having an asynchronous dependency does not make the module asynchronous. This field must not change after the module is parsed. Evaluate ( ) Concrete Method ... 6. Let capability be ! NewPromiseCapability(%Promise%). 7. Set module.[[TopLevelCapability]] to capability. 8. Let result be InnerModuleEvaluation(module, stack, 0). 9. If result is an abrupt completion, then ... d. Perform ! Call(capability.[[Reject]], undefined, «result.[[Value]]»). 10. Otherwise, ... b. If module.[[AsyncEvaluating]] is false, then i. Perform ! Call(capability.[[Resolve]], undefined, «undefined»). ... 11. Return undefinedcapability.[[Promise]]. InnerModuleEvaluation( module, stack, index ) ... 14. If module.[[PendingAsyncDependencies]] is > 0, set module.[[AsyncEvaluating]] to true. 15. Otherwise, if module.[[Async]] is true, perform ! ExecuteAsyncModule(module). 16. Otherwise, perform ? module.ExecuteModule(). ExecuteAsyncModule ( module ) 1. Assert: module.[[Status]] is "evaluating" or "evaluated". 2. Assert: module.[[Async]] is true. 3. Set module.[[AsyncEvaluating]] to true. 4. Let capability be ! NewPromiseCapability(%Promise%). 5. Let stepsFulfilled be the steps of a CallAsyncModuleFulfilled function as specified below. ... 8. Let stepsRejected be the steps of a CallAsyncModuleRejected function as specified below. ... 11. Perform ! PerformPromiseThen(capability.[[Promise]], onFulfilled, onRejected). 12. Perform ! module.ExecuteModule(capability). 13. Return. ExecuteModule ( [ capability ] ) ... 11. If module.[[Async]] is false, then a. Assert: capability was not provided. b. Push moduleCxt on to the execution context stack; moduleCxt is now the running execution context. c. Let result be the result of evaluating module.[[ECMAScriptCode]]. d. Suspend moduleCxt and remove it from the execution context stack. e. Resume the context that is now on the top of the execution context stack as the running execution context. f. Return Completion(result). 12. Otherwise, a. Assert: capability is a PromiseCapability Record. b. Perform ! AsyncBlockStart(capability, module.[[ECMAScriptCode]], moduleCxt). c. Return. flags: [module] features: [top-level-await] negative: phase: runtime type: RangeError --- 2796
module-import-rejection-tick_FIXTURE.js 405
module-import-rejection.js --- esid: sec-moduleevaluation description: > Evaluate imported rejected module info: | Table 3: Additional Fields of Cyclic Module Records [[Async]] ... Having an asynchronous dependency does not make the module asynchronous. This field must not change after the module is parsed. Evaluate ( ) Concrete Method ... 6. Let capability be ! NewPromiseCapability(%Promise%). 7. Set module.[[TopLevelCapability]] to capability. 8. Let result be InnerModuleEvaluation(module, stack, 0). 9. If result is an abrupt completion, then ... d. Perform ! Call(capability.[[Reject]], undefined, «result.[[Value]]»). 10. Otherwise, ... b. If module.[[AsyncEvaluating]] is false, then i. Perform ! Call(capability.[[Resolve]], undefined, «undefined»). ... 11. Return undefinedcapability.[[Promise]]. InnerModuleEvaluation( module, stack, index ) ... 14. If module.[[PendingAsyncDependencies]] is > 0, set module.[[AsyncEvaluating]] to true. 15. Otherwise, if module.[[Async]] is true, perform ! ExecuteAsyncModule(module). 16. Otherwise, perform ? module.ExecuteModule(). ExecuteAsyncModule ( module ) 1. Assert: module.[[Status]] is "evaluating" or "evaluated". 2. Assert: module.[[Async]] is true. 3. Set module.[[AsyncEvaluating]] to true. 4. Let capability be ! NewPromiseCapability(%Promise%). 5. Let stepsFulfilled be the steps of a CallAsyncModuleFulfilled function as specified below. ... 8. Let stepsRejected be the steps of a CallAsyncModuleRejected function as specified below. ... 11. Perform ! PerformPromiseThen(capability.[[Promise]], onFulfilled, onRejected). 12. Perform ! module.ExecuteModule(capability). 13. Return. ExecuteModule ( [ capability ] ) ... 11. If module.[[Async]] is false, then a. Assert: capability was not provided. b. Push moduleCxt on to the execution context stack; moduleCxt is now the running execution context. c. Let result be the result of evaluating module.[[ECMAScriptCode]]. d. Suspend moduleCxt and remove it from the execution context stack. e. Resume the context that is now on the top of the execution context stack as the running execution context. f. Return Completion(result). 12. Otherwise, a. Assert: capability is a PromiseCapability Record. b. Perform ! AsyncBlockStart(capability, module.[[ECMAScriptCode]], moduleCxt). c. Return. flags: [module] features: [top-level-await] negative: phase: runtime type: TypeError --- 2798
module-import-rejection_FIXTURE.js 566
module-import-resolution.js --- esid: sec-moduleevaluation description: > Evaluate imported module with async exports info: | Table 3: Additional Fields of Cyclic Module Records [[Async]] ... Having an asynchronous dependency does not make the module asynchronous. This field must not change after the module is parsed. Evaluate ( ) Concrete Method ... 6. Let capability be ! NewPromiseCapability(%Promise%). 7. Set module.[[TopLevelCapability]] to capability. 8. Let result be InnerModuleEvaluation(module, stack, 0). 9. If result is an abrupt completion, then ... d. Perform ! Call(capability.[[Reject]], undefined, «result.[[Value]]»). 10. Otherwise, ... b. If module.[[AsyncEvaluating]] is false, then i. Perform ! Call(capability.[[Resolve]], undefined, «undefined»). ... 11. Return undefinedcapability.[[Promise]]. InnerModuleEvaluation( module, stack, index ) ... 14. If module.[[PendingAsyncDependencies]] is > 0, set module.[[AsyncEvaluating]] to true. 15. Otherwise, if module.[[Async]] is true, perform ! ExecuteAsyncModule(module). 16. Otherwise, perform ? module.ExecuteModule(). ExecuteAsyncModule ( module ) 1. Assert: module.[[Status]] is "evaluating" or "evaluated". 2. Assert: module.[[Async]] is true. 3. Set module.[[AsyncEvaluating]] to true. 4. Let capability be ! NewPromiseCapability(%Promise%). 5. Let stepsFulfilled be the steps of a CallAsyncModuleFulfilled function as specified below. ... 8. Let stepsRejected be the steps of a CallAsyncModuleRejected function as specified below. ... 11. Perform ! PerformPromiseThen(capability.[[Promise]], onFulfilled, onRejected). 12. Perform ! module.ExecuteModule(capability). 13. Return. ExecuteModule ( [ capability ] ) ... 11. If module.[[Async]] is false, then a. Assert: capability was not provided. b. Push moduleCxt on to the execution context stack; moduleCxt is now the running execution context. c. Let result be the result of evaluating module.[[ECMAScriptCode]]. d. Suspend moduleCxt and remove it from the execution context stack. e. Resume the context that is now on the top of the execution context stack as the running execution context. f. Return Completion(result). 12. Otherwise, a. Assert: capability is a PromiseCapability Record. b. Perform ! AsyncBlockStart(capability, module.[[ECMAScriptCode]], moduleCxt). c. Return. flags: [module, async] features: [top-level-await] --- 2938
module-import-resolution_FIXTURE.js 370
module-import-unwrapped.js --- esid: sec-moduleevaluation description: > Evaluate imported module with unwrapped imported promises info: | Table 3: Additional Fields of Cyclic Module Records [[Async]] ... Having an asynchronous dependency does not make the module asynchronous. This field must not change after the module is parsed. Evaluate ( ) Concrete Method ... 6. Let capability be ! NewPromiseCapability(%Promise%). 7. Set module.[[TopLevelCapability]] to capability. 8. Let result be InnerModuleEvaluation(module, stack, 0). 9. If result is an abrupt completion, then ... d. Perform ! Call(capability.[[Reject]], undefined, «result.[[Value]]»). 10. Otherwise, ... b. If module.[[AsyncEvaluating]] is false, then i. Perform ! Call(capability.[[Resolve]], undefined, «undefined»). ... 11. Return undefinedcapability.[[Promise]]. InnerModuleEvaluation( module, stack, index ) ... 14. If module.[[PendingAsyncDependencies]] is > 0, set module.[[AsyncEvaluating]] to true. 15. Otherwise, if module.[[Async]] is true, perform ! ExecuteAsyncModule(module). 16. Otherwise, perform ? module.ExecuteModule(). ExecuteAsyncModule ( module ) 1. Assert: module.[[Status]] is "evaluating" or "evaluated". 2. Assert: module.[[Async]] is true. 3. Set module.[[AsyncEvaluating]] to true. 4. Let capability be ! NewPromiseCapability(%Promise%). 5. Let stepsFulfilled be the steps of a CallAsyncModuleFulfilled function as specified below. ... 8. Let stepsRejected be the steps of a CallAsyncModuleRejected function as specified below. ... 11. Perform ! PerformPromiseThen(capability.[[Promise]], onFulfilled, onRejected). 12. Perform ! module.ExecuteModule(capability). 13. Return. ExecuteModule ( [ capability ] ) ... 11. If module.[[Async]] is false, then a. Assert: capability was not provided. b. Push moduleCxt on to the execution context stack; moduleCxt is now the running execution context. c. Let result be the result of evaluating module.[[ECMAScriptCode]]. d. Suspend moduleCxt and remove it from the execution context stack. e. Resume the context that is now on the top of the execution context stack as the running execution context. f. Return Completion(result). 12. Otherwise, a. Assert: capability is a PromiseCapability Record. b. Perform ! AsyncBlockStart(capability, module.[[ECMAScriptCode]], moduleCxt). c. Return. flags: [module, async] features: [top-level-await] --- 3482
module-import-unwrapped_FIXTURE.js 332
module-self-import-async-resolution-ticks.js --- esid: sec-moduleevaluation description: > Ticks from async module (w/ TLA) self importing info: | Table 3: Additional Fields of Cyclic Module Records [[Async]] ... Having an asynchronous dependency does not make the module asynchronous. This field must not change after the module is parsed. Evaluate ( ) Concrete Method ... 6. Let capability be ! NewPromiseCapability(%Promise%). 7. Set module.[[TopLevelCapability]] to capability. 8. Let result be InnerModuleEvaluation(module, stack, 0). 9. If result is an abrupt completion, then ... d. Perform ! Call(capability.[[Reject]], undefined, «result.[[Value]]»). 10. Otherwise, ... b. If module.[[AsyncEvaluating]] is false, then i. Perform ! Call(capability.[[Resolve]], undefined, «undefined»). ... 11. Return undefinedcapability.[[Promise]]. InnerModuleEvaluation( module, stack, index ) ... 14. If module.[[PendingAsyncDependencies]] is > 0, set module.[[AsyncEvaluating]] to true. 15. Otherwise, if module.[[Async]] is true, perform ! ExecuteAsyncModule(module). 16. Otherwise, perform ? module.ExecuteModule(). ExecuteAsyncModule ( module ) 1. Assert: module.[[Status]] is "evaluating" or "evaluated". 2. Assert: module.[[Async]] is true. 3. Set module.[[AsyncEvaluating]] to true. 4. Let capability be ! NewPromiseCapability(%Promise%). 5. Let stepsFulfilled be the steps of a CallAsyncModuleFulfilled function as specified below. ... 8. Let stepsRejected be the steps of a CallAsyncModuleRejected function as specified below. ... 11. Perform ! PerformPromiseThen(capability.[[Promise]], onFulfilled, onRejected). 12. Perform ! module.ExecuteModule(capability). 13. Return. ExecuteModule ( [ capability ] ) ... 11. If module.[[Async]] is false, then a. Assert: capability was not provided. b. Push moduleCxt on to the execution context stack; moduleCxt is now the running execution context. c. Let result be the result of evaluating module.[[ECMAScriptCode]]. d. Suspend moduleCxt and remove it from the execution context stack. e. Resume the context that is now on the top of the execution context stack as the running execution context. f. Return Completion(result). 12. Otherwise, a. Assert: capability is a PromiseCapability Record. b. Perform ! AsyncBlockStart(capability, module.[[ECMAScriptCode]], moduleCxt). c. Return. flags: [module, async] features: [top-level-await] --- 3119
module-sync-import-async-resolution-ticks.js --- esid: sec-moduleevaluation description: > Ticks from sync module (no TLA) loading async module info: | Table 3: Additional Fields of Cyclic Module Records [[Async]] ... Having an asynchronous dependency does not make the module asynchronous. This field must not change after the module is parsed. Evaluate ( ) Concrete Method ... 6. Let capability be ! NewPromiseCapability(%Promise%). 7. Set module.[[TopLevelCapability]] to capability. 8. Let result be InnerModuleEvaluation(module, stack, 0). 9. If result is an abrupt completion, then ... d. Perform ! Call(capability.[[Reject]], undefined, «result.[[Value]]»). 10. Otherwise, ... b. If module.[[AsyncEvaluating]] is false, then i. Perform ! Call(capability.[[Resolve]], undefined, «undefined»). ... 11. Return undefinedcapability.[[Promise]]. InnerModuleEvaluation( module, stack, index ) ... 14. If module.[[PendingAsyncDependencies]] is > 0, set module.[[AsyncEvaluating]] to true. 15. Otherwise, if module.[[Async]] is true, perform ! ExecuteAsyncModule(module). 16. Otherwise, perform ? module.ExecuteModule(). ExecuteAsyncModule ( module ) 1. Assert: module.[[Status]] is "evaluating" or "evaluated". 2. Assert: module.[[Async]] is true. 3. Set module.[[AsyncEvaluating]] to true. 4. Let capability be ! NewPromiseCapability(%Promise%). 5. Let stepsFulfilled be the steps of a CallAsyncModuleFulfilled function as specified below. ... 8. Let stepsRejected be the steps of a CallAsyncModuleRejected function as specified below. ... 11. Perform ! PerformPromiseThen(capability.[[Promise]], onFulfilled, onRejected). 12. Perform ! module.ExecuteModule(capability). 13. Return. ExecuteModule ( [ capability ] ) ... 11. If module.[[Async]] is false, then a. Assert: capability was not provided. b. Push moduleCxt on to the execution context stack; moduleCxt is now the running execution context. c. Let result be the result of evaluating module.[[ECMAScriptCode]]. d. Suspend moduleCxt and remove it from the execution context stack. e. Resume the context that is now on the top of the execution context stack as the running execution context. f. Return Completion(result). 12. Otherwise, a. Assert: capability is a PromiseCapability Record. b. Perform ! AsyncBlockStart(capability, module.[[ECMAScriptCode]], moduleCxt). c. Return. flags: [module, async] features: [top-level-await] --- 2992
new-await-parens.js --- esid: prod-AwaitExpression description: > `new (await Constructor)` returns instance of Constructor flags: [module, async] features: [top-level-await] --- 635
new-await-script-code.js --- esid: prod-AwaitExpression description: > await is not a keyword in script code features: [top-level-await] --- 342
new-await.js --- esid: prod-AwaitExpression description: > await cannot immediately follow new in module code negative: phase: parse type: SyntaxError flags: [module] features: [top-level-await] --- 394
no-operand.js --- esid: prod-AwaitExpression description: > await requries an operand. negative: phase: parse type: SyntaxError flags: [module] features: [top-level-await] --- 360
shell.js 0
syntax
top-level-ticks-2.js --- esid: sec-asyncblockstart description: > Evaluation of await ticks order info: | AsyncBlockStart ( promiseCapability, asyncBody, asyncContext ) 1. Assert: promiseCapability is a PromiseCapability Record. 2. Let runningContext be the running execution context. 3. Set the code evaluation state of asyncContext such that when evaluation is resumed for that execution context the following steps will be performed: a. Let result be the result of evaluating asyncBody. ... includes: [compareArray.js] flags: [module, async] features: [top-level-await] --- 1284
top-level-ticks.js --- esid: sec-asyncblockstart description: > Evaluation of await ticks order info: | AsyncBlockStart ( promiseCapability, asyncBody, asyncContext ) 1. Assert: promiseCapability is a PromiseCapability Record. 2. Let runningContext be the running execution context. 3. Set the code evaluation state of asyncContext such that when evaluation is resumed for that execution context the following steps will be performed: a. Let result be the result of evaluating asyncBody. ... includes: [compareArray.js] flags: [module, async] features: [top-level-await] --- 1296
void-await-expr.js --- description: > void AwaitExpression is still evaluated info: | ModuleItem: StatementListItem[~Yield, +Await, ~Return] ... UnaryExpression[Yield, Await] void UnaryExpression[?Yield, ?Await] [+Await]AwaitExpression[?Yield] AwaitExpression[Yield]: await UnaryExpression[?Yield, +Await] esid: prod-AwaitExpression flags: [module, async] features: [top-level-await] --- 666
while-dynamic-evaluation.js --- description: > Evaluate Await expression for IfStatement info: | ModuleItem: StatementListItem[~Yield, +Await, ~Return] ... UnaryExpression[Yield, Await] [+Await]AwaitExpression[?Yield] AwaitExpression[Yield]: await UnaryExpression[?Yield, +Await] esid: prod-AwaitExpression flags: [module, async] features: [top-level-await] --- 961