diff --git a/packages/babel-parser/src/parse-error/standard-errors.ts b/packages/babel-parser/src/parse-error/standard-errors.ts index b68c923dbaad..64df29c7efb5 100644 --- a/packages/babel-parser/src/parse-error/standard-errors.ts +++ b/packages/babel-parser/src/parse-error/standard-errors.ts @@ -33,8 +33,6 @@ export default { "Can not use 'await' as identifier inside a static block.", AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.", - AwaitInUsingBinding: - "'await' is not allowed to be used as a name in 'using' declarations.", AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.", AwaitNotInAsyncFunction: "'await' is only allowed within async functions.", diff --git a/packages/babel-parser/src/parser/statement.ts b/packages/babel-parser/src/parser/statement.ts index 891d6bbe7312..bd023239ef5b 100644 --- a/packages/babel-parser/src/parser/statement.ts +++ b/packages/babel-parser/src/parser/statement.ts @@ -484,7 +484,7 @@ export default abstract class StatementParser extends ExpressionParser { return this.parseTryStatement(node as Undone); case tt._using: - // using [no LineTerminator here][lookahead != `await`] BindingList[+Using] + // using [no LineTerminator here] BindingList[+Using] if ( this.state.containsEsc || !this.hasInLineFollowingBindingIdentifier() @@ -1536,11 +1536,6 @@ export default abstract class StatementParser extends ExpressionParser { decl: Undone, kind: "var" | "let" | "const" | "using", ): void { - // Unlike "let" which must be handled in checkLVal, it suffices to check - // await here because `using` must not precede binding patterns. - if (kind === "using" && !this.inModule && this.match(tt._await)) { - this.raise(Errors.AwaitInUsingBinding, { at: this.state.startLoc }); - } const id = this.parseBindingAtom(); this.checkLVal(id, { in: { type: "VariableDeclarator" }, diff --git a/packages/babel-parser/test/fixtures/experimental/explicit-resource-management/invalid-using-binding-await-script/input.js b/packages/babel-parser/test/fixtures/experimental/explicit-resource-management/valid-using-binding-await-script/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/explicit-resource-management/invalid-using-binding-await-script/input.js rename to packages/babel-parser/test/fixtures/experimental/explicit-resource-management/valid-using-binding-await-script/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/explicit-resource-management/invalid-using-binding-await-script/options.json b/packages/babel-parser/test/fixtures/experimental/explicit-resource-management/valid-using-binding-await-script/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/explicit-resource-management/invalid-using-binding-await-script/options.json rename to packages/babel-parser/test/fixtures/experimental/explicit-resource-management/valid-using-binding-await-script/options.json diff --git a/packages/babel-parser/test/fixtures/experimental/explicit-resource-management/invalid-using-binding-await-script/output.json b/packages/babel-parser/test/fixtures/experimental/explicit-resource-management/valid-using-binding-await-script/output.json similarity index 94% rename from packages/babel-parser/test/fixtures/experimental/explicit-resource-management/invalid-using-binding-await-script/output.json rename to packages/babel-parser/test/fixtures/experimental/explicit-resource-management/valid-using-binding-await-script/output.json index 5f57e6c4814c..03ca142c58d0 100644 --- a/packages/babel-parser/test/fixtures/experimental/explicit-resource-management/invalid-using-binding-await-script/output.json +++ b/packages/babel-parser/test/fixtures/experimental/explicit-resource-management/valid-using-binding-await-script/output.json @@ -1,12 +1,6 @@ { "type": "File", "start":0,"end":113,"loc":{"start":{"line":1,"column":0,"index":0},"end":{"line":12,"column":1,"index":113}}, - "errors": [ - "SyntaxError: 'await' is not allowed to be used as a name in 'using' declarations. (2:8)", - "SyntaxError: 'await' is not allowed to be used as a name in 'using' declarations. (5:8)", - "SyntaxError: 'await' is not allowed to be used as a name in 'using' declarations. (8:11)", - "SyntaxError: 'await' is not allowed to be used as a name in 'using' declarations. (11:13)" - ], "program": { "type": "Program", "start":0,"end":113,"loc":{"start":{"line":1,"column":0,"index":0},"end":{"line":12,"column":1,"index":113}},