Create parser plugin "topLevelAwait" (#10449)

* Create parser plugin "topLevelAwait"

* Update test262 whitelist

* Update ts typings

* Fix "sourceType: unambiguous" with TLA

* Ambiguous tokens after await

* Update await %x(0)

* typo [skip ci]

* Typo [skip ci]

Co-Authored-By: Brian Ng <bng412@gmail.com>
This commit is contained in:
Nicolò Ribaudo 2019-10-29 22:18:39 +01:00 committed by GitHub
parent 63f9a3c946
commit 143d159982
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
42 changed files with 2108 additions and 461 deletions

View File

@ -25,15 +25,32 @@ export function parse(input: string, options?: Options): File {
const parser = getParser(options, input); const parser = getParser(options, input);
const ast = parser.parse(); const ast = parser.parse();
// Rather than try to parse as a script first, we opt to parse as a module and convert back if (parser.sawUnambiguousESM) {
// to a script where possible to avoid having to do a full re-parse of the input content. return ast;
if (!parser.sawUnambiguousESM) ast.program.sourceType = "script"; }
if (parser.ambiguousScriptDifferentAst) {
// Top level await introduces code which can be both a valid script and
// a valid module, but which produces different ASTs:
// await
// 0
// can be parsed either as an AwaitExpression, or as two ExpressionStatements.
try {
options.sourceType = "script";
return getParser(options, input).parse();
} catch {}
} else {
// This is both a valid module and a valid script, but
// we parse it as a script by default
ast.program.sourceType = "script";
}
return ast; return ast;
} catch (moduleError) { } catch (moduleError) {
try { try {
options.sourceType = "script"; options.sourceType = "script";
return getParser(options, input).parse(); return getParser(options, input).parse();
} catch (scriptError) {} } catch {}
throw moduleError; throw moduleError;
} }

View File

@ -13,6 +13,7 @@ export default class BaseParser {
plugins: PluginsMap; plugins: PluginsMap;
filename: ?string; filename: ?string;
sawUnambiguousESM: boolean = false; sawUnambiguousESM: boolean = false;
ambiguousScriptDifferentAst: boolean = false;
// Initialized by Tokenizer // Initialized by Tokenizer
state: State; state: State;

View File

@ -2208,6 +2208,7 @@ export default class ExpressionParser extends LValParser {
isAwaitAllowed(): boolean { isAwaitAllowed(): boolean {
if (this.scope.inFunction) return this.scope.inAsync; if (this.scope.inFunction) return this.scope.inAsync;
if (this.options.allowAwaitOutsideFunction) return true; if (this.options.allowAwaitOutsideFunction) return true;
if (this.hasPlugin("topLevelAwait")) return this.inModule;
return false; return false;
} }
@ -2234,9 +2235,33 @@ export default class ExpressionParser extends LValParser {
); );
} }
if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) {
if (
this.hasPrecedingLineBreak() ||
// All the following expressions are ambiguous:
// await + 0, await - 0, await ( 0 ), await [ 0 ], await / 0 /u, await ``
this.match(tt.plusMin) ||
this.match(tt.parenL) ||
this.match(tt.bracketL) ||
this.match(tt.backQuote) ||
// Sometimes the tokenizer generates tt.slash for regexps, and this is
// handler by parseExprAtom
this.match(tt.regexp) ||
this.match(tt.slash) ||
// This code could be parsed both as a modulo operator or as an intrinsic:
// await %x(0)
(this.hasPlugin("v8intrinsic") && this.match(tt.modulo))
) {
this.ambiguousScriptDifferentAst = true;
} else {
this.sawUnambiguousESM = true;
}
}
if (!this.state.soloAwait) { if (!this.state.soloAwait) {
node.argument = this.parseMaybeUnary(); node.argument = this.parseMaybeUnary();
} }
return this.finishNode(node, "AwaitExpression"); return this.finishNode(node, "AwaitExpression");
} }

View File

@ -495,11 +495,7 @@ export default class StatementParser extends ExpressionParser {
this.state.labels.push(loopLabel); this.state.labels.push(loopLabel);
let awaitAt = -1; let awaitAt = -1;
if ( if (this.isAwaitAllowed() && this.eatContextual("await")) {
(this.scope.inAsync ||
(!this.scope.inFunction && this.options.allowAwaitOutsideFunction)) &&
this.eatContextual("await")
) {
awaitAt = this.state.lastTokStart; awaitAt = this.state.lastTokStart;
} }
this.scope.enter(SCOPE_OTHER); this.scope.enter(SCOPE_OTHER);

View File

@ -0,0 +1 @@
export default await 0;

View File

@ -0,0 +1,4 @@
{
"plugins": ["topLevelAwait"],
"sourceType": "module"
}

View File

@ -0,0 +1,85 @@
{
"type": "File",
"start": 0,
"end": 23,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 23
}
},
"program": {
"type": "Program",
"start": 0,
"end": 23,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 23
}
},
"sourceType": "module",
"interpreter": null,
"body": [
{
"type": "ExportDefaultDeclaration",
"start": 0,
"end": 23,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 23
}
},
"declaration": {
"type": "AwaitExpression",
"start": 15,
"end": 22,
"loc": {
"start": {
"line": 1,
"column": 15
},
"end": {
"line": 1,
"column": 22
}
},
"argument": {
"type": "NumericLiteral",
"start": 21,
"end": 22,
"loc": {
"start": {
"line": 1,
"column": 21
},
"end": {
"line": 1,
"column": 22
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
}
],
"directives": []
}
}

