From ddaf0d4296543789e602a7762a360be179b3e154 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Wed, 4 Aug 2021 00:00:04 +0200 Subject: [PATCH] Enable top-level `await` parsing by default (#13387) --- Makefile | 10 ++-- .../babel-parser/src/parser/expression.js | 16 +----- packages/babel-parser/src/parser/util.js | 2 +- .../top-level-await/module/input.js | 0 .../top-level-await/module/options.json | 0 .../top-level-await/module/output.json | 0 .../top-level-await/script/input.js | 0 .../top-level-await/script/options.json | 0 .../top-level-await/script/output.json | 0 .../top-level-await/unambiguous/input.js | 0 .../top-level-await/unambiguous/options.json | 0 .../top-level-await/unambiguous/output.json | 0 .../experimental/top-level-await/options.json | 3 - .../es2015/uncategorised/357/options.json | 3 +- .../es2015/uncategorised/357/output.json | 40 -------------- .../es2015/uncategorised/359/output.json | 2 +- .../es2015/uncategorised/361/output.json | 2 +- .../es2015/uncategorised/365/output.json | 2 +- .../es2015/uncategorised/367/output.json | 2 +- .../es2017/async-functions/9/output.json | 2 +- .../output.json | 2 +- .../output.json | 2 +- .../output.json | 2 +- .../output.json | 2 +- .../output.json | 2 +- .../output.json | 2 +- .../invalid-escape-sequence-arrow/output.json | 2 +- .../export-default/input.js | 0 .../export-default/output.json | 0 .../for-await}/input.js | 0 .../for-await}/output.json | 0 .../inside-arrow/input.js | 0 .../inside-arrow/output.json | 0 .../inside-block/input.js | 0 .../inside-block/output.json | 0 .../inside-class-property/input.js | 0 .../inside-class-property/output.json | 2 +- .../inside-function/input.js | 0 .../inside-function/output.json | 0 .../inside-property-key/input.js | 0 .../inside-property-key/output.json | 0 .../top-level-await-module/options.json | 3 + .../top-level}/input.js | 0 .../top-level}/output.json | 0 .../for-await}/input.js | 0 .../for-await/options.json | 3 + .../top-level-await-script/options.json | 3 + .../top-level}/input.js | 0 .../top-level}/output.json | 0 .../input.js | 0 .../options.json | 3 + .../output.json | 0 .../ambiguous-modulo}/input.js | 0 .../ambiguous-modulo}/output.json | 0 .../ambiguous-script}/input.js | 0 .../ambiguous-script}/output.json | 0 .../ambiguous-v8intrinsinc}/input.js | 0 .../ambiguous-v8intrinsinc/options.json | 3 + .../ambiguous-v8intrinsinc}/output.json | 0 .../module}/input.js | 0 .../module}/output.json | 0 .../top-level-await-unambiguous}/options.json | 1 - .../invalid-await/output.json | 2 +- .../options.json | 3 +- .../output.json | 55 ------------------- .../options.json | 4 -- .../export-default/options.json | 4 -- .../for-await-module/options.json | 4 -- .../for-await-script/options.json | 5 -- .../top-level-await/inside-arrow/options.json | 6 -- .../top-level-await/inside-block/options.json | 4 -- .../inside-class-property/options.json | 4 -- .../inside-function/options.json | 6 -- .../inside-property-key/options.json | 4 -- .../top-level-module/options.json | 4 -- .../top-level-script/options.json | 4 -- .../options.json | 5 -- .../unambiguous-ambiguous-script/options.json | 4 -- .../options.json | 4 -- .../unambiguous-module/options.json | 4 -- .../top-level-await/supported/input.mjs | 1 - .../top-level-await/supported/options.json | 9 --- .../top-level-await/supported/output.mjs | 1 - .../top-level-await/unsupported/input.mjs | 1 - .../top-level-await/unsupported/options.json | 10 ---- .../babel-preset-env/test/top-level-await.js | 42 ++++++++++++++ scripts/parser-tests/flow/allowlist.txt | 15 +++++ scripts/parser-tests/test262/index.js | 2 +- scripts/parser-tests/typescript/allowlist.txt | 2 + 89 files changed, 101 insertions(+), 224 deletions(-) rename packages/babel-parser/test/expressions/{experimental => es2022}/top-level-await/module/input.js (100%) rename packages/babel-parser/test/expressions/{experimental => es2022}/top-level-await/module/options.json (100%) rename packages/babel-parser/test/expressions/{experimental => es2022}/top-level-await/module/output.json (100%) rename packages/babel-parser/test/expressions/{experimental => es2022}/top-level-await/script/input.js (100%) rename packages/babel-parser/test/expressions/{experimental => es2022}/top-level-await/script/options.json (100%) rename packages/babel-parser/test/expressions/{experimental => es2022}/top-level-await/script/output.json (100%) rename packages/babel-parser/test/expressions/{experimental => es2022}/top-level-await/unambiguous/input.js (100%) rename packages/babel-parser/test/expressions/{experimental => es2022}/top-level-await/unambiguous/options.json (100%) rename packages/babel-parser/test/expressions/{experimental => es2022}/top-level-await/unambiguous/output.json (100%) delete mode 100644 packages/babel-parser/test/expressions/experimental/top-level-await/options.json delete mode 100644 packages/babel-parser/test/fixtures/es2015/uncategorised/357/output.json rename packages/babel-parser/test/fixtures/{experimental/top-level-await => es2022/top-level-await-module}/export-default/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await => es2022/top-level-await-module}/export-default/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await/for-await-module => es2022/top-level-await-module/for-await}/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await/for-await-module => es2022/top-level-await-module/for-await}/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await => es2022/top-level-await-module}/inside-arrow/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await => es2022/top-level-await-module}/inside-arrow/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await => es2022/top-level-await-module}/inside-block/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await => es2022/top-level-await-module}/inside-block/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await => es2022/top-level-await-module}/inside-class-property/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await => es2022/top-level-await-module}/inside-class-property/output.json (98%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await => es2022/top-level-await-module}/inside-function/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await => es2022/top-level-await-module}/inside-function/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await => es2022/top-level-await-module}/inside-property-key/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await => es2022/top-level-await-module}/inside-property-key/output.json (100%) create mode 100644 packages/babel-parser/test/fixtures/es2022/top-level-await-module/options.json rename packages/babel-parser/test/fixtures/{experimental/top-level-await/top-level-module => es2022/top-level-await-module/top-level}/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await/top-level-module => es2022/top-level-await-module/top-level}/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await/for-await-script => es2022/top-level-await-script/for-await}/input.js (100%) create mode 100644 packages/babel-parser/test/fixtures/es2022/top-level-await-script/for-await/options.json create mode 100644 packages/babel-parser/test/fixtures/es2022/top-level-await-script/options.json rename packages/babel-parser/test/fixtures/{experimental/top-level-await/top-level-script => es2022/top-level-await-script/top-level}/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await/top-level-script => es2022/top-level-await-script/top-level}/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await/unambiguous-ambiguous-allowAwaitOutsideFunction => es2022/top-level-await-unambiguous/ambiguous-allowAwaitOutsideFunction}/input.js (100%) create mode 100644 packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-allowAwaitOutsideFunction/options.json rename packages/babel-parser/test/fixtures/{experimental/top-level-await/unambiguous-ambiguous-allowAwaitOutsideFunction => es2022/top-level-await-unambiguous/ambiguous-allowAwaitOutsideFunction}/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await/unambiguous-ambiguous-modulo => es2022/top-level-await-unambiguous/ambiguous-modulo}/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await/unambiguous-ambiguous-modulo => es2022/top-level-await-unambiguous/ambiguous-modulo}/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await/unambiguous-ambiguous-script => es2022/top-level-await-unambiguous/ambiguous-script}/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await/unambiguous-ambiguous-script => es2022/top-level-await-unambiguous/ambiguous-script}/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await/unambiguous-ambiguous-v8intrinsinc => es2022/top-level-await-unambiguous/ambiguous-v8intrinsinc}/input.js (100%) create mode 100644 packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-v8intrinsinc/options.json rename packages/babel-parser/test/fixtures/{experimental/top-level-await/unambiguous-ambiguous-v8intrinsinc => es2022/top-level-await-unambiguous/ambiguous-v8intrinsinc}/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await/unambiguous-module => es2022/top-level-await-unambiguous/module}/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await/unambiguous-module => es2022/top-level-await-unambiguous/module}/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental/top-level-await/unambiguous-ambiguous-modulo => es2022/top-level-await-unambiguous}/options.json (51%) delete mode 100644 packages/babel-parser/test/fixtures/experimental/module-blocks/invalid-await-label-in-module-blocks/output.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/module-blocks/valid-top-level-await-in-module-blocks/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/top-level-await/export-default/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/top-level-await/for-await-module/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/top-level-await/for-await-script/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/top-level-await/inside-arrow/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/top-level-await/inside-block/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/top-level-await/inside-class-property/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/top-level-await/inside-function/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/top-level-await/inside-property-key/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-module/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-script/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-allowAwaitOutsideFunction/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-script/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-v8intrinsinc/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-module/options.json delete mode 100644 packages/babel-preset-env/test/fixtures/top-level-await/supported/input.mjs delete mode 100644 packages/babel-preset-env/test/fixtures/top-level-await/supported/options.json delete mode 100644 packages/babel-preset-env/test/fixtures/top-level-await/supported/output.mjs delete mode 100644 packages/babel-preset-env/test/fixtures/top-level-await/unsupported/input.mjs delete mode 100644 packages/babel-preset-env/test/fixtures/top-level-await/unsupported/options.json create mode 100644 packages/babel-preset-env/test/top-level-await.js diff --git a/Makefile b/Makefile index 096895fe6d..ea8ccd1f54 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ -FLOW_COMMIT = a1f9a4c709dcebb27a5084acf47755fbae699c25 +FLOW_COMMIT = 92bbb5e9dacb8185aa73ea343954d0434b42c40b TEST262_COMMIT = f9efc461420e3729a8fe24ac2472fad9d6357a70 -TYPESCRIPT_COMMIT = 3de706a8525c2ded782fc032fa4afe2e485100d3 +TYPESCRIPT_COMMIT = e34b2adcaed2ff12761f7cbf87a299f5082c4e63 # Fix color output until TravisCI fixes https://github.com/travis-ci/travis-ci/issues/7967 export FORCE_COLOR = true @@ -134,7 +134,7 @@ test-ci-coverage: bootstrap-flow: rm -rf build/flow mkdir -p build - git clone --single-branch --shallow-since=2018-11-01 https://github.com/facebook/flow.git build/flow + git clone --single-branch --shallow-since=2021-05-01 https://github.com/facebook/flow.git build/flow cd build/flow && git checkout -q $(FLOW_COMMIT) test-flow: @@ -146,7 +146,7 @@ test-flow-update-allowlist: bootstrap-typescript: rm -rf ./build/typescript mkdir -p ./build - git clone --single-branch --shallow-since=2019-09-01 https://github.com/microsoft/TypeScript.git ./build/typescript + git clone --single-branch --shallow-since=2021-05-01 https://github.com/microsoft/TypeScript.git ./build/typescript cd build/typescript && git checkout -q $(TYPESCRIPT_COMMIT) test-typescript: @@ -158,7 +158,7 @@ test-typescript-update-allowlist: bootstrap-test262: rm -rf build/test262 mkdir -p build - git clone --single-branch --shallow-since=2019-12-01 https://github.com/tc39/test262.git build/test262 + git clone --single-branch --shallow-since=2021-05-01 https://github.com/tc39/test262.git build/test262 cd build/test262 && git checkout -q $(TEST262_COMMIT) test-test262: diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index d234a72e21..b669d0e5b7 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -39,14 +39,12 @@ import { SCOPE_DIRECT_SUPER, SCOPE_FUNCTION, SCOPE_SUPER, - SCOPE_PROGRAM, } from "../util/scopeflags"; import { ExpressionErrors } from "./util"; import { PARAM_AWAIT, PARAM_IN, PARAM_RETURN, - PARAM, functionFlags, } from "../util/production-parameter"; import { @@ -152,12 +150,7 @@ export default class ExpressionParser extends LValParser { // Convenience method to parse an Expression only getExpression(): N.Expression & N.ParserOutput { - let paramFlags = PARAM; - if (this.hasPlugin("topLevelAwait") && this.inModule) { - paramFlags |= PARAM_AWAIT; - } - this.scope.enter(SCOPE_PROGRAM); - this.prodParam.enter(paramFlags); + this.enterInitialScopes(); this.nextToken(); const expr = this.parseExpression(); if (!this.match(tt.eof)) { @@ -615,12 +608,7 @@ export default class ExpressionParser extends LValParser { ? this.state.type.startsExpr : this.state.type.startsExpr && !this.match(tt.modulo); if (startsExpr && !this.isAmbiguousAwait()) { - this.raiseOverwrite( - startPos, - this.hasPlugin("topLevelAwait") - ? Errors.AwaitNotInAsyncContext - : Errors.AwaitNotInAsyncFunction, - ); + this.raiseOverwrite(startPos, Errors.AwaitNotInAsyncContext); return this.parseAwait(startPos, startLoc); } } diff --git a/packages/babel-parser/src/parser/util.js b/packages/babel-parser/src/parser/util.js index d20c9c1bf3..648a5743c5 100644 --- a/packages/babel-parser/src/parser/util.js +++ b/packages/babel-parser/src/parser/util.js @@ -395,7 +395,7 @@ export default class UtilParser extends Tokenizer { enterInitialScopes() { let paramFlags = PARAM; - if (this.hasPlugin("topLevelAwait") && this.inModule) { + if (this.inModule) { paramFlags |= PARAM_AWAIT; } this.scope.enter(SCOPE_PROGRAM); diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/module/input.js b/packages/babel-parser/test/expressions/es2022/top-level-await/module/input.js similarity index 100% rename from packages/babel-parser/test/expressions/experimental/top-level-await/module/input.js rename to packages/babel-parser/test/expressions/es2022/top-level-await/module/input.js diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/module/options.json b/packages/babel-parser/test/expressions/es2022/top-level-await/module/options.json similarity index 100% rename from packages/babel-parser/test/expressions/experimental/top-level-await/module/options.json rename to packages/babel-parser/test/expressions/es2022/top-level-await/module/options.json diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/module/output.json b/packages/babel-parser/test/expressions/es2022/top-level-await/module/output.json similarity index 100% rename from packages/babel-parser/test/expressions/experimental/top-level-await/module/output.json rename to packages/babel-parser/test/expressions/es2022/top-level-await/module/output.json diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/script/input.js b/packages/babel-parser/test/expressions/es2022/top-level-await/script/input.js similarity index 100% rename from packages/babel-parser/test/expressions/experimental/top-level-await/script/input.js rename to packages/babel-parser/test/expressions/es2022/top-level-await/script/input.js diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/script/options.json b/packages/babel-parser/test/expressions/es2022/top-level-await/script/options.json similarity index 100% rename from packages/babel-parser/test/expressions/experimental/top-level-await/script/options.json rename to packages/babel-parser/test/expressions/es2022/top-level-await/script/options.json diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/script/output.json b/packages/babel-parser/test/expressions/es2022/top-level-await/script/output.json similarity index 100% rename from packages/babel-parser/test/expressions/experimental/top-level-await/script/output.json rename to packages/babel-parser/test/expressions/es2022/top-level-await/script/output.json diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/input.js b/packages/babel-parser/test/expressions/es2022/top-level-await/unambiguous/input.js similarity index 100% rename from packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/input.js rename to packages/babel-parser/test/expressions/es2022/top-level-await/unambiguous/input.js diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/options.json b/packages/babel-parser/test/expressions/es2022/top-level-await/unambiguous/options.json similarity index 100% rename from packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/options.json rename to packages/babel-parser/test/expressions/es2022/top-level-await/unambiguous/options.json diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/output.json b/packages/babel-parser/test/expressions/es2022/top-level-await/unambiguous/output.json similarity index 100% rename from packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/output.json rename to packages/babel-parser/test/expressions/es2022/top-level-await/unambiguous/output.json diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/options.json b/packages/babel-parser/test/expressions/experimental/top-level-await/options.json deleted file mode 100644 index 016d522a61..0000000000 --- a/packages/babel-parser/test/expressions/experimental/top-level-await/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["topLevelAwait"] -} diff --git a/packages/babel-parser/test/fixtures/es2015/uncategorised/357/options.json b/packages/babel-parser/test/fixtures/es2015/uncategorised/357/options.json index 2104ca4328..1ec3b6eb2e 100644 --- a/packages/babel-parser/test/fixtures/es2015/uncategorised/357/options.json +++ b/packages/babel-parser/test/fixtures/es2015/uncategorised/357/options.json @@ -1,3 +1,4 @@ { - "sourceType": "module" + "sourceType": "module", + "throws": "Unexpected token (1:6)" } diff --git a/packages/babel-parser/test/fixtures/es2015/uncategorised/357/output.json b/packages/babel-parser/test/fixtures/es2015/uncategorised/357/output.json deleted file mode 100644 index 1d06dc3c20..0000000000 --- a/packages/babel-parser/test/fixtures/es2015/uncategorised/357/output.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "type": "File", - "start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}}, - "errors": [ - "SyntaxError: Unexpected reserved word 'await'. (1:0)" - ], - "program": { - "type": "Program", - "start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}}, - "sourceType": "module", - "interpreter": null, - "body": [ - { - "type": "ExpressionStatement", - "start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}}, - "expression": { - "type": "AssignmentExpression", - "start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}, - "operator": "=", - "left": { - "type": "Identifier", - "start":0,"end":5,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":5},"identifierName":"await"}, - "name": "await" - }, - "right": { - "type": "CallExpression", - "start":8,"end":13,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":13}}, - "callee": { - "type": "Identifier", - "start":8,"end":11,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":11},"identifierName":"foo"}, - "name": "foo" - }, - "arguments": [] - } - } - } - ], - "directives": [] - } -} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2015/uncategorised/359/output.json b/packages/babel-parser/test/fixtures/es2015/uncategorised/359/output.json index dcc0372387..37427dd58a 100644 --- a/packages/babel-parser/test/fixtures/es2015/uncategorised/359/output.json +++ b/packages/babel-parser/test/fixtures/es2015/uncategorised/359/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, "errors": [ - "SyntaxError: Unexpected reserved word 'await'. (1:6)" + "SyntaxError: Can not use 'await' as identifier inside an async function. (1:6)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/es2015/uncategorised/361/output.json b/packages/babel-parser/test/fixtures/es2015/uncategorised/361/output.json index 38cb64a143..d37721dbb3 100644 --- a/packages/babel-parser/test/fixtures/es2015/uncategorised/361/output.json +++ b/packages/babel-parser/test/fixtures/es2015/uncategorised/361/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":24,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":24}}, "errors": [ - "SyntaxError: Unexpected reserved word 'await'. (1:8)" + "SyntaxError: Can not use 'await' as identifier inside an async function. (1:8)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/es2015/uncategorised/365/output.json b/packages/babel-parser/test/fixtures/es2015/uncategorised/365/output.json index 22732ae45a..3433ddb561 100644 --- a/packages/babel-parser/test/fixtures/es2015/uncategorised/365/output.json +++ b/packages/babel-parser/test/fixtures/es2015/uncategorised/365/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":19,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":19}}, "errors": [ - "SyntaxError: Unexpected reserved word 'await'. (1:9)" + "SyntaxError: Can not use 'await' as identifier inside an async function. (1:9)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/es2015/uncategorised/367/output.json b/packages/babel-parser/test/fixtures/es2015/uncategorised/367/output.json index 8395dc8c7d..4adcd4745b 100644 --- a/packages/babel-parser/test/fixtures/es2015/uncategorised/367/output.json +++ b/packages/babel-parser/test/fixtures/es2015/uncategorised/367/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}}, "errors": [ - "SyntaxError: Unexpected reserved word 'await'. (1:6)" + "SyntaxError: Can not use 'await' as identifier inside an async function. (1:6)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/9/output.json b/packages/babel-parser/test/fixtures/es2017/async-functions/9/output.json index f6547d7dd2..24494cd4b4 100644 --- a/packages/babel-parser/test/fixtures/es2017/async-functions/9/output.json +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/9/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":40,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":40}}, "errors": [ - "SyntaxError: 'await' is only allowed within async functions. (1:24)" + "SyntaxError: 'await' is only allowed within async functions and at the top levels of modules. (1:24)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/allow-await-outside-function-throw/output.json b/packages/babel-parser/test/fixtures/es2017/async-functions/allow-await-outside-function-throw/output.json index 53172c32fe..72045ba331 100644 --- a/packages/babel-parser/test/fixtures/es2017/async-functions/allow-await-outside-function-throw/output.json +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/allow-await-outside-function-throw/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":33,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, "errors": [ - "SyntaxError: 'await' is only allowed within async functions. (2:9)" + "SyntaxError: 'await' is only allowed within async functions and at the top levels of modules. (2:9)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/await-inside-arrow-expression-disallowed/output.json b/packages/babel-parser/test/fixtures/es2017/async-functions/await-inside-arrow-expression-disallowed/output.json index bef6713894..f73af39c47 100644 --- a/packages/babel-parser/test/fixtures/es2017/async-functions/await-inside-arrow-expression-disallowed/output.json +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/await-inside-arrow-expression-disallowed/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":17,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":17}}, "errors": [ - "SyntaxError: 'await' is only allowed within async functions. (1:8)" + "SyntaxError: 'await' is only allowed within async functions and at the top levels of modules. (1:8)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/await-inside-parameters-of-async-arrow-function/output.json b/packages/babel-parser/test/fixtures/es2017/async-functions/await-inside-parameters-of-async-arrow-function/output.json index c770316cbe..f0232fa2ae 100644 --- a/packages/babel-parser/test/fixtures/es2017/async-functions/await-inside-parameters-of-async-arrow-function/output.json +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/await-inside-parameters-of-async-arrow-function/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":26,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":26}}, "errors": [ - "SyntaxError: 'await' is only allowed within async functions. (1:11)", + "SyntaxError: 'await' is only allowed within async functions and at the top levels of modules. (1:11)", "SyntaxError: 'await' is not allowed in async function parameters. (1:11)" ], "program": { diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/await-inside-parameters-of-nested-function/output.json b/packages/babel-parser/test/fixtures/es2017/async-functions/await-inside-parameters-of-nested-function/output.json index 88e1bc9f54..4c5213e9f4 100644 --- a/packages/babel-parser/test/fixtures/es2017/async-functions/await-inside-parameters-of-nested-function/output.json +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/await-inside-parameters-of-nested-function/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":55,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, "errors": [ - "SyntaxError: 'await' is only allowed within async functions. (2:19)", + "SyntaxError: 'await' is only allowed within async functions and at the top levels of modules. (2:19)", "SyntaxError: 'await' is not allowed in async function parameters. (2:19)" ], "program": { diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-await-with-object-exp-in-function/output.json b/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-await-with-object-exp-in-function/output.json index cd729a260b..8c943c2905 100644 --- a/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-await-with-object-exp-in-function/output.json +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-await-with-object-exp-in-function/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":35,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, "errors": [ - "SyntaxError: 'await' is only allowed within async functions. (2:2)" + "SyntaxError: 'await' is only allowed within async functions and at the top levels of modules. (2:2)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-escape-export-dflt-async-function/output.json b/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-escape-export-dflt-async-function/output.json index 00903880bc..b4dc53e1ae 100644 --- a/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-escape-export-dflt-async-function/output.json +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-escape-export-dflt-async-function/output.json @@ -3,7 +3,7 @@ "start":0,"end":50,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":50}}, "errors": [ "SyntaxError: Missing semicolon. (1:25)", - "SyntaxError: 'await' is only allowed within async functions. (1:41)" + "SyntaxError: 'await' is only allowed within async functions and at the top levels of modules. (1:41)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-escape-sequence-arrow/output.json b/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-escape-sequence-arrow/output.json index 54158dd70d..f666e8769d 100644 --- a/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-escape-sequence-arrow/output.json +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-escape-sequence-arrow/output.json @@ -3,7 +3,7 @@ "start":0,"end":27,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":27}}, "errors": [ "SyntaxError: Missing semicolon. (1:10)", - "SyntaxError: 'await' is only allowed within async functions. (1:18)" + "SyntaxError: 'await' is only allowed within async functions and at the top levels of modules. (1:18)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/export-default/input.js b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/export-default/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/export-default/input.js rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/export-default/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/export-default/output.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/export-default/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/export-default/output.json rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/export-default/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/for-await-module/input.js b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/for-await/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/for-await-module/input.js rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/for-await/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/for-await-module/output.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/for-await/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/for-await-module/output.json rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/for-await/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-arrow/input.js b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-arrow/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/inside-arrow/input.js rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-arrow/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-arrow/output.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-arrow/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/inside-arrow/output.json rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-arrow/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-block/input.js b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-block/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/inside-block/input.js rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-block/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-block/output.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-block/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/inside-block/output.json rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-block/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-class-property/input.js b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-class-property/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/inside-class-property/input.js rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-class-property/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-class-property/output.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-class-property/output.json similarity index 98% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/inside-class-property/output.json rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-class-property/output.json index 1a605c1193..a188dbaf19 100644 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-class-property/output.json +++ b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-class-property/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":33,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, "errors": [ - "SyntaxError: 'await' is only allowed within async functions. (2:6)" + "SyntaxError: 'await' is only allowed within async functions and at the top levels of modules. (2:6)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-function/input.js b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-function/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/inside-function/input.js rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-function/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-function/output.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-function/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/inside-function/output.json rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-function/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-property-key/input.js b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-property-key/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/inside-property-key/input.js rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-property-key/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-property-key/output.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-property-key/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/inside-property-key/output.json rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/inside-property-key/output.json diff --git a/packages/babel-parser/test/fixtures/es2022/top-level-await-module/options.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/options.json new file mode 100644 index 0000000000..2104ca4328 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/options.json @@ -0,0 +1,3 @@ +{ + "sourceType": "module" +} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-module/input.js b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/top-level/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-module/input.js rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/top-level/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-module/output.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-module/top-level/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-module/output.json rename to packages/babel-parser/test/fixtures/es2022/top-level-await-module/top-level/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/for-await-script/input.js b/packages/babel-parser/test/fixtures/es2022/top-level-await-script/for-await/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/for-await-script/input.js rename to packages/babel-parser/test/fixtures/es2022/top-level-await-script/for-await/input.js diff --git a/packages/babel-parser/test/fixtures/es2022/top-level-await-script/for-await/options.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-script/for-await/options.json new file mode 100644 index 0000000000..40babbccd7 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2022/top-level-await-script/for-await/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Unexpected token, expected \"(\" (1:4)" +} diff --git a/packages/babel-parser/test/fixtures/es2022/top-level-await-script/options.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-script/options.json new file mode 100644 index 0000000000..b412ffe671 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2022/top-level-await-script/options.json @@ -0,0 +1,3 @@ +{ + "sourceType": "script" +} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-script/input.js b/packages/babel-parser/test/fixtures/es2022/top-level-await-script/top-level/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-script/input.js rename to packages/babel-parser/test/fixtures/es2022/top-level-await-script/top-level/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-script/output.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-script/top-level/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-script/output.json rename to packages/babel-parser/test/fixtures/es2022/top-level-await-script/top-level/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-allowAwaitOutsideFunction/input.js b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-allowAwaitOutsideFunction/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-allowAwaitOutsideFunction/input.js rename to packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-allowAwaitOutsideFunction/input.js diff --git a/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-allowAwaitOutsideFunction/options.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-allowAwaitOutsideFunction/options.json new file mode 100644 index 0000000000..40360d582b --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-allowAwaitOutsideFunction/options.json @@ -0,0 +1,3 @@ +{ + "allowAwaitOutsideFunction": true +} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-allowAwaitOutsideFunction/output.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-allowAwaitOutsideFunction/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-allowAwaitOutsideFunction/output.json rename to packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-allowAwaitOutsideFunction/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-modulo/input.js b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-modulo/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-modulo/input.js rename to packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-modulo/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-modulo/output.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-modulo/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-modulo/output.json rename to packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-modulo/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-script/input.js b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-script/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-script/input.js rename to packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-script/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-script/output.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-script/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-script/output.json rename to packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-script/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-v8intrinsinc/input.js b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-v8intrinsinc/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-v8intrinsinc/input.js rename to packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-v8intrinsinc/input.js diff --git a/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-v8intrinsinc/options.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-v8intrinsinc/options.json new file mode 100644 index 0000000000..609458c2c6 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-v8intrinsinc/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["v8intrinsic"] +} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-v8intrinsinc/output.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-v8intrinsinc/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-v8intrinsinc/output.json rename to packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/ambiguous-v8intrinsinc/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-module/input.js b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/module/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-module/input.js rename to packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/module/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-module/output.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/module/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-module/output.json rename to packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/module/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-modulo/options.json b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/options.json similarity index 51% rename from packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-modulo/options.json rename to packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/options.json index 2503b82adf..e69c4497f5 100644 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-modulo/options.json +++ b/packages/babel-parser/test/fixtures/es2022/top-level-await-unambiguous/options.json @@ -1,4 +1,3 @@ { - "plugins": ["topLevelAwait"], "sourceType": "unambiguous" } diff --git a/packages/babel-parser/test/fixtures/experimental/class-static-block/invalid-await/output.json b/packages/babel-parser/test/fixtures/experimental/class-static-block/invalid-await/output.json index d0835ad4eb..da10d7faad 100644 --- a/packages/babel-parser/test/fixtures/experimental/class-static-block/invalid-await/output.json +++ b/packages/babel-parser/test/fixtures/experimental/class-static-block/invalid-await/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":95,"loc":{"start":{"line":1,"column":0},"end":{"line":8,"column":1}}, "errors": [ - "SyntaxError: 'await' is only allowed within async functions. (5:6)" + "SyntaxError: 'await' is only allowed within async functions and at the top levels of modules. (5:6)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/experimental/module-blocks/invalid-await-label-in-module-blocks/options.json b/packages/babel-parser/test/fixtures/experimental/module-blocks/invalid-await-label-in-module-blocks/options.json index 3282864d94..d165a2a7b1 100644 --- a/packages/babel-parser/test/fixtures/experimental/module-blocks/invalid-await-label-in-module-blocks/options.json +++ b/packages/babel-parser/test/fixtures/experimental/module-blocks/invalid-await-label-in-module-blocks/options.json @@ -1,4 +1,5 @@ { "sourceType": "script", - "plugins": ["moduleBlocks"] + "plugins": ["moduleBlocks"], + "throws": "Unexpected token (1:14)" } diff --git a/packages/babel-parser/test/fixtures/experimental/module-blocks/invalid-await-label-in-module-blocks/output.json b/packages/babel-parser/test/fixtures/experimental/module-blocks/invalid-await-label-in-module-blocks/output.json deleted file mode 100644 index d6e97dfea9..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/module-blocks/invalid-await-label-in-module-blocks/output.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "type": "File", - "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, - "errors": [ - "SyntaxError: Unexpected reserved word 'await'. (1:9)" - ], - "program": { - "type": "Program", - "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, - "sourceType": "script", - "interpreter": null, - "body": [ - { - "type": "ExpressionStatement", - "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, - "expression": { - "type": "ModuleExpression", - "start":0,"end":19,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":19}}, - "body": { - "type": "Program", - "start":9,"end":19,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":19}}, - "sourceType": "module", - "interpreter": null, - "body": [ - { - "type": "LabeledStatement", - "start":9,"end":17,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":17}}, - "body": { - "type": "ExpressionStatement", - "start":16,"end":17,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":17}}, - "expression": { - "type": "NumericLiteral", - "start":16,"end":17,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":17}}, - "extra": { - "rawValue": 3, - "raw": "3" - }, - "value": 3 - } - }, - "label": { - "type": "Identifier", - "start":9,"end":14,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":14},"identifierName":"await"}, - "name": "await" - } - } - ], - "directives": [] - } - } - } - ], - "directives": [] - } -} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/module-blocks/valid-top-level-await-in-module-blocks/options.json b/packages/babel-parser/test/fixtures/experimental/module-blocks/valid-top-level-await-in-module-blocks/options.json deleted file mode 100644 index 92bd836fbb..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/module-blocks/valid-top-level-await-in-module-blocks/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "sourceType": "module", - "plugins": ["moduleBlocks", "topLevelAwait"] -} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/export-default/options.json b/packages/babel-parser/test/fixtures/experimental/top-level-await/export-default/options.json deleted file mode 100644 index aadc3411ae..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/export-default/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["topLevelAwait"], - "sourceType": "module" -} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/for-await-module/options.json b/packages/babel-parser/test/fixtures/experimental/top-level-await/for-await-module/options.json deleted file mode 100644 index aadc3411ae..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/for-await-module/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["topLevelAwait"], - "sourceType": "module" -} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/for-await-script/options.json b/packages/babel-parser/test/fixtures/experimental/top-level-await/for-await-script/options.json deleted file mode 100644 index ad8783d13f..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/for-await-script/options.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "plugins": ["topLevelAwait"], - "sourceType": "script", - "throws": "Unexpected token, expected \"(\" (1:4)" -} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-arrow/options.json b/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-arrow/options.json deleted file mode 100644 index a2c33141ed..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-arrow/options.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "plugins": [ - "topLevelAwait" - ], - "sourceType": "module" -} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-block/options.json b/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-block/options.json deleted file mode 100644 index aadc3411ae..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-block/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["topLevelAwait"], - "sourceType": "module" -} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-class-property/options.json b/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-class-property/options.json deleted file mode 100644 index 3d99f51a3d..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-class-property/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["topLevelAwati"], - "sourceType": "module" -} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-function/options.json b/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-function/options.json deleted file mode 100644 index ee3e94739c..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-function/options.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "plugins": [ - "topLevelAwait" - ], - "sourceType": "module" - } diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-property-key/options.json b/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-property-key/options.json deleted file mode 100644 index aadc3411ae..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/inside-property-key/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["topLevelAwait"], - "sourceType": "module" -} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-module/options.json b/packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-module/options.json deleted file mode 100644 index aadc3411ae..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-module/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["topLevelAwait"], - "sourceType": "module" -} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-script/options.json b/packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-script/options.json deleted file mode 100644 index fc666b8d2c..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/top-level-script/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["topLevelAwait"], - "sourceType": "script" -} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-allowAwaitOutsideFunction/options.json b/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-allowAwaitOutsideFunction/options.json deleted file mode 100644 index aceca10c3d..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-allowAwaitOutsideFunction/options.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "plugins": ["topLevelAwait"], - "sourceType": "unambiguous", - "allowAwaitOutsideFunction": true -} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-script/options.json b/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-script/options.json deleted file mode 100644 index 2503b82adf..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-script/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["topLevelAwait"], - "sourceType": "unambiguous" -} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-v8intrinsinc/options.json b/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-v8intrinsinc/options.json deleted file mode 100644 index 6732f5f2f0..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-ambiguous-v8intrinsinc/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["topLevelAwait", "v8intrinsic"], - "sourceType": "unambiguous" -} diff --git a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-module/options.json b/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-module/options.json deleted file mode 100644 index 2503b82adf..0000000000 --- a/packages/babel-parser/test/fixtures/experimental/top-level-await/unambiguous-module/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["topLevelAwait"], - "sourceType": "unambiguous" -} diff --git a/packages/babel-preset-env/test/fixtures/top-level-await/supported/input.mjs b/packages/babel-preset-env/test/fixtures/top-level-await/supported/input.mjs deleted file mode 100644 index d8ddd6c0ad..0000000000 --- a/packages/babel-preset-env/test/fixtures/top-level-await/supported/input.mjs +++ /dev/null @@ -1 +0,0 @@ -await 0; \ No newline at end of file diff --git a/packages/babel-preset-env/test/fixtures/top-level-await/supported/options.json b/packages/babel-preset-env/test/fixtures/top-level-await/supported/options.json deleted file mode 100644 index 2bd0961944..0000000000 --- a/packages/babel-preset-env/test/fixtures/top-level-await/supported/options.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "caller": { - "name": "test-fixture", - "supportsStaticESM": true, - "supportsDynamicImport": true, - "supportsTopLevelAwait": true - }, - "presets": ["env"] -} diff --git a/packages/babel-preset-env/test/fixtures/top-level-await/supported/output.mjs b/packages/babel-preset-env/test/fixtures/top-level-await/supported/output.mjs deleted file mode 100644 index 0a5e432fc9..0000000000 --- a/packages/babel-preset-env/test/fixtures/top-level-await/supported/output.mjs +++ /dev/null @@ -1 +0,0 @@ -await 0; diff --git a/packages/babel-preset-env/test/fixtures/top-level-await/unsupported/input.mjs b/packages/babel-preset-env/test/fixtures/top-level-await/unsupported/input.mjs deleted file mode 100644 index 0a5e432fc9..0000000000 --- a/packages/babel-preset-env/test/fixtures/top-level-await/unsupported/input.mjs +++ /dev/null @@ -1 +0,0 @@ -await 0; diff --git a/packages/babel-preset-env/test/fixtures/top-level-await/unsupported/options.json b/packages/babel-preset-env/test/fixtures/top-level-await/unsupported/options.json deleted file mode 100644 index 20761c305c..0000000000 --- a/packages/babel-preset-env/test/fixtures/top-level-await/unsupported/options.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "caller": { - "name": "test-fixture", - "supportsStaticESM": true, - "supportsDynamicImport": true, - "supportsTopLevelAwait": false - }, - "presets": ["env"], - "throws": "Unexpected reserved word 'await'. (1:0)" -} diff --git a/packages/babel-preset-env/test/top-level-await.js b/packages/babel-preset-env/test/top-level-await.js new file mode 100644 index 0000000000..65c222af71 --- /dev/null +++ b/packages/babel-preset-env/test/top-level-await.js @@ -0,0 +1,42 @@ +import env from ".."; +import * as babel from "@babel/core"; + +describe("supportsTopLevelAwait enables the parser plugin for old parser versions", () => { + function extractParserOptions(api, { ref }) { + return { + manipulateOptions(opts, parserOpts) { + ref.parserOpts = parserOpts; + }, + visitor: {}, + }; + } + + it("supported", () => { + const ref = {}; + babel.transformSync("", { + configFile: false, + presets: [env], + plugins: [[extractParserOptions, { ref }]], + caller: { + name: "test", + supportsTopLevelAwait: true, + }, + }); + + expect(ref.parserOpts.plugins).toContain("topLevelAwait"); + }); + + it("unsupported", () => { + const ref = {}; + babel.transformSync("", { + configFile: false, + presets: [env], + plugins: [[extractParserOptions, { ref }]], + caller: { + name: "test", + }, + }); + + expect(ref.parserOpts.plugins).not.toContain("topLevelAwait"); + }); +}); diff --git a/scripts/parser-tests/flow/allowlist.txt b/scripts/parser-tests/flow/allowlist.txt index 0056daf5f0..bfab48c5b1 100644 --- a/scripts/parser-tests/flow/allowlist.txt +++ b/scripts/parser-tests/flow/allowlist.txt @@ -5,6 +5,7 @@ JSX/invalid_unpaired_rcurly.js JSX_invalid/migrated_0000.js arrow_function/object_return_type.js arrow_function_invalid/migrated_0002.js +async_arrow_functions/with_type_parameters_types_disabled.js async_await/migrated_0020.js async_await/migrated_0024.js async_await/migrated_0027.js @@ -14,9 +15,23 @@ class_properties/migrated_0003.js class_properties/migrated_0008.js class_properties/migrated_0021.js class_properties/migrated_0026.js +comment_interning/class_method.js +comment_interning/class_property.js +comment_interning/declare_export_declaration.js +comment_interning/declare_interface.js +comment_interning/declare_type_alias.js +comment_interning/decorator.js +comment_interning/function_declaration.js +comment_interning/import.js +comment_interning/interface.js +comment_interning/object_type.js +comment_interning/remove_type_trailing_comments.js +comment_interning/super.js +comment_interning/type_alias.js decorators/migrated_0003.js export_import_reserved_words/migrated_0003.js export_statements/export_trailing_comma.js +for_await_loops/migrated_0000.js nullish_coalescing/missing-plugin.js optional_chaining/missing-plugin.js types/member/reserved_words.js diff --git a/scripts/parser-tests/test262/index.js b/scripts/parser-tests/test262/index.js index 0da63530ff..7138a4f8e1 100644 --- a/scripts/parser-tests/test262/index.js +++ b/scripts/parser-tests/test262/index.js @@ -135,6 +135,7 @@ const ignoredFeatures = [ "Symbol.unscopables", "tail-call-optimization", "template", + "top-level-await", "TypedArray", "TypedArray.prototype.at", "TypedArray.prototype.item", @@ -153,7 +154,6 @@ const ignoredTests = ["built-ins/RegExp/", "language/literals/regexp/"]; const featuresToPlugins = { "class-static-block": "classStaticBlock", - "top-level-await": "topLevelAwait", "import-assertions": "importAssertions", }; diff --git a/scripts/parser-tests/typescript/allowlist.txt b/scripts/parser-tests/typescript/allowlist.txt index c6b12a7180..6b748c8442 100644 --- a/scripts/parser-tests/typescript/allowlist.txt +++ b/scripts/parser-tests/typescript/allowlist.txt @@ -109,6 +109,7 @@ declarationEmitInterfaceWithNonEntityNameExpressionHeritage.ts declarationEmitMixinPrivateProtected.ts declarationEmitPrefersPathKindBasedOnBundling.ts declarationEmitPrefersPathKindBasedOnBundling2.ts +declarationEmitPrivatePromiseLikeInterface.ts declarationEmitPrivateSymbolCausesVarDeclarationEmit2.ts declarationEmitReadonlyComputedProperty.ts declarationEmitStringEnumUsedInNonlocalSpread.ts @@ -221,6 +222,7 @@ exportSpecifierAndLocalMemberDeclaration.ts exportStarFromEmptyModule.ts exportStarNotElided.ts expressionsForbiddenInParameterInitializers.ts +extendedUnicodePlaneIdentifiers.ts extendingClassFromAliasAndUsageInIndexer.ts extendsClauseAlreadySeen.ts extendsClauseAlreadySeen2.ts