diff --git a/test/language/expressions/async-arrow-function/await-as-binding-identifier-escaped.js b/test/language/expressions/async-arrow-function/await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..46e22c18ad57bff4bf21c79d4fad7c8a87ecc2d3
--- /dev/null
+++ b/test/language/expressions/async-arrow-function/await-as-binding-identifier-escaped.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier-escaped.case
+// - src/async-functions/syntax/async-arrow.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async arrow function)
+esid: prod-AsyncArrowFunction
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Arrow Function Definitions
+
+    AsyncArrowFunction[In, Yield, Await]:
+      async [no LineTerminator here] AsyncArrowBindingIdentifier[?Yield] [no LineTerminator here] => AsyncConciseBody[?In]
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await] [no LineTerminator here] => AsyncConciseBody[?In]
+
+    AsyncConciseBody[In]:
+      { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async() => {
+  var \u0061wait;
+};
diff --git a/test/language/expressions/async-arrow-function/await-as-binding-identifier.js b/test/language/expressions/async-arrow-function/await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..22e12e6d9b2306af8759cef1cc9ced1e07d005af
--- /dev/null
+++ b/test/language/expressions/async-arrow-function/await-as-binding-identifier.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier.case
+// - src/async-functions/syntax/async-arrow.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async arrow function)
+esid: prod-AsyncArrowFunction
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Arrow Function Definitions
+
+    AsyncArrowFunction[In, Yield, Await]:
+      async [no LineTerminator here] AsyncArrowBindingIdentifier[?Yield] [no LineTerminator here] => AsyncConciseBody[?In]
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await] [no LineTerminator here] => AsyncConciseBody[?In]
+
+    AsyncConciseBody[In]:
+      { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async() => {
+  var await;
+};
diff --git a/test/language/expressions/async-arrow-function/await-as-identifier-reference-escaped.js b/test/language/expressions/async-arrow-function/await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..367aef8697cb5d46ed939fd779acd010de5bf4ed
--- /dev/null
+++ b/test/language/expressions/async-arrow-function/await-as-identifier-reference-escaped.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference-escaped.case
+// - src/async-functions/syntax/async-arrow.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async arrow function)
+esid: prod-AsyncArrowFunction
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Arrow Function Definitions
+
+    AsyncArrowFunction[In, Yield, Await]:
+      async [no LineTerminator here] AsyncArrowBindingIdentifier[?Yield] [no LineTerminator here] => AsyncConciseBody[?In]
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await] [no LineTerminator here] => AsyncConciseBody[?In]
+
+    AsyncConciseBody[In]:
+      { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async() => {
+  void \u0061wait;
+};
diff --git a/test/language/expressions/async-arrow-function/await-as-identifier-reference.js b/test/language/expressions/async-arrow-function/await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..8fd7b117904045e86ba0ed0bcd9a6812454a4ced
--- /dev/null
+++ b/test/language/expressions/async-arrow-function/await-as-identifier-reference.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference.case
+// - src/async-functions/syntax/async-arrow.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async arrow function)
+esid: prod-AsyncArrowFunction
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Arrow Function Definitions
+
+    AsyncArrowFunction[In, Yield, Await]:
+      async [no LineTerminator here] AsyncArrowBindingIdentifier[?Yield] [no LineTerminator here] => AsyncConciseBody[?In]
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await] [no LineTerminator here] => AsyncConciseBody[?In]
+
+    AsyncConciseBody[In]:
+      { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async() => {
+  void await;
+};
diff --git a/test/language/expressions/async-arrow-function/await-as-label-identifier-escaped.js b/test/language/expressions/async-arrow-function/await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..d7388ccb7136579fb14cc8233f54afb712f1c021
--- /dev/null
+++ b/test/language/expressions/async-arrow-function/await-as-label-identifier-escaped.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier-escaped.case
+// - src/async-functions/syntax/async-arrow.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async arrow function)
+esid: prod-AsyncArrowFunction
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Arrow Function Definitions
+
+    AsyncArrowFunction[In, Yield, Await]:
+      async [no LineTerminator here] AsyncArrowBindingIdentifier[?Yield] [no LineTerminator here] => AsyncConciseBody[?In]
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await] [no LineTerminator here] => AsyncConciseBody[?In]
+
+    AsyncConciseBody[In]:
+      { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async() => {
+  \u0061wait: ;
+};
diff --git a/test/language/expressions/async-arrow-function/await-as-label-identifier.js b/test/language/expressions/async-arrow-function/await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..2e5179d101960b2820d34e9edc5d825999633941
--- /dev/null
+++ b/test/language/expressions/async-arrow-function/await-as-label-identifier.js
@@ -0,0 +1,33 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier.case
+// - src/async-functions/syntax/async-arrow.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async arrow function)
+esid: prod-AsyncArrowFunction
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Arrow Function Definitions
+
+    AsyncArrowFunction[In, Yield, Await]:
+      async [no LineTerminator here] AsyncArrowBindingIdentifier[?Yield] [no LineTerminator here] => AsyncConciseBody[?In]
+      CoverCallExpressionAndAsyncArrowHead[?Yield, ?Await] [no LineTerminator here] => AsyncConciseBody[?In]
+
+    AsyncConciseBody[In]:
+      { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async() => {
+  await: ;
+};
diff --git a/test/language/expressions/async-function/await-as-binding-identifier-escaped.js b/test/language/expressions/async-function/await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..0fc65cad79521819ada5bd29b5b1db7993073842
--- /dev/null
+++ b/test/language/expressions/async-function/await-as-binding-identifier-escaped.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier-escaped.case
+// - src/async-functions/syntax/async-expression.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Unnamed async function expression)
+esid: prod-AsyncFunctionExpression
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionExpression :
+      async [no LineTerminator here] function ( FormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var fn = async function () {
+  var \u0061wait;
+};
diff --git a/test/language/expressions/async-function/await-as-binding-identifier.js b/test/language/expressions/async-function/await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..021b32daadabd82ac5bbad091d2f2d3153797544
--- /dev/null
+++ b/test/language/expressions/async-function/await-as-binding-identifier.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier.case
+// - src/async-functions/syntax/async-expression.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Unnamed async function expression)
+esid: prod-AsyncFunctionExpression
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionExpression :
+      async [no LineTerminator here] function ( FormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var fn = async function () {
+  var await;
+};
diff --git a/test/language/expressions/async-function/await-as-identifier-reference-escaped.js b/test/language/expressions/async-function/await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..d704a19b31a9917a7e27ddec3227a863f2ab886e
--- /dev/null
+++ b/test/language/expressions/async-function/await-as-identifier-reference-escaped.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference-escaped.case
+// - src/async-functions/syntax/async-expression.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Unnamed async function expression)
+esid: prod-AsyncFunctionExpression
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionExpression :
+      async [no LineTerminator here] function ( FormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var fn = async function () {
+  void \u0061wait;
+};
diff --git a/test/language/expressions/async-function/await-as-identifier-reference.js b/test/language/expressions/async-function/await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..3d0b849cd9eeb2f866d5fd821a31643124cfb1d1
--- /dev/null
+++ b/test/language/expressions/async-function/await-as-identifier-reference.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference.case
+// - src/async-functions/syntax/async-expression.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Unnamed async function expression)
+esid: prod-AsyncFunctionExpression
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionExpression :
+      async [no LineTerminator here] function ( FormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var fn = async function () {
+  void await;
+};
diff --git a/test/language/expressions/async-function/await-as-label-identifier-escaped.js b/test/language/expressions/async-function/await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..a6bb9d96f9e1ded701dba63de05e6309428dab6b
--- /dev/null
+++ b/test/language/expressions/async-function/await-as-label-identifier-escaped.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier-escaped.case
+// - src/async-functions/syntax/async-expression.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Unnamed async function expression)
+esid: prod-AsyncFunctionExpression
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionExpression :
+      async [no LineTerminator here] function ( FormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var fn = async function () {
+  \u0061wait: ;
+};
diff --git a/test/language/expressions/async-function/await-as-label-identifier.js b/test/language/expressions/async-function/await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..30720d14264b5a9c4e7b582db19057fdbc0be911
--- /dev/null
+++ b/test/language/expressions/async-function/await-as-label-identifier.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier.case
+// - src/async-functions/syntax/async-expression.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Unnamed async function expression)
+esid: prod-AsyncFunctionExpression
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionExpression :
+      async [no LineTerminator here] function ( FormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var fn = async function () {
+  await: ;
+};
diff --git a/test/language/expressions/async-function/named-await-as-binding-identifier-escaped.js b/test/language/expressions/async-function/named-await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..e2fd3464517ea8b4cd5856cb570715bdeb5c29bc
--- /dev/null
+++ b/test/language/expressions/async-function/named-await-as-binding-identifier-escaped.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier-escaped.case
+// - src/async-functions/syntax/async-expression-named.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Named async function expression)
+esid: prod-AsyncFunctionExpression
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionExpression :
+      async [no LineTerminator here] function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var fn = async function fn() {
+  var \u0061wait;
+};
diff --git a/test/language/expressions/async-function/named-await-as-binding-identifier.js b/test/language/expressions/async-function/named-await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..1d8527dcfd758e759590a64edab7bc8bded52899
--- /dev/null
+++ b/test/language/expressions/async-function/named-await-as-binding-identifier.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier.case
+// - src/async-functions/syntax/async-expression-named.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Named async function expression)
+esid: prod-AsyncFunctionExpression
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionExpression :
+      async [no LineTerminator here] function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var fn = async function fn() {
+  var await;
+};
diff --git a/test/language/expressions/async-function/named-await-as-identifier-reference-escaped.js b/test/language/expressions/async-function/named-await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..85b01c453c378a5950b21e283b671e64c5c1fd5c
--- /dev/null
+++ b/test/language/expressions/async-function/named-await-as-identifier-reference-escaped.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference-escaped.case
+// - src/async-functions/syntax/async-expression-named.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Named async function expression)
+esid: prod-AsyncFunctionExpression
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionExpression :
+      async [no LineTerminator here] function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var fn = async function fn() {
+  void \u0061wait;
+};
diff --git a/test/language/expressions/async-function/named-await-as-identifier-reference.js b/test/language/expressions/async-function/named-await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..55d8dc8dd503ac07e94d4d9d26f75931a02691ef
--- /dev/null
+++ b/test/language/expressions/async-function/named-await-as-identifier-reference.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference.case
+// - src/async-functions/syntax/async-expression-named.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Named async function expression)
+esid: prod-AsyncFunctionExpression
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionExpression :
+      async [no LineTerminator here] function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var fn = async function fn() {
+  void await;
+};
diff --git a/test/language/expressions/async-function/named-await-as-label-identifier-escaped.js b/test/language/expressions/async-function/named-await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..c0d7cec452f5cf032837123f6e6641c81fa8f53c
--- /dev/null
+++ b/test/language/expressions/async-function/named-await-as-label-identifier-escaped.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier-escaped.case
+// - src/async-functions/syntax/async-expression-named.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Named async function expression)
+esid: prod-AsyncFunctionExpression
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionExpression :
+      async [no LineTerminator here] function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var fn = async function fn() {
+  \u0061wait: ;
+};
diff --git a/test/language/expressions/async-function/named-await-as-label-identifier.js b/test/language/expressions/async-function/named-await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..c4ec450524ad87ea8723618a5b07c064e1e7308c
--- /dev/null
+++ b/test/language/expressions/async-function/named-await-as-label-identifier.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier.case
+// - src/async-functions/syntax/async-expression-named.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Named async function expression)
+esid: prod-AsyncFunctionExpression
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionExpression :
+      async [no LineTerminator here] function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var fn = async function fn() {
+  await: ;
+};
diff --git a/test/language/expressions/async-generator/await-as-binding-identifier-escaped.js b/test/language/expressions/async-generator/await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..4e10e5b31bb84b02b88068ca3654b714faab1d98
--- /dev/null
+++ b/test/language/expressions/async-generator/await-as-binding-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-expression.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Unnamed async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var gen = async function *() {
+  var \u0061wait;
+};
diff --git a/test/language/expressions/async-generator/await-as-binding-identifier.js b/test/language/expressions/async-generator/await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..641e1e6cb9e9a7ac9375a9a9f5283a5592c74f59
--- /dev/null
+++ b/test/language/expressions/async-generator/await-as-binding-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier.case
+// - src/async-generators/syntax/async-expression.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Unnamed async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var gen = async function *() {
+  var await;
+};
diff --git a/test/language/expressions/async-generator/await-as-identifier-reference-escaped.js b/test/language/expressions/async-generator/await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..3ff1e34d5eb3e4472a4c8e68330d4cb885b14b15
--- /dev/null
+++ b/test/language/expressions/async-generator/await-as-identifier-reference-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-expression.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Unnamed async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var gen = async function *() {
+  void \u0061wait;
+};
diff --git a/test/language/expressions/async-generator/await-as-identifier-reference.js b/test/language/expressions/async-generator/await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..86a6f44d0d8dbc7eee8734365e8eec40f2c7d702
--- /dev/null
+++ b/test/language/expressions/async-generator/await-as-identifier-reference.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference.case
+// - src/async-generators/syntax/async-expression.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Unnamed async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var gen = async function *() {
+  void await;
+};
diff --git a/test/language/expressions/async-generator/await-as-label-identifier-escaped.js b/test/language/expressions/async-generator/await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..a38352578922c5ad7d355ce8e1b88e8d6d16b4ed
--- /dev/null
+++ b/test/language/expressions/async-generator/await-as-label-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-expression.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Unnamed async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var gen = async function *() {
+  \u0061wait: ;
+};
diff --git a/test/language/expressions/async-generator/await-as-label-identifier.js b/test/language/expressions/async-generator/await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..35b6704ca7a86bdc080ecf245d05df55975d9f70
--- /dev/null
+++ b/test/language/expressions/async-generator/await-as-label-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier.case
+// - src/async-generators/syntax/async-expression.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Unnamed async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var gen = async function *() {
+  await: ;
+};
diff --git a/test/language/expressions/async-generator/named-await-as-binding-identifier-escaped.js b/test/language/expressions/async-generator/named-await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..36927271db0559c4c98265837ab5ad3042c051ea
--- /dev/null
+++ b/test/language/expressions/async-generator/named-await-as-binding-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-expression-named.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Named async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var gen = async function *g() {
+  var \u0061wait;
+};
diff --git a/test/language/expressions/async-generator/named-await-as-binding-identifier.js b/test/language/expressions/async-generator/named-await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..1dce482ed95eaa438e2121336a60d38ee53aaa49
--- /dev/null
+++ b/test/language/expressions/async-generator/named-await-as-binding-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier.case
+// - src/async-generators/syntax/async-expression-named.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Named async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var gen = async function *g() {
+  var await;
+};
diff --git a/test/language/expressions/async-generator/named-await-as-identifier-reference-escaped.js b/test/language/expressions/async-generator/named-await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..c7eb1cd99f1bba21812e98555b4855525224f52e
--- /dev/null
+++ b/test/language/expressions/async-generator/named-await-as-identifier-reference-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-expression-named.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Named async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var gen = async function *g() {
+  void \u0061wait;
+};
diff --git a/test/language/expressions/async-generator/named-await-as-identifier-reference.js b/test/language/expressions/async-generator/named-await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..1e2d74c01da7bcb21a756fe92f496771968d1a70
--- /dev/null
+++ b/test/language/expressions/async-generator/named-await-as-identifier-reference.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference.case
+// - src/async-generators/syntax/async-expression-named.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Named async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var gen = async function *g() {
+  void await;
+};
diff --git a/test/language/expressions/async-generator/named-await-as-label-identifier-escaped.js b/test/language/expressions/async-generator/named-await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..63341cd62a1d37cd4f847c87080793a5f3800129
--- /dev/null
+++ b/test/language/expressions/async-generator/named-await-as-label-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-expression-named.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Named async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var gen = async function *g() {
+  \u0061wait: ;
+};
diff --git a/test/language/expressions/async-generator/named-await-as-label-identifier.js b/test/language/expressions/async-generator/named-await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..1fd1eaac08cb717ad7445e8c973e23ff06975a84
--- /dev/null
+++ b/test/language/expressions/async-generator/named-await-as-label-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier.case
+// - src/async-generators/syntax/async-expression-named.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Named async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var gen = async function *g() {
+  await: ;
+};
diff --git a/test/language/expressions/async-generator/named-yield-as-binding-identifier-escaped.js b/test/language/expressions/async-generator/named-yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..fb8a38b983adc08d3b3fc099edfcd7f5c0c85444
--- /dev/null
+++ b/test/language/expressions/async-generator/named-yield-as-binding-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-expression-named.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Named async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var gen = async function *g() {
+  var yi\u0065ld;
+};
diff --git a/test/language/expressions/async-generator/named-yield-as-binding-identifier.js b/test/language/expressions/async-generator/named-yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..1509fd83dfc32ce54f261f7b56844d948c856d68
--- /dev/null
+++ b/test/language/expressions/async-generator/named-yield-as-binding-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier.case
+// - src/async-generators/syntax/async-expression-named.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Named async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var gen = async function *g() {
+  var yield;
+};
diff --git a/test/language/expressions/async-generator/named-yield-as-identifier-reference-escaped.js b/test/language/expressions/async-generator/named-yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..baeb05788cd7ec3f43bac2ccc17a46d86aed60b2
--- /dev/null
+++ b/test/language/expressions/async-generator/named-yield-as-identifier-reference-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-expression-named.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Named async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var gen = async function *g() {
+  void yi\u0065ld;
+};
diff --git a/test/language/expressions/async-generator/named-yield-as-identifier-reference.js b/test/language/expressions/async-generator/named-yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..d8e9baa04d9f1989c61e30f5913720bb00284922
--- /dev/null
+++ b/test/language/expressions/async-generator/named-yield-as-identifier-reference.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference.case
+// - src/async-generators/syntax/async-expression-named.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Named async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var gen = async function *g() {
+  void yield;
+};
diff --git a/test/language/expressions/async-generator/named-yield-as-label-identifier-escaped.js b/test/language/expressions/async-generator/named-yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..e06acfc9c4515e6e446d5b5c4e479bccf9df948e
--- /dev/null
+++ b/test/language/expressions/async-generator/named-yield-as-label-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-expression-named.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Named async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var gen = async function *g() {
+  yi\u0065ld: ;
+};
diff --git a/test/language/expressions/async-generator/named-yield-as-label-identifier.js b/test/language/expressions/async-generator/named-yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..6341cbc1b27d6b589c8384f81a426cf29c555928
--- /dev/null
+++ b/test/language/expressions/async-generator/named-yield-as-label-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier.case
+// - src/async-generators/syntax/async-expression-named.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Named async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var gen = async function *g() {
+  yield: ;
+};
diff --git a/test/language/expressions/async-generator/yield-as-binding-identifier-escaped.js b/test/language/expressions/async-generator/yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..429fbbf1276b5ac871aa3fa15c69d0e74cd2d27d
--- /dev/null
+++ b/test/language/expressions/async-generator/yield-as-binding-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-expression.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Unnamed async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var gen = async function *() {
+  var yi\u0065ld;
+};
diff --git a/test/language/expressions/async-generator/yield-as-binding-identifier.js b/test/language/expressions/async-generator/yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..b52f74faf100d661d39927691917e8d9fb9b7ae8
--- /dev/null
+++ b/test/language/expressions/async-generator/yield-as-binding-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier.case
+// - src/async-generators/syntax/async-expression.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Unnamed async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var gen = async function *() {
+  var yield;
+};
diff --git a/test/language/expressions/async-generator/yield-as-identifier-reference-escaped.js b/test/language/expressions/async-generator/yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..f8c1d78238376a00959ccdb3fcdc7a08098b0a15
--- /dev/null
+++ b/test/language/expressions/async-generator/yield-as-identifier-reference-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-expression.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Unnamed async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var gen = async function *() {
+  void yi\u0065ld;
+};
diff --git a/test/language/expressions/async-generator/yield-as-identifier-reference.js b/test/language/expressions/async-generator/yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..dd9b10d3dcdc7849a3e103b4df51c7564cdb3c5f
--- /dev/null
+++ b/test/language/expressions/async-generator/yield-as-identifier-reference.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference.case
+// - src/async-generators/syntax/async-expression.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Unnamed async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var gen = async function *() {
+  void yield;
+};
diff --git a/test/language/expressions/async-generator/yield-as-label-identifier-escaped.js b/test/language/expressions/async-generator/yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..a506bbc545c62ff6400347840192fc5f88e1b048
--- /dev/null
+++ b/test/language/expressions/async-generator/yield-as-label-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-expression.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Unnamed async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var gen = async function *() {
+  yi\u0065ld: ;
+};
diff --git a/test/language/expressions/async-generator/yield-as-label-identifier.js b/test/language/expressions/async-generator/yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..77f967d8a3e5aaf1804c56766b46a2af06c8a19a
--- /dev/null
+++ b/test/language/expressions/async-generator/yield-as-label-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier.case
+// - src/async-generators/syntax/async-expression.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Unnamed async generator expression)
+esid: prod-AsyncGeneratorExpression
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorExpression :
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var gen = async function *() {
+  yield: ;
+};
diff --git a/test/language/expressions/class/async-gen-method-await-as-binding-identifier-escaped.js b/test/language/expressions/class/async-gen-method-await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..533cff236ef998b94fdb9c4830970d967ccc6a12
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-await-as-binding-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-class-expr-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { async *gen() {
+    var \u0061wait;
+}};
diff --git a/test/language/expressions/class/async-gen-method-await-as-binding-identifier.js b/test/language/expressions/class/async-gen-method-await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..f5c82819e39847136a41c419ed89822de95db546
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-await-as-binding-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier.case
+// - src/async-generators/syntax/async-class-expr-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { async *gen() {
+    var await;
+}};
diff --git a/test/language/expressions/class/async-gen-method-await-as-identifier-reference-escaped.js b/test/language/expressions/class/async-gen-method-await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..403c4edb14f1abfe5e58b3aa6d8fcce6ae705b48
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-await-as-identifier-reference-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-class-expr-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { async *gen() {
+    void \u0061wait;
+}};
diff --git a/test/language/expressions/class/async-gen-method-await-as-identifier-reference.js b/test/language/expressions/class/async-gen-method-await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..ae73038fea18a48ba1af13d51d0cf17cf695fd9e
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-await-as-identifier-reference.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference.case
+// - src/async-generators/syntax/async-class-expr-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { async *gen() {
+    void await;
+}};
diff --git a/test/language/expressions/class/async-gen-method-await-as-label-identifier-escaped.js b/test/language/expressions/class/async-gen-method-await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..cc71b9066a674fc5d7f84ee4b9a35b34210575b0
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-await-as-label-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-class-expr-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { async *gen() {
+    \u0061wait: ;
+}};
diff --git a/test/language/expressions/class/async-gen-method-await-as-label-identifier.js b/test/language/expressions/class/async-gen-method-await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..422ea90be6df26d29c7e7d07e6b44fd4c29b929a
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-await-as-label-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier.case
+// - src/async-generators/syntax/async-class-expr-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { async *gen() {
+    await: ;
+}};
diff --git a/test/language/expressions/class/async-gen-method-static-await-as-binding-identifier-escaped.js b/test/language/expressions/class/async-gen-method-static-await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..01c1b247c80e9c4e7163a16822d6c3ab765df39c
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-static-await-as-binding-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-class-expr-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { static async *gen() {
+    var \u0061wait;
+}};
diff --git a/test/language/expressions/class/async-gen-method-static-await-as-binding-identifier.js b/test/language/expressions/class/async-gen-method-static-await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..cee89e521e92856d8eb312be90a5cc3c06fb34b0
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-static-await-as-binding-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier.case
+// - src/async-generators/syntax/async-class-expr-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { static async *gen() {
+    var await;
+}};
diff --git a/test/language/expressions/class/async-gen-method-static-await-as-identifier-reference-escaped.js b/test/language/expressions/class/async-gen-method-static-await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..32459fa6e425c40302274d0fa0b9e3d84329494a
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-static-await-as-identifier-reference-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-class-expr-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { static async *gen() {
+    void \u0061wait;
+}};
diff --git a/test/language/expressions/class/async-gen-method-static-await-as-identifier-reference.js b/test/language/expressions/class/async-gen-method-static-await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..e6a1059f85089b90dd03515dfb0cec4ac7553e84
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-static-await-as-identifier-reference.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference.case
+// - src/async-generators/syntax/async-class-expr-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { static async *gen() {
+    void await;
+}};
diff --git a/test/language/expressions/class/async-gen-method-static-await-as-label-identifier-escaped.js b/test/language/expressions/class/async-gen-method-static-await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..ee2912150b1951e5f5c4ceb15925751dff6da72d
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-static-await-as-label-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-class-expr-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { static async *gen() {
+    \u0061wait: ;
+}};
diff --git a/test/language/expressions/class/async-gen-method-static-await-as-label-identifier.js b/test/language/expressions/class/async-gen-method-static-await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..b0e4b6cf91f7960597a2f177e5140f0c2fe1bbf6
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-static-await-as-label-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier.case
+// - src/async-generators/syntax/async-class-expr-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { static async *gen() {
+    await: ;
+}};
diff --git a/test/language/expressions/class/async-gen-method-static-yield-as-binding-identifier-escaped.js b/test/language/expressions/class/async-gen-method-static-yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..af6cc2cb0673a16fb4858cf4401f3a39c2ec1dfd
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-static-yield-as-binding-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-class-expr-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var C = class { static async *gen() {
+    var yi\u0065ld;
+}};
diff --git a/test/language/expressions/class/async-gen-method-static-yield-as-binding-identifier.js b/test/language/expressions/class/async-gen-method-static-yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..40355726ee29917364f4d1df7527dda14baa3656
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-static-yield-as-binding-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier.case
+// - src/async-generators/syntax/async-class-expr-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var C = class { static async *gen() {
+    var yield;
+}};
diff --git a/test/language/expressions/class/async-gen-method-static-yield-as-identifier-reference-escaped.js b/test/language/expressions/class/async-gen-method-static-yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..66f23d3ee3e89fbe7ebdf202a705116f744502cb
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-static-yield-as-identifier-reference-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-class-expr-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var C = class { static async *gen() {
+    void yi\u0065ld;
+}};
diff --git a/test/language/expressions/class/async-gen-method-static-yield-as-identifier-reference.js b/test/language/expressions/class/async-gen-method-static-yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..44b9cfb1ad6777c6244558390b88cad5fb847452
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-static-yield-as-identifier-reference.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference.case
+// - src/async-generators/syntax/async-class-expr-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var C = class { static async *gen() {
+    void yield;
+}};
diff --git a/test/language/expressions/class/async-gen-method-static-yield-as-label-identifier-escaped.js b/test/language/expressions/class/async-gen-method-static-yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..780b758e849fed8248cf4f5e1361581e2c16e7aa
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-static-yield-as-label-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-class-expr-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var C = class { static async *gen() {
+    yi\u0065ld: ;
+}};
diff --git a/test/language/expressions/class/async-gen-method-static-yield-as-label-identifier.js b/test/language/expressions/class/async-gen-method-static-yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..523e9c009a7f648a112c979fc440ef769e96f0f6
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-static-yield-as-label-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier.case
+// - src/async-generators/syntax/async-class-expr-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var C = class { static async *gen() {
+    yield: ;
+}};
diff --git a/test/language/expressions/class/async-gen-method-yield-as-binding-identifier-escaped.js b/test/language/expressions/class/async-gen-method-yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..95308e64e4dcaeea25806eb7a2f88bb25d80ae29
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-yield-as-binding-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-class-expr-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var C = class { async *gen() {
+    var yi\u0065ld;
+}};
diff --git a/test/language/expressions/class/async-gen-method-yield-as-binding-identifier.js b/test/language/expressions/class/async-gen-method-yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..e0be6d3c5ff4e3764cb03232935e6e53cd5ab349
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-yield-as-binding-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier.case
+// - src/async-generators/syntax/async-class-expr-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var C = class { async *gen() {
+    var yield;
+}};
diff --git a/test/language/expressions/class/async-gen-method-yield-as-identifier-reference-escaped.js b/test/language/expressions/class/async-gen-method-yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..f8abfb9cc07a2829b98d7497a4e8d5922dce91fd
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-yield-as-identifier-reference-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-class-expr-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var C = class { async *gen() {
+    void yi\u0065ld;
+}};
diff --git a/test/language/expressions/class/async-gen-method-yield-as-identifier-reference.js b/test/language/expressions/class/async-gen-method-yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..1d51b563f5e8a8061228d5939b6cb345af322496
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-yield-as-identifier-reference.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference.case
+// - src/async-generators/syntax/async-class-expr-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var C = class { async *gen() {
+    void yield;
+}};
diff --git a/test/language/expressions/class/async-gen-method-yield-as-label-identifier-escaped.js b/test/language/expressions/class/async-gen-method-yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..24ccfb51093a496d54b5ea3f3431c77ff5a79d4e
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-yield-as-label-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-class-expr-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var C = class { async *gen() {
+    yi\u0065ld: ;
+}};
diff --git a/test/language/expressions/class/async-gen-method-yield-as-label-identifier.js b/test/language/expressions/class/async-gen-method-yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..12c3dbac4af8fe56687862958b463b57b1bd0fa7
--- /dev/null
+++ b/test/language/expressions/class/async-gen-method-yield-as-label-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier.case
+// - src/async-generators/syntax/async-class-expr-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async generator method as a ClassExpression element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+var C = class { async *gen() {
+    yield: ;
+}};
diff --git a/test/language/expressions/class/async-method-await-as-binding-identifier-escaped.js b/test/language/expressions/class/async-method-await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..1cd9a0ddef99b6710bc1791dae2e84e6ce5395a1
--- /dev/null
+++ b/test/language/expressions/class/async-method-await-as-binding-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier-escaped.case
+// - src/async-functions/syntax/async-class-expr-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async method as a ClassExpression element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { async method() {
+    var \u0061wait;
+}};
diff --git a/test/language/expressions/class/async-method-await-as-binding-identifier.js b/test/language/expressions/class/async-method-await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..b2a031ff7c60403c56e7aa041a52d1d6e417c52d
--- /dev/null
+++ b/test/language/expressions/class/async-method-await-as-binding-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier.case
+// - src/async-functions/syntax/async-class-expr-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async method as a ClassExpression element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { async method() {
+    var await;
+}};
diff --git a/test/language/expressions/class/async-method-await-as-identifier-reference-escaped.js b/test/language/expressions/class/async-method-await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..27f856ee002a2d171fb001681b4936fd38e0a985
--- /dev/null
+++ b/test/language/expressions/class/async-method-await-as-identifier-reference-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference-escaped.case
+// - src/async-functions/syntax/async-class-expr-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async method as a ClassExpression element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { async method() {
+    void \u0061wait;
+}};
diff --git a/test/language/expressions/class/async-method-await-as-identifier-reference.js b/test/language/expressions/class/async-method-await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..d827b028a3d95af1cbffdd54a0831c59a3db2d0d
--- /dev/null
+++ b/test/language/expressions/class/async-method-await-as-identifier-reference.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference.case
+// - src/async-functions/syntax/async-class-expr-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async method as a ClassExpression element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { async method() {
+    void await;
+}};
diff --git a/test/language/expressions/class/async-method-await-as-label-identifier-escaped.js b/test/language/expressions/class/async-method-await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..d9f3aedfca8caf2ee8b1a4b6a7368ef36b2131aa
--- /dev/null
+++ b/test/language/expressions/class/async-method-await-as-label-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier-escaped.case
+// - src/async-functions/syntax/async-class-expr-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async method as a ClassExpression element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { async method() {
+    \u0061wait: ;
+}};
diff --git a/test/language/expressions/class/async-method-await-as-label-identifier.js b/test/language/expressions/class/async-method-await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..63f534fc3bf6ab0928848af5f42d8d29f6d33b98
--- /dev/null
+++ b/test/language/expressions/class/async-method-await-as-label-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier.case
+// - src/async-functions/syntax/async-class-expr-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async method as a ClassExpression element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { async method() {
+    await: ;
+}};
diff --git a/test/language/expressions/class/async-method-static-await-as-binding-identifier-escaped.js b/test/language/expressions/class/async-method-static-await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..b7ae297fa580374c6c85a30c6d99498e1920dd3b
--- /dev/null
+++ b/test/language/expressions/class/async-method-static-await-as-binding-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier-escaped.case
+// - src/async-functions/syntax/async-class-expr-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static async method as a ClassExpression element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { static async method() {
+    var \u0061wait;
+}};
diff --git a/test/language/expressions/class/async-method-static-await-as-binding-identifier.js b/test/language/expressions/class/async-method-static-await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..6439c50e76c2fe717c689e981853e537eb7af3b7
--- /dev/null
+++ b/test/language/expressions/class/async-method-static-await-as-binding-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier.case
+// - src/async-functions/syntax/async-class-expr-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static async method as a ClassExpression element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { static async method() {
+    var await;
+}};
diff --git a/test/language/expressions/class/async-method-static-await-as-identifier-reference-escaped.js b/test/language/expressions/class/async-method-static-await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..43254c8400c73fe9a4b197370669d1fe09edac45
--- /dev/null
+++ b/test/language/expressions/class/async-method-static-await-as-identifier-reference-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference-escaped.case
+// - src/async-functions/syntax/async-class-expr-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static async method as a ClassExpression element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { static async method() {
+    void \u0061wait;
+}};
diff --git a/test/language/expressions/class/async-method-static-await-as-identifier-reference.js b/test/language/expressions/class/async-method-static-await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..881dd6a2deeb7ad432169079d6113e4728bffb98
--- /dev/null
+++ b/test/language/expressions/class/async-method-static-await-as-identifier-reference.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference.case
+// - src/async-functions/syntax/async-class-expr-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static async method as a ClassExpression element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { static async method() {
+    void await;
+}};
diff --git a/test/language/expressions/class/async-method-static-await-as-label-identifier-escaped.js b/test/language/expressions/class/async-method-static-await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..e21517c0ce9168bc2455aa2b6576bf1636aed10d
--- /dev/null
+++ b/test/language/expressions/class/async-method-static-await-as-label-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier-escaped.case
+// - src/async-functions/syntax/async-class-expr-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static async method as a ClassExpression element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { static async method() {
+    \u0061wait: ;
+}};
diff --git a/test/language/expressions/class/async-method-static-await-as-label-identifier.js b/test/language/expressions/class/async-method-static-await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..a7da3a57f1e9d78e3a2bc07783a4d9e9bd108c87
--- /dev/null
+++ b/test/language/expressions/class/async-method-static-await-as-label-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier.case
+// - src/async-functions/syntax/async-class-expr-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static async method as a ClassExpression element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var C = class { static async method() {
+    await: ;
+}};
diff --git a/test/language/expressions/class/gen-method-static-yield-as-binding-identifier-escaped.js b/test/language/expressions/class/gen-method-static-yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..b2159a21fcf3e14878075b30073c57958a7f0d3f
--- /dev/null
+++ b/test/language/expressions/class/gen-method-static-yield-as-binding-identifier-escaped.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier-escaped.case
+// - src/generators/syntax/class-expr-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static generator method as a ClassExpression element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var C = class { static *gen() {
+    var yi\u0065ld;
+}};
diff --git a/test/language/expressions/class/gen-method-static-yield-as-binding-identifier.js b/test/language/expressions/class/gen-method-static-yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..25e13019c4121ca4ac45041efd47600c1c706bf6
--- /dev/null
+++ b/test/language/expressions/class/gen-method-static-yield-as-binding-identifier.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier.case
+// - src/generators/syntax/class-expr-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static generator method as a ClassExpression element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var C = class { static *gen() {
+    var yield;
+}};
diff --git a/test/language/expressions/class/gen-method-static-yield-as-identifier-reference-escaped.js b/test/language/expressions/class/gen-method-static-yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..27a86ab9c87189f746d015ff2303bc5514eb424a
--- /dev/null
+++ b/test/language/expressions/class/gen-method-static-yield-as-identifier-reference-escaped.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference-escaped.case
+// - src/generators/syntax/class-expr-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static generator method as a ClassExpression element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var C = class { static *gen() {
+    void yi\u0065ld;
+}};
diff --git a/test/language/expressions/class/gen-method-static-yield-as-identifier-reference.js b/test/language/expressions/class/gen-method-static-yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..a1ff71520d60e6e1fafefef6b57e9685de433615
--- /dev/null
+++ b/test/language/expressions/class/gen-method-static-yield-as-identifier-reference.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference.case
+// - src/generators/syntax/class-expr-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static generator method as a ClassExpression element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var C = class { static *gen() {
+    void yield;
+}};
diff --git a/test/language/expressions/class/gen-method-static-yield-as-label-identifier-escaped.js b/test/language/expressions/class/gen-method-static-yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..897df7f2c11a6d75a8c22e0569d5262217b36517
--- /dev/null
+++ b/test/language/expressions/class/gen-method-static-yield-as-label-identifier-escaped.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier-escaped.case
+// - src/generators/syntax/class-expr-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static generator method as a ClassExpression element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var C = class { static *gen() {
+    yi\u0065ld: ;
+}};
diff --git a/test/language/expressions/class/gen-method-static-yield-as-label-identifier.js b/test/language/expressions/class/gen-method-static-yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..76c74990b75b33b1eb61074eb78efb62e67cff6f
--- /dev/null
+++ b/test/language/expressions/class/gen-method-static-yield-as-label-identifier.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier.case
+// - src/generators/syntax/class-expr-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static generator method as a ClassExpression element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var C = class { static *gen() {
+    yield: ;
+}};
diff --git a/test/language/expressions/class/gen-method-yield-as-binding-identifier-escaped.js b/test/language/expressions/class/gen-method-yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..e7ad8dcb554f14be518c7a3edec5821f8e1f2564
--- /dev/null
+++ b/test/language/expressions/class/gen-method-yield-as-binding-identifier-escaped.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier-escaped.case
+// - src/generators/syntax/class-expr-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Generator method as a ClassExpression element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var C = class {*gen() {
+    var yi\u0065ld;
+}};
diff --git a/test/language/expressions/class/gen-method-yield-as-binding-identifier.js b/test/language/expressions/class/gen-method-yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..11d044804083a1e25f42eebe93fa3758545f2c85
--- /dev/null
+++ b/test/language/expressions/class/gen-method-yield-as-binding-identifier.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier.case
+// - src/generators/syntax/class-expr-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Generator method as a ClassExpression element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var C = class {*gen() {
+    var yield;
+}};
diff --git a/test/language/expressions/class/gen-method-yield-as-identifier-reference-escaped.js b/test/language/expressions/class/gen-method-yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..88c404921a44f49c2be06371c1e29768465e80fe
--- /dev/null
+++ b/test/language/expressions/class/gen-method-yield-as-identifier-reference-escaped.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference-escaped.case
+// - src/generators/syntax/class-expr-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Generator method as a ClassExpression element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var C = class {*gen() {
+    void yi\u0065ld;
+}};
diff --git a/test/language/expressions/class/gen-method-yield-as-identifier-reference.js b/test/language/expressions/class/gen-method-yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..76b87bc3ee7a5871dbe9f168e61550f70d7f1f1d
--- /dev/null
+++ b/test/language/expressions/class/gen-method-yield-as-identifier-reference.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference.case
+// - src/generators/syntax/class-expr-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Generator method as a ClassExpression element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var C = class {*gen() {
+    void yield;
+}};
diff --git a/test/language/expressions/class/gen-method-yield-as-label-identifier-escaped.js b/test/language/expressions/class/gen-method-yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..a002c49aa35727bed6c11e723a7b93f7aa15ff37
--- /dev/null
+++ b/test/language/expressions/class/gen-method-yield-as-label-identifier-escaped.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier-escaped.case
+// - src/generators/syntax/class-expr-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Generator method as a ClassExpression element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var C = class {*gen() {
+    yi\u0065ld: ;
+}};
diff --git a/test/language/expressions/class/gen-method-yield-as-label-identifier.js b/test/language/expressions/class/gen-method-yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..151f46e248768130427dd992013717aeeab72603
--- /dev/null
+++ b/test/language/expressions/class/gen-method-yield-as-label-identifier.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier.case
+// - src/generators/syntax/class-expr-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Generator method as a ClassExpression element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var C = class {*gen() {
+    yield: ;
+}};
diff --git a/test/language/expressions/generators/named-yield-as-binding-identifier-escaped.js b/test/language/expressions/generators/named-yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..5cd0fceecd85a0dda046c3d7e137f0bd8280a50a
--- /dev/null
+++ b/test/language/expressions/generators/named-yield-as-binding-identifier-escaped.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier-escaped.case
+// - src/generators/syntax/expression-named.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Named generator expression)
+esid: prod-GeneratorExpression
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorExpression:
+      function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var gen = function *g() {
+  var yi\u0065ld;
+};
diff --git a/test/language/expressions/generators/named-yield-as-binding-identifier.js b/test/language/expressions/generators/named-yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..0471c77e719397292f0d773c085eb5edb593c494
--- /dev/null
+++ b/test/language/expressions/generators/named-yield-as-binding-identifier.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier.case
+// - src/generators/syntax/expression-named.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Named generator expression)
+esid: prod-GeneratorExpression
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorExpression:
+      function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var gen = function *g() {
+  var yield;
+};
diff --git a/test/language/expressions/generators/named-yield-as-identifier-reference-escaped.js b/test/language/expressions/generators/named-yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..c86041dca51c11b778cdcea91fe7c303d05a4145
--- /dev/null
+++ b/test/language/expressions/generators/named-yield-as-identifier-reference-escaped.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference-escaped.case
+// - src/generators/syntax/expression-named.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Named generator expression)
+esid: prod-GeneratorExpression
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorExpression:
+      function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var gen = function *g() {
+  void yi\u0065ld;
+};
diff --git a/test/language/expressions/generators/named-yield-as-identifier-reference.js b/test/language/expressions/generators/named-yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..8f0c4dad84937fcc4bd439e29b0c7dc719417c7f
--- /dev/null
+++ b/test/language/expressions/generators/named-yield-as-identifier-reference.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference.case
+// - src/generators/syntax/expression-named.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Named generator expression)
+esid: prod-GeneratorExpression
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorExpression:
+      function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var gen = function *g() {
+  void yield;
+};
diff --git a/test/language/expressions/generators/named-yield-as-label-identifier-escaped.js b/test/language/expressions/generators/named-yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..d581027974fc0df2df6c812f4321928ec64349ba
--- /dev/null
+++ b/test/language/expressions/generators/named-yield-as-label-identifier-escaped.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier-escaped.case
+// - src/generators/syntax/expression-named.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Named generator expression)
+esid: prod-GeneratorExpression
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorExpression:
+      function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var gen = function *g() {
+  yi\u0065ld: ;
+};
diff --git a/test/language/expressions/generators/named-yield-as-label-identifier.js b/test/language/expressions/generators/named-yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..4fc4e07445c31903ce9e7d328649a1fe553cac4d
--- /dev/null
+++ b/test/language/expressions/generators/named-yield-as-label-identifier.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier.case
+// - src/generators/syntax/expression-named.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Named generator expression)
+esid: prod-GeneratorExpression
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorExpression:
+      function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var gen = function *g() {
+  yield: ;
+};
diff --git a/test/language/expressions/generators/yield-as-binding-identifier-escaped.js b/test/language/expressions/generators/yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..dfacdf5b5ba6f53c01fa6c7544e637b68f0803ba
--- /dev/null
+++ b/test/language/expressions/generators/yield-as-binding-identifier-escaped.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier-escaped.case
+// - src/generators/syntax/expression.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Unnamed generator expression)
+esid: prod-GeneratorExpression
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorExpression:
+      function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var gen = function *() {
+  var yi\u0065ld;
+};
diff --git a/test/language/expressions/generators/yield-as-binding-identifier.js b/test/language/expressions/generators/yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..a26aa2140c9161151f1c0ae021eb744e8863fc75
--- /dev/null
+++ b/test/language/expressions/generators/yield-as-binding-identifier.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier.case
+// - src/generators/syntax/expression.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Unnamed generator expression)
+esid: prod-GeneratorExpression
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorExpression:
+      function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var gen = function *() {
+  var yield;
+};
diff --git a/test/language/expressions/generators/yield-as-identifier-reference-escaped.js b/test/language/expressions/generators/yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..390d154f3c70e19650acc0f48b9c7a182db8f4d1
--- /dev/null
+++ b/test/language/expressions/generators/yield-as-identifier-reference-escaped.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference-escaped.case
+// - src/generators/syntax/expression.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Unnamed generator expression)
+esid: prod-GeneratorExpression
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorExpression:
+      function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var gen = function *() {
+  void yi\u0065ld;
+};
diff --git a/test/language/expressions/generators/yield-as-identifier-reference.js b/test/language/expressions/generators/yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..132123978052cb1527e2ea000ec92ad0b1b21abe
--- /dev/null
+++ b/test/language/expressions/generators/yield-as-identifier-reference.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference.case
+// - src/generators/syntax/expression.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Unnamed generator expression)
+esid: prod-GeneratorExpression
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorExpression:
+      function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var gen = function *() {
+  void yield;
+};
diff --git a/test/language/expressions/generators/yield-as-label-identifier-escaped.js b/test/language/expressions/generators/yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..e7dcd910f7f4f207f376c09fcf73dba91e66744d
--- /dev/null
+++ b/test/language/expressions/generators/yield-as-label-identifier-escaped.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier-escaped.case
+// - src/generators/syntax/expression.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Unnamed generator expression)
+esid: prod-GeneratorExpression
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorExpression:
+      function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var gen = function *() {
+  yi\u0065ld: ;
+};
diff --git a/test/language/expressions/generators/yield-as-label-identifier.js b/test/language/expressions/generators/yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..e6be45af71a707862ed20c2380962a0c5919cdbb
--- /dev/null
+++ b/test/language/expressions/generators/yield-as-label-identifier.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier.case
+// - src/generators/syntax/expression.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Unnamed generator expression)
+esid: prod-GeneratorExpression
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorExpression:
+      function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var gen = function *() {
+  yield: ;
+};
diff --git a/test/language/expressions/object/method-definition/async-await-as-binding-identifier-escaped.js b/test/language/expressions/object/method-definition/async-await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..fe4640bafeef6af35c1f54018b8b71bfaf09c5bd
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-await-as-binding-identifier-escaped.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier-escaped.case
+// - src/async-functions/syntax/async-obj-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async method)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var obj = {
+  async method() {
+    var \u0061wait;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-await-as-binding-identifier.js b/test/language/expressions/object/method-definition/async-await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..ab9e0d4ccfbbbef8a9a1cedf551c6febcc970a62
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-await-as-binding-identifier.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier.case
+// - src/async-functions/syntax/async-obj-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async method)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var obj = {
+  async method() {
+    var await;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-await-as-identifier-reference-escaped.js b/test/language/expressions/object/method-definition/async-await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..ba6b8b9d1346ee570270dcc5596b5a2f7311d64a
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-await-as-identifier-reference-escaped.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference-escaped.case
+// - src/async-functions/syntax/async-obj-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async method)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var obj = {
+  async method() {
+    void \u0061wait;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-await-as-identifier-reference.js b/test/language/expressions/object/method-definition/async-await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..0901a2873e852e1a9304edbc27961f6dc19869d9
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-await-as-identifier-reference.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference.case
+// - src/async-functions/syntax/async-obj-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async method)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var obj = {
+  async method() {
+    void await;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-await-as-label-identifier-escaped.js b/test/language/expressions/object/method-definition/async-await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..77ccdfc4eaec1c702c0780f3698cdbf23408c81e
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-await-as-label-identifier-escaped.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier-escaped.case
+// - src/async-functions/syntax/async-obj-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async method)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var obj = {
+  async method() {
+    \u0061wait: ;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-await-as-label-identifier.js b/test/language/expressions/object/method-definition/async-await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..b9fc331b7240439956a7b335675fd2d1de85b77f
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-await-as-label-identifier.js
@@ -0,0 +1,31 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier.case
+// - src/async-functions/syntax/async-obj-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async method)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+var obj = {
+  async method() {
+    await: ;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-gen-await-as-binding-identifier-escaped.js b/test/language/expressions/object/method-definition/async-gen-await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..b4822e8e1515c8fadb30327ce8b1943cf05b3f50
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-gen-await-as-binding-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-obj-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async generator method)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+var obj = {
+  async *method() {
+    var \u0061wait;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-gen-await-as-binding-identifier.js b/test/language/expressions/object/method-definition/async-gen-await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..16f01ca7774be7362150931345b70e4fec17ab22
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-gen-await-as-binding-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier.case
+// - src/async-generators/syntax/async-obj-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async generator method)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+var obj = {
+  async *method() {
+    var await;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-gen-await-as-identifier-reference-escaped.js b/test/language/expressions/object/method-definition/async-gen-await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..5fe5df5a7fa65d7dc64e8562b9a59a8a1471073f
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-gen-await-as-identifier-reference-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-obj-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async generator method)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+var obj = {
+  async *method() {
+    void \u0061wait;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-gen-await-as-identifier-reference.js b/test/language/expressions/object/method-definition/async-gen-await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..ad66a857de55f5850efe387358e28d5828d8ab10
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-gen-await-as-identifier-reference.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference.case
+// - src/async-generators/syntax/async-obj-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async generator method)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+var obj = {
+  async *method() {
+    void await;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-gen-await-as-label-identifier-escaped.js b/test/language/expressions/object/method-definition/async-gen-await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..e0aac01dc125efbc0d69cebae1567ae6c747e8e9
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-gen-await-as-label-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-obj-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async generator method)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+var obj = {
+  async *method() {
+    \u0061wait: ;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-gen-await-as-label-identifier.js b/test/language/expressions/object/method-definition/async-gen-await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..36cabc6756b4594931774347b428a62e86ed1504
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-gen-await-as-label-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier.case
+// - src/async-generators/syntax/async-obj-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async generator method)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+var obj = {
+  async *method() {
+    await: ;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-gen-yield-as-binding-identifier-escaped.js b/test/language/expressions/object/method-definition/async-gen-yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..06a42dd08c98e53607369f6b0ed56dbf680f729d
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-gen-yield-as-binding-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-obj-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async generator method)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var obj = {
+  async *method() {
+    var yi\u0065ld;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-gen-yield-as-binding-identifier.js b/test/language/expressions/object/method-definition/async-gen-yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..efc8a4302f314eb7dfb073d9e6b2ffb57fc6e425
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-gen-yield-as-binding-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier.case
+// - src/async-generators/syntax/async-obj-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async generator method)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var obj = {
+  async *method() {
+    var yield;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-gen-yield-as-identifier-reference-escaped.js b/test/language/expressions/object/method-definition/async-gen-yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..18bf881478a33b02a84af4b2c233057f1258a4c7
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-gen-yield-as-identifier-reference-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-obj-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async generator method)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var obj = {
+  async *method() {
+    void yi\u0065ld;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-gen-yield-as-identifier-reference.js b/test/language/expressions/object/method-definition/async-gen-yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..0bc824773ff997bbabc024e39754413dbc6e32bf
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-gen-yield-as-identifier-reference.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference.case
+// - src/async-generators/syntax/async-obj-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async generator method)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var obj = {
+  async *method() {
+    void yield;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-gen-yield-as-label-identifier-escaped.js b/test/language/expressions/object/method-definition/async-gen-yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..c09ae334d1505a28fee54c7b44ef1a2b1e59c4f2
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-gen-yield-as-label-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-obj-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async generator method)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var obj = {
+  async *method() {
+    yi\u0065ld: ;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/async-gen-yield-as-label-identifier.js b/test/language/expressions/object/method-definition/async-gen-yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..e77071f810a67f72fd7c9ad42750db1925b42fc2
--- /dev/null
+++ b/test/language/expressions/object/method-definition/async-gen-yield-as-label-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier.case
+// - src/async-generators/syntax/async-obj-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async generator method)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var obj = {
+  async *method() {
+    yield: ;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/gen-yield-as-binding-identifier-escaped.js b/test/language/expressions/object/method-definition/gen-yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..35498bb19652e8f28d23d2bf3cde24e820b58ba2
--- /dev/null
+++ b/test/language/expressions/object/method-definition/gen-yield-as-binding-identifier-escaped.js
@@ -0,0 +1,28 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier-escaped.case
+// - src/generators/syntax/obj-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Generator method)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorMethod[Yield, Await]:
+      * PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var obj = {
+  *method() {
+    var yi\u0065ld;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/gen-yield-as-binding-identifier.js b/test/language/expressions/object/method-definition/gen-yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..61bd78bb5a7a36b3a71a5d6ff2c67742e4d213dc
--- /dev/null
+++ b/test/language/expressions/object/method-definition/gen-yield-as-binding-identifier.js
@@ -0,0 +1,28 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier.case
+// - src/generators/syntax/obj-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Generator method)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorMethod[Yield, Await]:
+      * PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var obj = {
+  *method() {
+    var yield;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/gen-yield-as-identifier-reference-escaped.js b/test/language/expressions/object/method-definition/gen-yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..bb33828426b1cd04bf6382501cf1135326ddab5c
--- /dev/null
+++ b/test/language/expressions/object/method-definition/gen-yield-as-identifier-reference-escaped.js
@@ -0,0 +1,28 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference-escaped.case
+// - src/generators/syntax/obj-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Generator method)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorMethod[Yield, Await]:
+      * PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var obj = {
+  *method() {
+    void yi\u0065ld;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/gen-yield-as-identifier-reference.js b/test/language/expressions/object/method-definition/gen-yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..dc7d32d8d0a167038d1c1dfee47d0161dbe1babd
--- /dev/null
+++ b/test/language/expressions/object/method-definition/gen-yield-as-identifier-reference.js
@@ -0,0 +1,28 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference.case
+// - src/generators/syntax/obj-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Generator method)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorMethod[Yield, Await]:
+      * PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var obj = {
+  *method() {
+    void yield;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/gen-yield-as-label-identifier-escaped.js b/test/language/expressions/object/method-definition/gen-yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..0da5a53f7e9bc8d0e5f161e98243c7b0f8692ef4
--- /dev/null
+++ b/test/language/expressions/object/method-definition/gen-yield-as-label-identifier-escaped.js
@@ -0,0 +1,28 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier-escaped.case
+// - src/generators/syntax/obj-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Generator method)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorMethod[Yield, Await]:
+      * PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var obj = {
+  *method() {
+    yi\u0065ld: ;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/gen-yield-as-label-identifier.js b/test/language/expressions/object/method-definition/gen-yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..bb319e8d9487c728c94bd85c09caef6b5321add3
--- /dev/null
+++ b/test/language/expressions/object/method-definition/gen-yield-as-label-identifier.js
@@ -0,0 +1,28 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier.case
+// - src/generators/syntax/obj-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Generator method)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorMethod[Yield, Await]:
+      * PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+var obj = {
+  *method() {
+    yield: ;
+  }
+};
diff --git a/test/language/statements/async-function/await-as-binding-identifier-escaped.js b/test/language/statements/async-function/await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..74c4685f319c594e9713ac29886923fa04a7d58f
--- /dev/null
+++ b/test/language/statements/async-function/await-as-binding-identifier-escaped.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier-escaped.case
+// - src/async-functions/syntax/async-declaration.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async function declaration)
+esid: prod-AsyncFunctionDeclaration
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionDeclaration:
+      async [no LineTerminator here] function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async function fn() {
+  var \u0061wait;
+}
diff --git a/test/language/statements/async-function/await-as-binding-identifier.js b/test/language/statements/async-function/await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..9e7a05b7e4e2a2b869b4e67fe2359862fefe355e
--- /dev/null
+++ b/test/language/statements/async-function/await-as-binding-identifier.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier.case
+// - src/async-functions/syntax/async-declaration.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async function declaration)
+esid: prod-AsyncFunctionDeclaration
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionDeclaration:
+      async [no LineTerminator here] function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async function fn() {
+  var await;
+}
diff --git a/test/language/statements/async-function/await-as-identifier-reference-escaped.js b/test/language/statements/async-function/await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..5f87e7053ee680f07a76445034bb8f048e9e4441
--- /dev/null
+++ b/test/language/statements/async-function/await-as-identifier-reference-escaped.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference-escaped.case
+// - src/async-functions/syntax/async-declaration.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async function declaration)
+esid: prod-AsyncFunctionDeclaration
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionDeclaration:
+      async [no LineTerminator here] function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async function fn() {
+  void \u0061wait;
+}
diff --git a/test/language/statements/async-function/await-as-identifier-reference.js b/test/language/statements/async-function/await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..6e79c06ae162ccdbc0addb8f5011a0dfc1898c8b
--- /dev/null
+++ b/test/language/statements/async-function/await-as-identifier-reference.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference.case
+// - src/async-functions/syntax/async-declaration.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async function declaration)
+esid: prod-AsyncFunctionDeclaration
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionDeclaration:
+      async [no LineTerminator here] function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async function fn() {
+  void await;
+}
diff --git a/test/language/statements/async-function/await-as-label-identifier-escaped.js b/test/language/statements/async-function/await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..8e9239aa7a804a06c763cbf9ab58156e469ac426
--- /dev/null
+++ b/test/language/statements/async-function/await-as-label-identifier-escaped.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier-escaped.case
+// - src/async-functions/syntax/async-declaration.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async function declaration)
+esid: prod-AsyncFunctionDeclaration
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionDeclaration:
+      async [no LineTerminator here] function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async function fn() {
+  \u0061wait: ;
+}
diff --git a/test/language/statements/async-function/await-as-label-identifier.js b/test/language/statements/async-function/await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..d0ac4c5363540e5201a91b51945d9ac671168310
--- /dev/null
+++ b/test/language/statements/async-function/await-as-label-identifier.js
@@ -0,0 +1,29 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier.case
+// - src/async-functions/syntax/async-declaration.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async function declaration)
+esid: prod-AsyncFunctionDeclaration
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Function Definitions
+
+    AsyncFunctionDeclaration:
+      async [no LineTerminator here] function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async function fn() {
+  await: ;
+}
diff --git a/test/language/statements/async-generator/await-as-binding-identifier-escaped.js b/test/language/statements/async-generator/await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..2c1ed63c93303e683e5675e76ac7c294ef307d38
--- /dev/null
+++ b/test/language/statements/async-generator/await-as-binding-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-declaration.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async generator Function declaration)
+esid: prod-AsyncGeneratorDeclaration
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorDeclaration:
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async function *gen() {
+  var \u0061wait;
+}
diff --git a/test/language/statements/async-generator/await-as-binding-identifier.js b/test/language/statements/async-generator/await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..4a6af9038439fc177ffa5178dc63806ef21798a0
--- /dev/null
+++ b/test/language/statements/async-generator/await-as-binding-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier.case
+// - src/async-generators/syntax/async-declaration.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async generator Function declaration)
+esid: prod-AsyncGeneratorDeclaration
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorDeclaration:
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async function *gen() {
+  var await;
+}
diff --git a/test/language/statements/async-generator/await-as-identifier-reference-escaped.js b/test/language/statements/async-generator/await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..afe771cc9c0ea91c5d065eac5ac3046968c2ebd9
--- /dev/null
+++ b/test/language/statements/async-generator/await-as-identifier-reference-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-declaration.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async generator Function declaration)
+esid: prod-AsyncGeneratorDeclaration
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorDeclaration:
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async function *gen() {
+  void \u0061wait;
+}
diff --git a/test/language/statements/async-generator/await-as-identifier-reference.js b/test/language/statements/async-generator/await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..db2a97569aadb40dc3dd885186e889a35ae6431e
--- /dev/null
+++ b/test/language/statements/async-generator/await-as-identifier-reference.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference.case
+// - src/async-generators/syntax/async-declaration.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async generator Function declaration)
+esid: prod-AsyncGeneratorDeclaration
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorDeclaration:
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async function *gen() {
+  void await;
+}
diff --git a/test/language/statements/async-generator/await-as-label-identifier-escaped.js b/test/language/statements/async-generator/await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..9f5b2658e73268997f125b0c3abea2ff37747c0c
--- /dev/null
+++ b/test/language/statements/async-generator/await-as-label-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-declaration.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async generator Function declaration)
+esid: prod-AsyncGeneratorDeclaration
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorDeclaration:
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async function *gen() {
+  \u0061wait: ;
+}
diff --git a/test/language/statements/async-generator/await-as-label-identifier.js b/test/language/statements/async-generator/await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..f2eda8967e15348c3e0bf5d7958c3e3b77c65fea
--- /dev/null
+++ b/test/language/statements/async-generator/await-as-label-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier.case
+// - src/async-generators/syntax/async-declaration.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async generator Function declaration)
+esid: prod-AsyncGeneratorDeclaration
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorDeclaration:
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+async function *gen() {
+  await: ;
+}
diff --git a/test/language/statements/async-generator/yield-as-binding-identifier-escaped.js b/test/language/statements/async-generator/yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..ed14c504c2bf09827debbfc961caeeb3f689e4d8
--- /dev/null
+++ b/test/language/statements/async-generator/yield-as-binding-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-declaration.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async generator Function declaration)
+esid: prod-AsyncGeneratorDeclaration
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorDeclaration:
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+async function *gen() {
+  var yi\u0065ld;
+}
diff --git a/test/language/statements/async-generator/yield-as-binding-identifier.js b/test/language/statements/async-generator/yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..0629a150f929cd18b69d8329053eb2c709aa3c6b
--- /dev/null
+++ b/test/language/statements/async-generator/yield-as-binding-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier.case
+// - src/async-generators/syntax/async-declaration.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async generator Function declaration)
+esid: prod-AsyncGeneratorDeclaration
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorDeclaration:
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+async function *gen() {
+  var yield;
+}
diff --git a/test/language/statements/async-generator/yield-as-identifier-reference-escaped.js b/test/language/statements/async-generator/yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..a312035308e4464494da1f25d4e6c4d5b8f56016
--- /dev/null
+++ b/test/language/statements/async-generator/yield-as-identifier-reference-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-declaration.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async generator Function declaration)
+esid: prod-AsyncGeneratorDeclaration
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorDeclaration:
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+async function *gen() {
+  void yi\u0065ld;
+}
diff --git a/test/language/statements/async-generator/yield-as-identifier-reference.js b/test/language/statements/async-generator/yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..1dd814db891be7f68e908d115157cc0e6fee7cd9
--- /dev/null
+++ b/test/language/statements/async-generator/yield-as-identifier-reference.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference.case
+// - src/async-generators/syntax/async-declaration.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async generator Function declaration)
+esid: prod-AsyncGeneratorDeclaration
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorDeclaration:
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+async function *gen() {
+  void yield;
+}
diff --git a/test/language/statements/async-generator/yield-as-label-identifier-escaped.js b/test/language/statements/async-generator/yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..a5cdf45c6e7bb8b7534e233d925e7769f6ddcda3
--- /dev/null
+++ b/test/language/statements/async-generator/yield-as-label-identifier-escaped.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-declaration.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async generator Function declaration)
+esid: prod-AsyncGeneratorDeclaration
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorDeclaration:
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+async function *gen() {
+  yi\u0065ld: ;
+}
diff --git a/test/language/statements/async-generator/yield-as-label-identifier.js b/test/language/statements/async-generator/yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..4ad7ddadbfbbc33f521d90f3aecd0a3db165a713
--- /dev/null
+++ b/test/language/statements/async-generator/yield-as-label-identifier.js
@@ -0,0 +1,30 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier.case
+// - src/async-generators/syntax/async-declaration.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async generator Function declaration)
+esid: prod-AsyncGeneratorDeclaration
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    Async Generator Function Definitions
+
+    AsyncGeneratorDeclaration:
+      async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) {
+        AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+async function *gen() {
+  yield: ;
+}
diff --git a/test/language/statements/class/async-gen-method-await-as-binding-identifier-escaped.js b/test/language/statements/class/async-gen-method-await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..e598f160bfc9f97e8f9c1b2fec913a3a4e84d9db
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-await-as-binding-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-class-decl-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async Generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { async *gen() {
+    var \u0061wait;
+}}
diff --git a/test/language/statements/class/async-gen-method-await-as-binding-identifier.js b/test/language/statements/class/async-gen-method-await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..42eddb1a5c5048339c38353674591c4ce83011b3
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-await-as-binding-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier.case
+// - src/async-generators/syntax/async-class-decl-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async Generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { async *gen() {
+    var await;
+}}
diff --git a/test/language/statements/class/async-gen-method-await-as-identifier-reference-escaped.js b/test/language/statements/class/async-gen-method-await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..bb0a4dd6bb3c914a1cc8f12360ad5ae55d747111
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-await-as-identifier-reference-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-class-decl-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async Generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { async *gen() {
+    void \u0061wait;
+}}
diff --git a/test/language/statements/class/async-gen-method-await-as-identifier-reference.js b/test/language/statements/class/async-gen-method-await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..1db50d15150bc8544d3af4b9711c62da15e835c1
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-await-as-identifier-reference.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference.case
+// - src/async-generators/syntax/async-class-decl-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async Generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { async *gen() {
+    void await;
+}}
diff --git a/test/language/statements/class/async-gen-method-await-as-label-identifier-escaped.js b/test/language/statements/class/async-gen-method-await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..a2791ce5cf0b0e9bcdc3e70513bf1dac571a8e7e
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-await-as-label-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-class-decl-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async Generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { async *gen() {
+    \u0061wait: ;
+}}
diff --git a/test/language/statements/class/async-gen-method-await-as-label-identifier.js b/test/language/statements/class/async-gen-method-await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..3ffbbbaa30565658a1703c06807fcc2d0c01a4c7
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-await-as-label-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier.case
+// - src/async-generators/syntax/async-class-decl-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async Generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { async *gen() {
+    await: ;
+}}
diff --git a/test/language/statements/class/async-gen-method-static-await-as-binding-identifier-escaped.js b/test/language/statements/class/async-gen-method-static-await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..f1e4921c2cbcdcd00807f128cfa7d8150a7cd652
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-static-await-as-binding-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-class-decl-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static async generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { static async *gen() {
+    var \u0061wait;
+}}
diff --git a/test/language/statements/class/async-gen-method-static-await-as-binding-identifier.js b/test/language/statements/class/async-gen-method-static-await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..0f5e4f71da5dfafb36bc661279617d4497322c5d
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-static-await-as-binding-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-binding-identifier.case
+// - src/async-generators/syntax/async-class-decl-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static async generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { static async *gen() {
+    var await;
+}}
diff --git a/test/language/statements/class/async-gen-method-static-await-as-identifier-reference-escaped.js b/test/language/statements/class/async-gen-method-static-await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..7d06744382fc49d947f4888cf46e51a43b96875f
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-static-await-as-identifier-reference-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-class-decl-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static async generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { static async *gen() {
+    void \u0061wait;
+}}
diff --git a/test/language/statements/class/async-gen-method-static-await-as-identifier-reference.js b/test/language/statements/class/async-gen-method-static-await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..c7215a4f17a326be039cf8d08e96edcf44db94ec
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-static-await-as-identifier-reference.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-identifier-reference.case
+// - src/async-generators/syntax/async-class-decl-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static async generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { static async *gen() {
+    void await;
+}}
diff --git a/test/language/statements/class/async-gen-method-static-await-as-label-identifier-escaped.js b/test/language/statements/class/async-gen-method-static-await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..bfc87d739bb978f4de8971a2e7864a3e55c3a3ec
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-static-await-as-label-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-class-decl-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static async generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { static async *gen() {
+    \u0061wait: ;
+}}
diff --git a/test/language/statements/class/async-gen-method-static-await-as-label-identifier.js b/test/language/statements/class/async-gen-method-static-await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..61073be1a6cc173a192d07361fab5e8d753f4a3c
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-static-await-as-label-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/await-as-label-identifier.case
+// - src/async-generators/syntax/async-class-decl-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static async generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { static async *gen() {
+    await: ;
+}}
diff --git a/test/language/statements/class/async-gen-method-static-yield-as-binding-identifier-escaped.js b/test/language/statements/class/async-gen-method-static-yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..00bf839f007c04184fedaaae1af2d592c295f7eb
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-static-yield-as-binding-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-class-decl-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static async generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+class C { static async *gen() {
+    var yi\u0065ld;
+}}
diff --git a/test/language/statements/class/async-gen-method-static-yield-as-binding-identifier.js b/test/language/statements/class/async-gen-method-static-yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..74af046d681c32ac733a22e146191603ea2343f0
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-static-yield-as-binding-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier.case
+// - src/async-generators/syntax/async-class-decl-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static async generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+class C { static async *gen() {
+    var yield;
+}}
diff --git a/test/language/statements/class/async-gen-method-static-yield-as-identifier-reference-escaped.js b/test/language/statements/class/async-gen-method-static-yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..f9a4ba29cdba81fd8bff3a2fe5cd5df4ff474814
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-static-yield-as-identifier-reference-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-class-decl-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static async generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+class C { static async *gen() {
+    void yi\u0065ld;
+}}
diff --git a/test/language/statements/class/async-gen-method-static-yield-as-identifier-reference.js b/test/language/statements/class/async-gen-method-static-yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..15e62ca71b765cce22179ad128fde8b9d9736709
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-static-yield-as-identifier-reference.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference.case
+// - src/async-generators/syntax/async-class-decl-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static async generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+class C { static async *gen() {
+    void yield;
+}}
diff --git a/test/language/statements/class/async-gen-method-static-yield-as-label-identifier-escaped.js b/test/language/statements/class/async-gen-method-static-yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..f01b5c42bdff438cefa42b80e28af170c87549df
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-static-yield-as-label-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-class-decl-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static async generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+class C { static async *gen() {
+    yi\u0065ld: ;
+}}
diff --git a/test/language/statements/class/async-gen-method-static-yield-as-label-identifier.js b/test/language/statements/class/async-gen-method-static-yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..58fad7a3e6f91b309d91ce36da49027db9ba8f18
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-static-yield-as-label-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier.case
+// - src/async-generators/syntax/async-class-decl-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static async generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+class C { static async *gen() {
+    yield: ;
+}}
diff --git a/test/language/statements/class/async-gen-method-yield-as-binding-identifier-escaped.js b/test/language/statements/class/async-gen-method-yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..3909c9d142c900af38269c81726fc8a90647261c
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-yield-as-binding-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier-escaped.case
+// - src/async-generators/syntax/async-class-decl-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async Generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+class C { async *gen() {
+    var yi\u0065ld;
+}}
diff --git a/test/language/statements/class/async-gen-method-yield-as-binding-identifier.js b/test/language/statements/class/async-gen-method-yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..c66c3d39d356227374c1f5fa2a41b98bcdebc63e
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-yield-as-binding-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-binding-identifier.case
+// - src/async-generators/syntax/async-class-decl-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async Generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+class C { async *gen() {
+    var yield;
+}}
diff --git a/test/language/statements/class/async-gen-method-yield-as-identifier-reference-escaped.js b/test/language/statements/class/async-gen-method-yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..d1edabae37aea5e0a635c519323e781d251d6201
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-yield-as-identifier-reference-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference-escaped.case
+// - src/async-generators/syntax/async-class-decl-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async Generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+class C { async *gen() {
+    void yi\u0065ld;
+}}
diff --git a/test/language/statements/class/async-gen-method-yield-as-identifier-reference.js b/test/language/statements/class/async-gen-method-yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..df4677f97805053caf82c28e80307ad1ebd07d91
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-yield-as-identifier-reference.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-identifier-reference.case
+// - src/async-generators/syntax/async-class-decl-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async Generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+class C { async *gen() {
+    void yield;
+}}
diff --git a/test/language/statements/class/async-gen-method-yield-as-label-identifier-escaped.js b/test/language/statements/class/async-gen-method-yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..6bc3b5c601a9cf73431d31b8a37675ff61792a57
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-yield-as-label-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier-escaped.case
+// - src/async-generators/syntax/async-class-decl-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async Generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+class C { async *gen() {
+    yi\u0065ld: ;
+}}
diff --git a/test/language/statements/class/async-gen-method-yield-as-label-identifier.js b/test/language/statements/class/async-gen-method-yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..43e1542c4d794c5b8147623ed5668669f9821e86
--- /dev/null
+++ b/test/language/statements/class/async-gen-method-yield-as-label-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-generators/yield-as-label-identifier.case
+// - src/async-generators/syntax/async-class-decl-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async Generator method as a ClassDeclaration element)
+esid: prod-AsyncGeneratorMethod
+features: [async-iteration]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncGeneratorMethod
+
+    Async Generator Function Definitions
+
+    AsyncGeneratorMethod :
+      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+
+class C { async *gen() {
+    yield: ;
+}}
diff --git a/test/language/statements/class/async-method-await-as-binding-identifier-escaped.js b/test/language/statements/class/async-method-await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..82fe97a4de549e4dd41891bb15cf8a24c482680e
--- /dev/null
+++ b/test/language/statements/class/async-method-await-as-binding-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier-escaped.case
+// - src/async-functions/syntax/async-class-decl-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async method as a ClassDeclaration element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { async method() {
+    var \u0061wait;
+}}
diff --git a/test/language/statements/class/async-method-await-as-binding-identifier.js b/test/language/statements/class/async-method-await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..cec3fe4e562ae44413d421ba8bfda8316941b91a
--- /dev/null
+++ b/test/language/statements/class/async-method-await-as-binding-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier.case
+// - src/async-functions/syntax/async-class-decl-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Async method as a ClassDeclaration element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { async method() {
+    var await;
+}}
diff --git a/test/language/statements/class/async-method-await-as-identifier-reference-escaped.js b/test/language/statements/class/async-method-await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..0a7e3038ddabfb332b174d97f77cb279d5b2c222
--- /dev/null
+++ b/test/language/statements/class/async-method-await-as-identifier-reference-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference-escaped.case
+// - src/async-functions/syntax/async-class-decl-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async method as a ClassDeclaration element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { async method() {
+    void \u0061wait;
+}}
diff --git a/test/language/statements/class/async-method-await-as-identifier-reference.js b/test/language/statements/class/async-method-await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..673df6aea72c7eda19c5fcad70dc33cb3c8316f6
--- /dev/null
+++ b/test/language/statements/class/async-method-await-as-identifier-reference.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference.case
+// - src/async-functions/syntax/async-class-decl-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Async method as a ClassDeclaration element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { async method() {
+    void await;
+}}
diff --git a/test/language/statements/class/async-method-await-as-label-identifier-escaped.js b/test/language/statements/class/async-method-await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..eacea2bfff74296d6f31009672924570be5c4c6b
--- /dev/null
+++ b/test/language/statements/class/async-method-await-as-label-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier-escaped.case
+// - src/async-functions/syntax/async-class-decl-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async method as a ClassDeclaration element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { async method() {
+    \u0061wait: ;
+}}
diff --git a/test/language/statements/class/async-method-await-as-label-identifier.js b/test/language/statements/class/async-method-await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..10c9f4899223f5d06cfb8999754df6c2dba6c097
--- /dev/null
+++ b/test/language/statements/class/async-method-await-as-label-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier.case
+// - src/async-functions/syntax/async-class-decl-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Async method as a ClassDeclaration element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { async method() {
+    await: ;
+}}
diff --git a/test/language/statements/class/async-method-static-await-as-binding-identifier-escaped.js b/test/language/statements/class/async-method-static-await-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..475b1826605a0f574653f5d841433c3d1f359236
--- /dev/null
+++ b/test/language/statements/class/async-method-static-await-as-binding-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier-escaped.case
+// - src/async-functions/syntax/async-class-decl-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static async method as a ClassDeclaration element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { static async method() {
+    var \u0061wait;
+}}
diff --git a/test/language/statements/class/async-method-static-await-as-binding-identifier.js b/test/language/statements/class/async-method-static-await-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..86b620d2e6690fa73c2f96d4a23e3432d4645f20
--- /dev/null
+++ b/test/language/statements/class/async-method-static-await-as-binding-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-binding-identifier.case
+// - src/async-functions/syntax/async-class-decl-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static async method as a ClassDeclaration element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { static async method() {
+    var await;
+}}
diff --git a/test/language/statements/class/async-method-static-await-as-identifier-reference-escaped.js b/test/language/statements/class/async-method-static-await-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..b1e7d923c12eb163914866211bf180f8cc555bff
--- /dev/null
+++ b/test/language/statements/class/async-method-static-await-as-identifier-reference-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference-escaped.case
+// - src/async-functions/syntax/async-class-decl-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static async method as a ClassDeclaration element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { static async method() {
+    void \u0061wait;
+}}
diff --git a/test/language/statements/class/async-method-static-await-as-identifier-reference.js b/test/language/statements/class/async-method-static-await-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..13760e2378b4456793991354843eb6b106992637
--- /dev/null
+++ b/test/language/statements/class/async-method-static-await-as-identifier-reference.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-identifier-reference.case
+// - src/async-functions/syntax/async-class-decl-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static async method as a ClassDeclaration element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { static async method() {
+    void await;
+}}
diff --git a/test/language/statements/class/async-method-static-await-as-label-identifier-escaped.js b/test/language/statements/class/async-method-static-await-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..f8c08a4b1516919717093b448105cbd123217d3a
--- /dev/null
+++ b/test/language/statements/class/async-method-static-await-as-label-identifier-escaped.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier-escaped.case
+// - src/async-functions/syntax/async-class-decl-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static async method as a ClassDeclaration element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { static async method() {
+    \u0061wait: ;
+}}
diff --git a/test/language/statements/class/async-method-static-await-as-label-identifier.js b/test/language/statements/class/async-method-static-await-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..85f00de3c6f814d10e9c059125462557d6f905bc
--- /dev/null
+++ b/test/language/statements/class/async-method-static-await-as-label-identifier.js
@@ -0,0 +1,35 @@
+// This file was procedurally generated from the following sources:
+// - src/async-functions/await-as-label-identifier.case
+// - src/async-functions/syntax/async-class-decl-static-method.template
+/*---
+description: await is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static async method as a ClassDeclaration element)
+esid: prod-AsyncMethod
+features: [async-functions]
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      AsyncMethod
+
+    Async Function Definitions
+
+    AsyncMethod :
+      async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody }
+
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Await] parameter and
+    StringValue of Identifier is "await".
+
+---*/
+
+
+class C { static async method() {
+    await: ;
+}}
diff --git a/test/language/statements/class/gen-method-static-yield-as-binding-identifier-escaped.js b/test/language/statements/class/gen-method-static-yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..0c0bcf46523c9e7bdb9eaf300eea237d388bc1a1
--- /dev/null
+++ b/test/language/statements/class/gen-method-static-yield-as-binding-identifier-escaped.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier-escaped.case
+// - src/generators/syntax/class-decl-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static generator method as a ClassDeclaration element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+class C {static *gen() {
+    var yi\u0065ld;
+}}
diff --git a/test/language/statements/class/gen-method-static-yield-as-binding-identifier.js b/test/language/statements/class/gen-method-static-yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..3ad26c41921ed1d2519d85cf475681332f2a36db
--- /dev/null
+++ b/test/language/statements/class/gen-method-static-yield-as-binding-identifier.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier.case
+// - src/generators/syntax/class-decl-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Static generator method as a ClassDeclaration element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+class C {static *gen() {
+    var yield;
+}}
diff --git a/test/language/statements/class/gen-method-static-yield-as-identifier-reference-escaped.js b/test/language/statements/class/gen-method-static-yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..b8efecd9bfdacf676e65a097212799e6b0cb9389
--- /dev/null
+++ b/test/language/statements/class/gen-method-static-yield-as-identifier-reference-escaped.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference-escaped.case
+// - src/generators/syntax/class-decl-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static generator method as a ClassDeclaration element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+class C {static *gen() {
+    void yi\u0065ld;
+}}
diff --git a/test/language/statements/class/gen-method-static-yield-as-identifier-reference.js b/test/language/statements/class/gen-method-static-yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..1ca9958a8704a387f38c08da1c148cb0796f582d
--- /dev/null
+++ b/test/language/statements/class/gen-method-static-yield-as-identifier-reference.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference.case
+// - src/generators/syntax/class-decl-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Static generator method as a ClassDeclaration element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+class C {static *gen() {
+    void yield;
+}}
diff --git a/test/language/statements/class/gen-method-static-yield-as-label-identifier-escaped.js b/test/language/statements/class/gen-method-static-yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..0803753fcd4a7c6c138b757ce06bb7b0152c1569
--- /dev/null
+++ b/test/language/statements/class/gen-method-static-yield-as-label-identifier-escaped.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier-escaped.case
+// - src/generators/syntax/class-decl-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static generator method as a ClassDeclaration element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+class C {static *gen() {
+    yi\u0065ld: ;
+}}
diff --git a/test/language/statements/class/gen-method-static-yield-as-label-identifier.js b/test/language/statements/class/gen-method-static-yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..332dfe8ffa2c76a8682d5916334484fa93c07936
--- /dev/null
+++ b/test/language/statements/class/gen-method-static-yield-as-label-identifier.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier.case
+// - src/generators/syntax/class-decl-static-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Static generator method as a ClassDeclaration element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      static MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+class C {static *gen() {
+    yield: ;
+}}
diff --git a/test/language/statements/class/gen-method-yield-as-binding-identifier-escaped.js b/test/language/statements/class/gen-method-yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..26bebf430f2f94bf8544629bf6b9564b88108bb0
--- /dev/null
+++ b/test/language/statements/class/gen-method-yield-as-binding-identifier-escaped.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier-escaped.case
+// - src/generators/syntax/class-decl-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Generator method as a ClassDeclaration element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+class C { *gen() {
+    var yi\u0065ld;
+}}
diff --git a/test/language/statements/class/gen-method-yield-as-binding-identifier.js b/test/language/statements/class/gen-method-yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..01da0e7eec0dd4df6648329dea6c754c34ad6e32
--- /dev/null
+++ b/test/language/statements/class/gen-method-yield-as-binding-identifier.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier.case
+// - src/generators/syntax/class-decl-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Generator method as a ClassDeclaration element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+class C { *gen() {
+    var yield;
+}}
diff --git a/test/language/statements/class/gen-method-yield-as-identifier-reference-escaped.js b/test/language/statements/class/gen-method-yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..517a0127a6ca6d68cb6926304234ba36e88416fd
--- /dev/null
+++ b/test/language/statements/class/gen-method-yield-as-identifier-reference-escaped.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference-escaped.case
+// - src/generators/syntax/class-decl-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Generator method as a ClassDeclaration element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+class C { *gen() {
+    void yi\u0065ld;
+}}
diff --git a/test/language/statements/class/gen-method-yield-as-identifier-reference.js b/test/language/statements/class/gen-method-yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..436d7bc26be118fec53624c827f0ab557d6ef808
--- /dev/null
+++ b/test/language/statements/class/gen-method-yield-as-identifier-reference.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference.case
+// - src/generators/syntax/class-decl-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Generator method as a ClassDeclaration element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+class C { *gen() {
+    void yield;
+}}
diff --git a/test/language/statements/class/gen-method-yield-as-label-identifier-escaped.js b/test/language/statements/class/gen-method-yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..14c1b144964b13f931a48071f16a0fa88fc377df
--- /dev/null
+++ b/test/language/statements/class/gen-method-yield-as-label-identifier-escaped.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier-escaped.case
+// - src/generators/syntax/class-decl-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Generator method as a ClassDeclaration element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+class C { *gen() {
+    yi\u0065ld: ;
+}}
diff --git a/test/language/statements/class/gen-method-yield-as-label-identifier.js b/test/language/statements/class/gen-method-yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..877a20b70243d2399cb7c288786e6c17fa2aff19
--- /dev/null
+++ b/test/language/statements/class/gen-method-yield-as-label-identifier.js
@@ -0,0 +1,32 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier.case
+// - src/generators/syntax/class-decl-method.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Generator method as a ClassDeclaration element)
+esid: prod-GeneratorMethod
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    ClassElement :
+      MethodDefinition
+
+    MethodDefinition :
+      GeneratorMethod
+
+    14.4 Generator Function Definitions
+
+    GeneratorMethod :
+      * PropertyName ( UniqueFormalParameters ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+class C { *gen() {
+    yield: ;
+}}
diff --git a/test/language/statements/generators/yield-as-binding-identifier-escaped.js b/test/language/statements/generators/yield-as-binding-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..e1688b4418fda56bcd47e98a6a9982c548c8f9d5
--- /dev/null
+++ b/test/language/statements/generators/yield-as-binding-identifier-escaped.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier-escaped.case
+// - src/generators/syntax/declaration.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Generator Function declaration)
+esid: prod-GeneratorDeclaration
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorDeclaration :
+      function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+function *gen() {
+  var yi\u0065ld;
+}
diff --git a/test/language/statements/generators/yield-as-binding-identifier.js b/test/language/statements/generators/yield-as-binding-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..9b96f8de86372ce56cc6e89603a944421806dfad
--- /dev/null
+++ b/test/language/statements/generators/yield-as-binding-identifier.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-binding-identifier.case
+// - src/generators/syntax/declaration.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a binding identifier. (Generator Function declaration)
+esid: prod-GeneratorDeclaration
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorDeclaration :
+      function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
+
+    BindingIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+function *gen() {
+  var yield;
+}
diff --git a/test/language/statements/generators/yield-as-identifier-reference-escaped.js b/test/language/statements/generators/yield-as-identifier-reference-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..1627f627d4745ba5be68b81b354f33330ff3c5df
--- /dev/null
+++ b/test/language/statements/generators/yield-as-identifier-reference-escaped.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference-escaped.case
+// - src/generators/syntax/declaration.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Generator Function declaration)
+esid: prod-GeneratorDeclaration
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorDeclaration :
+      function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+function *gen() {
+  void yi\u0065ld;
+}
diff --git a/test/language/statements/generators/yield-as-identifier-reference.js b/test/language/statements/generators/yield-as-identifier-reference.js
new file mode 100644
index 0000000000000000000000000000000000000000..12b70c619fe4662613a2dafa7ac1657e978336ad
--- /dev/null
+++ b/test/language/statements/generators/yield-as-identifier-reference.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-identifier-reference.case
+// - src/generators/syntax/declaration.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as an identifier reference. (Generator Function declaration)
+esid: prod-GeneratorDeclaration
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorDeclaration :
+      function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
+
+    IdentifierReference : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+function *gen() {
+  void yield;
+}
diff --git a/test/language/statements/generators/yield-as-label-identifier-escaped.js b/test/language/statements/generators/yield-as-label-identifier-escaped.js
new file mode 100644
index 0000000000000000000000000000000000000000..8687c362c51fe308a3b5ddf01e28cb22febb6141
--- /dev/null
+++ b/test/language/statements/generators/yield-as-label-identifier-escaped.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier-escaped.case
+// - src/generators/syntax/declaration.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Generator Function declaration)
+esid: prod-GeneratorDeclaration
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorDeclaration :
+      function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+function *gen() {
+  yi\u0065ld: ;
+}
diff --git a/test/language/statements/generators/yield-as-label-identifier.js b/test/language/statements/generators/yield-as-label-identifier.js
new file mode 100644
index 0000000000000000000000000000000000000000..e2cc7514dc41cd644cc2e2433f7e235656a29b1a
--- /dev/null
+++ b/test/language/statements/generators/yield-as-label-identifier.js
@@ -0,0 +1,26 @@
+// This file was procedurally generated from the following sources:
+// - src/generators/yield-as-label-identifier.case
+// - src/generators/syntax/declaration.template
+/*---
+description: yield is a reserved keyword within generator function bodies and may not be used as a label identifier. (Generator Function declaration)
+esid: prod-GeneratorDeclaration
+flags: [generated]
+negative:
+  phase: early
+  type: SyntaxError
+info: |
+    14.4 Generator Function Definitions
+
+    GeneratorDeclaration :
+      function * BindingIdentifier ( FormalParameters ) { GeneratorBody }
+
+    LabelIdentifier : Identifier
+
+    It is a Syntax Error if this production has a [Yield] parameter and
+    StringValue of Identifier is "yield".
+
+---*/
+
+function *gen() {
+  yield: ;
+}