View File

@ -0,0 +1 @@
for await (const a of b);

View File

@ -0,0 +1,4 @@
{
"plugins": ["topLevelAwait"],
"sourceType": "module"
}

View File

@ -0,0 +1,134 @@
{
"type": "File",
"start": 0,
"end": 25,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 25
}
},
"program": {
"type": "Program",
"start": 0,
"end": 25,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 25
}
},
"sourceType": "module",
"interpreter": null,
"body": [
{
"type": "ForOfStatement",
"start": 0,
"end": 25,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 25
}
},
"await": true,
"left": {
"type": "VariableDeclaration",
"start": 11,
"end": 18,
"loc": {
"start": {
"line": 1,
"column": 11
},
"end": {
"line": 1,
"column": 18
}
},
"declarations": [
{
"type": "VariableDeclarator",
"start": 17,
"end": 18,
"loc": {
"start": {
"line": 1,
"column": 17
},
"end": {
"line": 1,
"column": 18
}
},
"id": {
"type": "Identifier",
"start": 17,
"end": 18,
"loc": {
"start": {
"line": 1,
"column": 17
},
"end": {
"line": 1,
"column": 18
},
"identifierName": "a"
},
"name": "a"
},
"init": null
}
],
"kind": "const"
},
"right": {
"type": "Identifier",
"start": 22,
"end": 23,
"loc": {
"start": {
"line": 1,
"column": 22
},
"end": {
"line": 1,
"column": 23
},
"identifierName": "b"
},
"name": "b"
},
"body": {
"type": "EmptyStatement",
"start": 24,
"end": 25,
"loc": {
"start": {
"line": 1,
"column": 24
},
"end": {
"line": 1,
"column": 25
}
}
}
}
],
"directives": []
}
}

View File

@ -0,0 +1 @@
for await (const a of b);

View File

@ -0,0 +1,5 @@
{
"plugins": ["topLevelAwait"],
"sourceType": "script",
"throws": "Unexpected token, expected \"(\" (1:4)"
}

View File

@ -0,0 +1 @@
() => await 0;

View File

@ -0,0 +1,5 @@
{
"plugins": ["topLevelAwait"],
"sourceType": "module",
"throws": "Can not use keyword 'await' outside an async function (1:6)"
}

View File

@ -0,0 +1,3 @@
if (true) {
await 0;
}

View File

@ -0,0 +1,4 @@
{
"plugins": ["topLevelAwait"],
"sourceType": "module"
}

View File

@ -0,0 +1,135 @@
{
"type": "File",
"start": 0,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"sourceType": "module",
"interpreter": null,
"body": [
{
"type": "IfStatement",
"start": 0,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"test": {
"type": "BooleanLiteral",
"start": 4,
"end": 8,
"loc": {
"start": {
"line": 1,
"column": 4
},
"end": {
"line": 1,
"column": 8
}
},
"value": true
},
"consequent": {
"type": "BlockStatement",
"start": 10,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 10
},
"end": {
"line": 3,
"column": 1
}
},
"body": [
{
"type": "ExpressionStatement",
"start": 14,
"end": 22,
"loc": {
"start": {
"line": 2,
"column": 2
},
"end": {
"line": 2,
"column": 10
}
},
"expression": {
"type": "AwaitExpression",
"start": 14,
"end": 21,
"loc": {
"start": {
"line": 2,
"column": 2
},
"end": {
"line": 2,
"column": 9
}
},
"argument": {
"type": "NumericLiteral",
"start": 20,
"end": 21,
"loc": {
"start": {
"line": 2,
"column": 8
},
"end": {
"line": 2,
"column": 9
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
}
],
"directives": []
},
"alternate": null
}
],
"directives": []
}
}

View File

@ -0,0 +1,3 @@
function fn() {
await 0;
}

View File

@ -0,0 +1,5 @@
{
"plugins": ["topLevelAwait"],
"sourceType": "module",
"throws": "Can not use keyword 'await' outside an async function (2:2)"
}

View File

@ -0,0 +1,4 @@
{
"plugins": ["topLevelAwait"],
"sourceType": "module"
}

View File

@ -0,0 +1,85 @@
{
"type": "File",
"start": 0,
"end": 8,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 8
}
},
"program": {
"type": "Program",
"start": 0,
"end": 8,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 8
}
},
"sourceType": "module",
"interpreter": null,
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 8,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 8
}
},
"expression": {
"type": "AwaitExpression",
"start": 0,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 7
}
},
"argument": {
"type": "NumericLiteral",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
}
],
"directives": []
}
}

View File

@ -0,0 +1,5 @@
{
"plugins": ["topLevelAwait"],
"sourceType": "script",
"throws": "Unexpected token, expected \";\" (1:6)"
}

View File

@ -0,0 +1,7 @@
await 0
await + 0
await - 0
await ( 0 )
await [ 0 ]
await / 0 /u

View File

@ -0,0 +1,5 @@
{
"plugins": ["topLevelAwait"],
"sourceType": "unambiguous",
"allowAwaitOutsideFunction": true
}

View File

@ -0,0 +1,388 @@
{
"type": "File",
"start": 0,
"end": 65,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 7,
"column": 12
}
},
"program": {
"type": "Program",
"start": 0,
"end": 65,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 7,
"column": 12
}
},
"sourceType": "script",
"interpreter": null,
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 7
}
},
"expression": {
"type": "AwaitExpression",
"start": 0,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 7
}
},
"argument": {
"type": "NumericLiteral",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
},
{
"type": "ExpressionStatement",
"start": 9,
"end": 18,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 9
}
},
"expression": {
"type": "AwaitExpression",
"start": 9,
"end": 18,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 9
}
},
"argument": {
"type": "UnaryExpression",
"start": 15,
"end": 18,
"loc": {
"start": {
"line": 3,
"column": 6
},
"end": {
"line": 3,
"column": 9
}
},
"operator": "+",
"prefix": true,
"argument": {
"type": "NumericLiteral",
"start": 17,
"end": 18,
"loc": {
"start": {
"line": 3,
"column": 8
},
"end": {
"line": 3,
"column": 9
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
}
},
{
"type": "ExpressionStatement",
"start": 19,
"end": 28,
"loc": {
"start": {
"line": 4,
"column": 0
},
"end": {
"line": 4,
"column": 9
}
},
"expression": {
"type": "AwaitExpression",
"start": 19,
"end": 28,
"loc": {
"start": {
"line": 4,
"column": 0
},
"end": {
"line": 4,
"column": 9
}
},
"argument": {
"type": "UnaryExpression",
"start": 25,
"end": 28,
"loc": {
"start": {
"line": 4,
"column": 6
},
"end": {
"line": 4,
"column": 9
}
},
"operator": "-",
"prefix": true,
"argument": {
"type": "NumericLiteral",
"start": 27,
"end": 28,
"loc": {
"start": {
"line": 4,
"column": 8
},
"end": {
"line": 4,
"column": 9
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
}
},
{
"type": "ExpressionStatement",
"start": 29,
"end": 40,
"loc": {
"start": {
"line": 5,
"column": 0
},
"end": {
"line": 5,
"column": 11
}
},
"expression": {
"type": "AwaitExpression",
"start": 29,
"end": 40,
"loc": {
"start": {
"line": 5,
"column": 0
},
"end": {
"line": 5,
"column": 11
}
},
"argument": {
"type": "NumericLiteral",
"start": 37,
"end": 38,
"loc": {
"start": {
"line": 5,
"column": 8
},
"end": {
"line": 5,
"column": 9
}
},
"extra": {
"rawValue": 0,
"raw": "0",
"parenthesized": true,
"parenStart": 35
},
"value": 0
}
}
},
{
"type": "ExpressionStatement",
"start": 41,
"end": 52,
"loc": {
"start": {
"line": 6,
"column": 0
},
"end": {
"line": 6,
"column": 11
}
},
"expression": {
"type": "AwaitExpression",
"start": 41,
"end": 52,
"loc": {
"start": {
"line": 6,
"column": 0
},
"end": {
"line": 6,
"column": 11
}
},
"argument": {
"type": "ArrayExpression",
"start": 47,
"end": 52,
"loc": {
"start": {
"line": 6,
"column": 6
},
"end": {
"line": 6,
"column": 11
}
},
"elements": [
{
"type": "NumericLiteral",
"start": 49,
"end": 50,
"loc": {
"start": {
"line": 6,
"column": 8
},
"end": {
"line": 6,
"column": 9
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
]
}
}
},
{
"type": "ExpressionStatement",
"start": 53,
"end": 65,
"loc": {
"start": {
"line": 7,
"column": 0
},
"end": {
"line": 7,
"column": 12
}
},
"expression": {
"type": "AwaitExpression",
"start": 53,
"end": 65,
"loc": {
"start": {
"line": 7,
"column": 0
},
"end": {
"line": 7,
"column": 12
}
},
"argument": {
"type": "RegExpLiteral",
"start": 59,
"end": 65,
"loc": {
"start": {
"line": 7,
"column": 6
},
"end": {
"line": 7,
"column": 12
}
},
"extra": {
"raw": "/ 0 /u"
},
"pattern": " 0 ",
"flags": "u"
}
}
}
],
"directives": []
}
}

View File

@ -0,0 +1,4 @@
{
"plugins": ["topLevelAwait"],
"sourceType": "unambiguous"
}

View File

@ -0,0 +1,137 @@
{
"type": "File",
"start": 0,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 11
}
},
"program": {
"type": "Program",
"start": 0,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 11
}
},
"sourceType": "script",
"interpreter": null,
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 11
}
},
"expression": {
"type": "BinaryExpression",
"start": 0,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 11
}
},
"left": {
"type": "Identifier",
"start": 0,
"end": 5,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 5
},
"identifierName": "await"
},
"name": "await"
},
"operator": "%",
"right": {
"type": "CallExpression",
"start": 7,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 7
},
"end": {
"line": 1,
"column": 11
}
},
"callee": {
"type": "Identifier",
"start": 7,
"end": 8,
"loc": {
"start": {
"line": 1,
"column": 7
},
"end": {
"line": 1,
"column": 8
},
"identifierName": "x"
},
"name": "x"
},
"arguments": [
{
"type": "NumericLiteral",
"start": 9,
"end": 10,
"loc": {
"start": {
"line": 1,
"column": 9
},
"end": {
"line": 1,
"column": 10
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
]
}
}
}
],
"directives": []
}
}

View File

@ -0,0 +1,8 @@
await
0
await + 0
await - 0
await ( 0 )
await [ 0 ]
await / 0 /u

View File

@ -0,0 +1,4 @@
{
"plugins": ["topLevelAwait"],
"sourceType": "unambiguous"
}

View File

@ -0,0 +1,476 @@
{
"type": "File",
"start": 0,
"end": 65,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 8,
"column": 12
}
},
"program": {
"type": "Program",
"start": 0,
"end": 65,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 8,
"column": 12
}
},
"sourceType": "script",
"interpreter": null,
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 5,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 5
}
},
"expression": {
"type": "Identifier",
"start": 0,
"end": 5,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 5
},
"identifierName": "await"
},
"name": "await"
}
},
{
"type": "ExpressionStatement",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 1
}
},
"expression": {
"type": "NumericLiteral",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 1
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
},
{
"type": "ExpressionStatement",
"start": 9,
"end": 18,
"loc": {
"start": {
"line": 4,
"column": 0
},
"end": {
"line": 4,
"column": 9
}
},
"expression": {
"type": "BinaryExpression",
"start": 9,
"end": 18,
"loc": {
"start": {
"line": 4,
"column": 0
},
"end": {
"line": 4,
"column": 9
}
},
"left": {
"type": "Identifier",
"start": 9,
"end": 14,
"loc": {
"start": {
"line": 4,
"column": 0
},
"end": {
"line": 4,
"column": 5
},
"identifierName": "await"
},
"name": "await"
},
"operator": "+",
"right": {
"type": "NumericLiteral",
"start": 17,
"end": 18,
"loc": {
"start": {
"line": 4,
"column": 8
},
"end": {
"line": 4,
"column": 9
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
},
{
"type": "ExpressionStatement",
"start": 19,
"end": 28,
"loc": {
"start": {
"line": 5,
"column": 0
},
"end": {
"line": 5,
"column": 9
}
},
"expression": {
"type": "BinaryExpression",
"start": 19,
"end": 28,
"loc": {
"start": {
"line": 5,
"column": 0
},
"end": {
"line": 5,
"column": 9
}
},
"left": {
"type": "Identifier",
"start": 19,
"end": 24,
"loc": {
"start": {
"line": 5,
"column": 0
},
"end": {
"line": 5,
"column": 5
},
"identifierName": "await"
},
"name": "await"
},
"operator": "-",
"right": {
"type": "NumericLiteral",
"start": 27,
"end": 28,
"loc": {
"start": {
"line": 5,
"column": 8
},
"end": {
"line": 5,
"column": 9
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
},
{
"type": "ExpressionStatement",
"start": 29,
"end": 40,
"loc": {
"start": {
"line": 6,
"column": 0
},
"end": {
"line": 6,
"column": 11
}
},
"expression": {
"type": "CallExpression",
"start": 29,
"end": 40,
"loc": {
"start": {
"line": 6,
"column": 0
},
"end": {
"line": 6,
"column": 11
}
},
"callee": {
"type": "Identifier",
"start": 29,
"end": 34,
"loc": {
"start": {
"line": 6,
"column": 0
},
"end": {
"line": 6,
"column": 5
},
"identifierName": "await"
},
"name": "await"
},
"arguments": [
{
"type": "NumericLiteral",
"start": 37,
"end": 38,
"loc": {
"start": {
"line": 6,
"column": 8
},
"end": {
"line": 6,
"column": 9
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
]
}
},
{
"type": "ExpressionStatement",
"start": 41,
"end": 52,
"loc": {
"start": {
"line": 7,
"column": 0
},
"end": {
"line": 7,
"column": 11
}
},
"expression": {
"type": "MemberExpression",
"start": 41,
"end": 52,
"loc": {
"start": {
"line": 7,
"column": 0
},
"end": {
"line": 7,
"column": 11
}
},
"object": {
"type": "Identifier",
"start": 41,
"end": 46,
"loc": {
"start": {
"line": 7,
"column": 0
},
"end": {
"line": 7,
"column": 5
},
"identifierName": "await"
},
"name": "await"
},
"property": {
"type": "NumericLiteral",
"start": 49,
"end": 50,
"loc": {
"start": {
"line": 7,
"column": 8
},
"end": {
"line": 7,
"column": 9
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
},
"computed": true
}
},
{
"type": "ExpressionStatement",
"start": 53,
"end": 65,
"loc": {
"start": {
"line": 8,
"column": 0
},
"end": {
"line": 8,
"column": 12
}
},
"expression": {
"type": "BinaryExpression",
"start": 53,
"end": 65,
"loc": {
"start": {
"line": 8,
"column": 0
},
"end": {
"line": 8,
"column": 12
}
},
"left": {
"type": "BinaryExpression",
"start": 53,
"end": 62,
"loc": {
"start": {
"line": 8,
"column": 0
},
"end": {
"line": 8,
"column": 9
}
},
"left": {
"type": "Identifier",
"start": 53,
"end": 58,
"loc": {
"start": {
"line": 8,
"column": 0
},
"end": {
"line": 8,
"column": 5
},
"identifierName": "await"
},
"name": "await"
},
"operator": "/",
"right": {
"type": "NumericLiteral",
"start": 61,
"end": 62,
"loc": {
"start": {
"line": 8,
"column": 8
},
"end": {
"line": 8,
"column": 9
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
},
"operator": "/",
"right": {
"type": "Identifier",
"start": 64,
"end": 65,
"loc": {
"start": {
"line": 8,
"column": 11
},
"end": {
"line": 8,
"column": 12
},
"identifierName": "u"
},
"name": "u"
}
}
}
],
"directives": []
}
}

View File

@ -0,0 +1,4 @@
{
"plugins": ["topLevelAwait", "v8intrinsic"],
"sourceType": "unambiguous"
}

View File

@ -0,0 +1,137 @@
{
"type": "File",
"start": 0,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 11
}
},
"program": {
"type": "Program",
"start": 0,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 11
}
},
"sourceType": "script",
"interpreter": null,
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 11
}
},
"expression": {
"type": "BinaryExpression",
"start": 0,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 11
}
},
"left": {
"type": "Identifier",
"start": 0,
"end": 5,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 5
},
"identifierName": "await"
},
"name": "await"
},
"operator": "%",
"right": {
"type": "CallExpression",
"start": 7,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 7
},
"end": {
"line": 1,
"column": 11
}
},
"callee": {
"type": "Identifier",
"start": 7,
"end": 8,
"loc": {
"start": {
"line": 1,
"column": 7
},
"end": {
"line": 1,
"column": 8
},
"identifierName": "x"
},
"name": "x"
},
"arguments": [
{
"type": "NumericLiteral",
"start": 9,
"end": 10,
"loc": {
"start": {
"line": 1,
"column": 9
},
"end": {
"line": 1,
"column": 10
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
]
}
}
}
],
"directives": []
}
}

View File

@ -0,0 +1,7 @@
await 0
await + 0
await - 0
await ( 0 )
await [ 0 ]
await / 0 /u

View File

@ -0,0 +1,4 @@
{
"plugins": ["topLevelAwait"],
"sourceType": "unambiguous"
}

View File

@ -0,0 +1,388 @@
{
"type": "File",
"start": 0,
"end": 65,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 7,
"column": 12
}
},
"program": {
"type": "Program",
"start": 0,
"end": 65,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 7,
"column": 12
}
},
"sourceType": "module",
"interpreter": null,
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 7
}
},
"expression": {
"type": "AwaitExpression",
"start": 0,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 7
}
},
"argument": {
"type": "NumericLiteral",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
},
{
"type": "ExpressionStatement",
"start": 9,
"end": 18,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 9
}
},
"expression": {
"type": "AwaitExpression",
"start": 9,
"end": 18,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 9
}
},
"argument": {
"type": "UnaryExpression",
"start": 15,
"end": 18,
"loc": {
"start": {
"line": 3,
"column": 6
},
"end": {
"line": 3,
"column": 9
}
},
"operator": "+",
"prefix": true,
"argument": {
"type": "NumericLiteral",
"start": 17,
"end": 18,
"loc": {
"start": {
"line": 3,
"column": 8
},
"end": {
"line": 3,
"column": 9
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
}
},
{
"type": "ExpressionStatement",
"start": 19,
"end": 28,
"loc": {
"start": {
"line": 4,
"column": 0
},
"end": {
"line": 4,
"column": 9
}
},
"expression": {
"type": "AwaitExpression",
"start": 19,
"end": 28,
"loc": {
"start": {
"line": 4,
"column": 0
},
"end": {
"line": 4,
"column": 9
}
},
"argument": {
"type": "UnaryExpression",
"start": 25,
"end": 28,
"loc": {
"start": {
"line": 4,
"column": 6
},
"end": {
"line": 4,
"column": 9
}
},
"operator": "-",
"prefix": true,
"argument": {
"type": "NumericLiteral",
"start": 27,
"end": 28,
"loc": {
"start": {
"line": 4,
"column": 8
},
"end": {
"line": 4,
"column": 9
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
}
},
{
"type": "ExpressionStatement",
"start": 29,
"end": 40,
"loc": {
"start": {
"line": 5,
"column": 0
},
"end": {
"line": 5,
"column": 11
}
},
"expression": {
"type": "AwaitExpression",
"start": 29,
"end": 40,
"loc": {
"start": {
"line": 5,
"column": 0
},
"end": {
"line": 5,
"column": 11
}
},
"argument": {
"type": "NumericLiteral",
"start": 37,
"end": 38,
"loc": {
"start": {
"line": 5,
"column": 8
},
"end": {
"line": 5,
"column": 9
}
},
"extra": {
"rawValue": 0,
"raw": "0",
"parenthesized": true,
"parenStart": 35
},
"value": 0
}
}
},
{
"type": "ExpressionStatement",
"start": 41,
"end": 52,
"loc": {
"start": {
"line": 6,
"column": 0
},
"end": {
"line": 6,
"column": 11
}
},
"expression": {
"type": "AwaitExpression",
"start": 41,
"end": 52,
"loc": {
"start": {
"line": 6,
"column": 0
},
"end": {
"line": 6,
"column": 11
}
},
"argument": {
"type": "ArrayExpression",
"start": 47,
"end": 52,
"loc": {
"start": {
"line": 6,
"column": 6
},
"end": {
"line": 6,
"column": 11
}
},
"elements": [
{
"type": "NumericLiteral",
"start": 49,
"end": 50,
"loc": {
"start": {
"line": 6,
"column": 8
},
"end": {
"line": 6,
"column": 9
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
]
}
}
},
{
"type": "ExpressionStatement",
"start": 53,
"end": 65,
"loc": {
"start": {
"line": 7,
"column": 0
},
"end": {
"line": 7,
"column": 12
}
},
"expression": {
"type": "AwaitExpression",
"start": 53,
"end": 65,
"loc": {
"start": {
"line": 7,
"column": 0
},
"end": {
"line": 7,
"column": 12
}
},
"argument": {
"type": "RegExpLiteral",
"start": 59,
"end": 65,
"loc": {
"start": {
"line": 7,
"column": 6
},
"end": {
"line": 7,
"column": 12
}
},
"extra": {
"raw": "/ 0 /u"
},
"pattern": " 0 ",
"flags": "u"
}
}
}
],
"directives": []
}
}

View File

@ -123,6 +123,7 @@ export type ParserPlugin =
'pipelineOperator' | 'pipelineOperator' |
'placeholders' | 'placeholders' |
'throwExpressions' | 'throwExpressions' |
'topLevelAwait' |
'typescript' | 'typescript' |
'v8intrinsic' | 'v8intrinsic' |
ParserPluginWithOptions; ParserPluginWithOptions;

View File

@ -123,6 +123,7 @@ const featuresToPlugins = {
"import.meta": "importMeta", "import.meta": "importMeta",
"numeric-separator-literal": "numericSeparator", "numeric-separator-literal": "numericSeparator",
"optional-chaining": "optionalChaining", "optional-chaining": "optionalChaining",
"top-level-await": "topLevelAwait",
}; };
function getPlugins(features) { function getPlugins(features) {

View File

@ -98,458 +98,6 @@ language/module-code/privatename-not-valid-earlyerr-module-3.js(default)
language/module-code/privatename-not-valid-earlyerr-module-3.js(strict mode) language/module-code/privatename-not-valid-earlyerr-module-3.js(strict mode)
language/module-code/privatename-not-valid-earlyerr-module-4.js(default) language/module-code/privatename-not-valid-earlyerr-module-4.js(default)
language/module-code/privatename-not-valid-earlyerr-module-4.js(strict mode) language/module-code/privatename-not-valid-earlyerr-module-4.js(strict mode)
language/module-code/top-level-await/await-awaits-thenable-not-callable.js(default)
language/module-code/top-level-await/await-awaits-thenable-not-callable.js(strict mode)
language/module-code/top-level-await/await-awaits-thenables-that-throw.js(default)
language/module-code/top-level-await/await-awaits-thenables-that-throw.js(strict mode)
language/module-code/top-level-await/await-awaits-thenables.js(default)
language/module-code/top-level-await/await-awaits-thenables.js(strict mode)
language/module-code/top-level-await/await-dynamic-import-rejection.js(default)
language/module-code/top-level-await/await-dynamic-import-rejection.js(strict mode)
language/module-code/top-level-await/await-dynamic-import-resolution.js(default)
language/module-code/top-level-await/await-dynamic-import-resolution.js(strict mode)
language/module-code/top-level-await/await-expr-func-expression.js(default)
language/module-code/top-level-await/await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/await-expr-new-expr-reject.js(default)
language/module-code/top-level-await/await-expr-new-expr-reject.js(strict mode)
language/module-code/top-level-await/await-expr-new-expr.js(default)
language/module-code/top-level-await/await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/await-expr-regexp.js(default)
language/module-code/top-level-await/await-expr-regexp.js(strict mode)
language/module-code/top-level-await/await-expr-reject-throws.js(default)
language/module-code/top-level-await/await-expr-reject-throws.js(strict mode)
language/module-code/top-level-await/await-expr-resolution.js(default)
language/module-code/top-level-await/await-expr-resolution.js(strict mode)
language/module-code/top-level-await/await-void-expr.js(default)
language/module-code/top-level-await/await-void-expr.js(strict mode)
language/module-code/top-level-await/if-await-expr.js(default)
language/module-code/top-level-await/if-await-expr.js(strict mode)
language/module-code/top-level-await/module-async-import-async-resolution-ticks.js(default)
language/module-code/top-level-await/module-async-import-async-resolution-ticks.js(strict mode)
language/module-code/top-level-await/module-import-unwrapped.js(default)
language/module-code/top-level-await/module-import-unwrapped.js(strict mode)
language/module-code/top-level-await/module-self-import-async-resolution-ticks.js(default)
language/module-code/top-level-await/module-self-import-async-resolution-ticks.js(strict mode)
language/module-code/top-level-await/syntax/await-expr-dyn-import.js(default)
language/module-code/top-level-await/syntax/await-expr-dyn-import.js(strict mode)
language/module-code/top-level-await/syntax/block-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/block-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/block-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/block-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/block-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/block-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/block-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/block-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/block-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/block-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/block-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/block-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/block-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/block-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/block-await-expr-null.js(default)
language/module-code/top-level-await/syntax/block-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/block-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/block-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/block-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/block-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/block-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/block-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/block-await-expr-this.js(default)
language/module-code/top-level-await/syntax/block-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/catch-parameter.js(default)
language/module-code/top-level-await/syntax/catch-parameter.js(strict mode)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-null.js(default)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-this.js(default)
language/module-code/top-level-await/syntax/export-class-decl-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-null.js(default)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-this.js(default)
language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-null.js(default)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-this.js(default)
language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-null.js(default)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-this.js(default)
language/module-code/top-level-await/syntax/export-lex-decl-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/export-var-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/export-var-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/export-var-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/export-var-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/export-var-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/export-var-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/export-var-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/export-var-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/export-var-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/export-var-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/export-var-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/export-var-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/export-var-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/export-var-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/export-var-await-expr-null.js(default)
language/module-code/top-level-await/syntax/export-var-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/export-var-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/export-var-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/export-var-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/export-var-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/export-var-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/export-var-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/export-var-await-expr-this.js(default)
language/module-code/top-level-await/syntax/export-var-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/for-await-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/for-await-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/for-await-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/for-await-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/for-await-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/for-await-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/for-await-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/for-await-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/for-await-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/for-await-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/for-await-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/for-await-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/for-await-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/for-await-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/for-await-await-expr-null.js(default)
language/module-code/top-level-await/syntax/for-await-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/for-await-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/for-await-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/for-await-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/for-await-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/for-await-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/for-await-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/for-await-await-expr-this.js(default)
language/module-code/top-level-await/syntax/for-await-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/for-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/for-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/for-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/for-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/for-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/for-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/for-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/for-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/for-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/for-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/for-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/for-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/for-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/for-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/for-await-expr-null.js(default)
language/module-code/top-level-await/syntax/for-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/for-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/for-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/for-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/for-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/for-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/for-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/for-await-expr-this.js(default)
language/module-code/top-level-await/syntax/for-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/for-in-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/for-in-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/for-in-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/for-in-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/for-in-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/for-in-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/for-in-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/for-in-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/for-in-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/for-in-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/for-in-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/for-in-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/for-in-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/for-in-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/for-in-await-expr-null.js(default)
language/module-code/top-level-await/syntax/for-in-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/for-in-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/for-in-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/for-in-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/for-in-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/for-in-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/for-in-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/for-in-await-expr-this.js(default)
language/module-code/top-level-await/syntax/for-in-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/for-of-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/for-of-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/for-of-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/for-of-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/for-of-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/for-of-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/for-of-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/for-of-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/for-of-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/for-of-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/for-of-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/for-of-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/for-of-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/for-of-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/for-of-await-expr-null.js(default)
language/module-code/top-level-await/syntax/for-of-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/for-of-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/for-of-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/for-of-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/for-of-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/for-of-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/for-of-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/for-of-await-expr-this.js(default)
language/module-code/top-level-await/syntax/for-of-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/if-block-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/if-block-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/if-block-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/if-block-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/if-block-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/if-block-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/if-block-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/if-block-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/if-block-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/if-block-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/if-block-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/if-block-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/if-block-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/if-block-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/if-block-await-expr-null.js(default)
language/module-code/top-level-await/syntax/if-block-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/if-block-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/if-block-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/if-block-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/if-block-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/if-block-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/if-block-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/if-block-await-expr-this.js(default)
language/module-code/top-level-await/syntax/if-block-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/if-expr-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/if-expr-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/if-expr-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/if-expr-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/if-expr-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/if-expr-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/if-expr-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/if-expr-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/if-expr-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/if-expr-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/if-expr-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/if-expr-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/if-expr-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/if-expr-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/if-expr-await-expr-null.js(default)
language/module-code/top-level-await/syntax/if-expr-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/if-expr-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/if-expr-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/if-expr-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/if-expr-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/if-expr-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/if-expr-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/if-expr-await-expr-this.js(default)
language/module-code/top-level-await/syntax/if-expr-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/top-level-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/top-level-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/top-level-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/top-level-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/top-level-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/top-level-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/top-level-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/top-level-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/top-level-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/top-level-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/top-level-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/top-level-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/top-level-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/top-level-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/top-level-await-expr-null.js(default)
language/module-code/top-level-await/syntax/top-level-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/top-level-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/top-level-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/top-level-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/top-level-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/top-level-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/top-level-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/top-level-await-expr-this.js(default)
language/module-code/top-level-await/syntax/top-level-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/try-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/try-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/try-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/try-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/try-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/try-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/try-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/try-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/try-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/try-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/try-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/try-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/try-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/try-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/try-await-expr-null.js(default)
language/module-code/top-level-await/syntax/try-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/try-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/try-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/try-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/try-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/try-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/try-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/try-await-expr-this.js(default)
language/module-code/top-level-await/syntax/try-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/typeof-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/typeof-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/typeof-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/typeof-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/typeof-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/typeof-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/typeof-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/typeof-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/typeof-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/typeof-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/typeof-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/typeof-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/typeof-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/typeof-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/typeof-await-expr-null.js(default)
language/module-code/top-level-await/syntax/typeof-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/typeof-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/typeof-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/typeof-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/typeof-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/typeof-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/typeof-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/typeof-await-expr-this.js(default)
language/module-code/top-level-await/syntax/typeof-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/void-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/void-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/void-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/void-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/void-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/void-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/void-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/void-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/void-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/void-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/void-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/void-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/void-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/void-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/void-await-expr-null.js(default)
language/module-code/top-level-await/syntax/void-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/void-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/void-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/void-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/void-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/void-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/void-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/void-await-expr-this.js(default)
language/module-code/top-level-await/syntax/void-await-expr-this.js(strict mode)
language/module-code/top-level-await/syntax/while-await-expr-array-literal.js(default)
language/module-code/top-level-await/syntax/while-await-expr-array-literal.js(strict mode)
language/module-code/top-level-await/syntax/while-await-expr-func-expression.js(default)
language/module-code/top-level-await/syntax/while-await-expr-func-expression.js(strict mode)
language/module-code/top-level-await/syntax/while-await-expr-identifier.js(default)
language/module-code/top-level-await/syntax/while-await-expr-identifier.js(strict mode)
language/module-code/top-level-await/syntax/while-await-expr-literal-number.js(default)
language/module-code/top-level-await/syntax/while-await-expr-literal-number.js(strict mode)
language/module-code/top-level-await/syntax/while-await-expr-literal-string.js(default)
language/module-code/top-level-await/syntax/while-await-expr-literal-string.js(strict mode)
language/module-code/top-level-await/syntax/while-await-expr-nested.js(default)
language/module-code/top-level-await/syntax/while-await-expr-nested.js(strict mode)
language/module-code/top-level-await/syntax/while-await-expr-new-expr.js(default)
language/module-code/top-level-await/syntax/while-await-expr-new-expr.js(strict mode)
language/module-code/top-level-await/syntax/while-await-expr-null.js(default)
language/module-code/top-level-await/syntax/while-await-expr-null.js(strict mode)
language/module-code/top-level-await/syntax/while-await-expr-obj-literal.js(default)
language/module-code/top-level-await/syntax/while-await-expr-obj-literal.js(strict mode)
language/module-code/top-level-await/syntax/while-await-expr-regexp.js(default)
language/module-code/top-level-await/syntax/while-await-expr-regexp.js(strict mode)
language/module-code/top-level-await/syntax/while-await-expr-template-literal.js(default)
language/module-code/top-level-await/syntax/while-await-expr-template-literal.js(strict mode)
language/module-code/top-level-await/syntax/while-await-expr-this.js(default)
language/module-code/top-level-await/syntax/while-await-expr-this.js(strict mode)
language/module-code/top-level-await/top-level-ticks-2.js(default)
language/module-code/top-level-await/top-level-ticks-2.js(strict mode)
language/module-code/top-level-await/top-level-ticks.js(default)
language/module-code/top-level-await/top-level-ticks.js(strict mode)
language/module-code/top-level-await/void-await-expr.js(default)
language/module-code/top-level-await/void-await-expr.js(strict mode)
language/module-code/top-level-await/while-dynamic-evaluation.js(default)
language/module-code/top-level-await/while-dynamic-evaluation.js(strict mode)
language/statements/class/elements/fields-duplicate-privatenames.js(default) language/statements/class/elements/fields-duplicate-privatenames.js(default)
language/statements/class/elements/fields-duplicate-privatenames.js(strict mode) language/statements/class/elements/fields-duplicate-privatenames.js(strict mode)
language/statements/class/elements/privatename-not-valid-earlyerr-script-1.js(default) language/statements/class/elements/privatename-not-valid-earlyerr-script-1.js(default)