diff --git a/test/language/statements/for-await-of/dstr-array-elem-init-assignment.js b/test/language/statements/for-await-of/dstr-array-elem-init-assignment.js
deleted file mode 100644
index 4ec79f5c34a279f7423ffcc6d8275468ed39a010..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-init-assignment.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-init-assignment.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: If the Initializer is present and v is undefined, the Initializer should be evaluated and the result assigned to the target reference. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var v2, vNull, vHole, vUndefined, vOob;
-
-var counter = 0;
-
-async function fn() {
-  for await ([v2 = 10, vNull = 11, vHole = 12, vUndefined = 13, vOob = 14] of [[2, null, , undefined]]) {
-    assert.sameValue(v2, 2);
-    assert.sameValue(vNull, null);
-    assert.sameValue(vHole, 12);
-    assert.sameValue(vUndefined, 13);
-    assert.sameValue(vOob, 14);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-init-evaluation.js b/test/language/statements/for-await-of/dstr-array-elem-init-evaluation.js
deleted file mode 100644
index 1b76dff98d7cc86c4a2883a585dc2088ad8739da..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-init-evaluation.js
+++ /dev/null
@@ -1,42 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-init-evaluation.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: The Initializer should only be evaluated if v is undefined. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var flag1 = false, flag2 = false;
-var _;
-
-var counter = 0;
-
-async function fn() {
-  for await ([ _ = flag1 = true, _ = flag2 = true ] of [[14]]) {
-    assert.sameValue(flag1, false);
-    assert.sameValue(flag2, true);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-init-fn-name-arrow.js b/test/language/statements/for-await-of/dstr-array-elem-init-fn-name-arrow.js
deleted file mode 100644
index fea2d852e29b4a8a98a1ff7abfd060dc111654f9..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-init-fn-name-arrow.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-init-fn-name-arrow.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Assignment of function `name` attribute (ArrowFunction) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    AssignmentElement[Yield] : DestructuringAssignmentTarget Initializeropt
-    [...] 7. If Initializer is present and value is undefined and
-       IsAnonymousFunctionDefinition(Initializer) and IsIdentifierRef of
-       DestructuringAssignmentTarget are both true, then
-       a. Let hasNameProperty be HasOwnProperty(v, "name").
-       b. ReturnIfAbrupt(hasNameProperty).
-       c. If hasNameProperty is false, perform SetFunctionName(v,
-          GetReferencedName(lref)).
-
----*/
-var arrow;
-
-var counter = 0;
-
-async function fn() {
-  for await ([ arrow = () => {} ] of [[]]) {
-    assert.sameValue(arrow.name, 'arrow');
-    verifyNotEnumerable(arrow, 'name');
-    verifyNotWritable(arrow, 'name');
-    verifyConfigurable(arrow, 'name');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-init-fn-name-class.js b/test/language/statements/for-await-of/dstr-array-elem-init-fn-name-class.js
deleted file mode 100644
index 37525edcd44ce0068119634652e97afce9c382b3..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-init-fn-name-class.js
+++ /dev/null
@@ -1,57 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-init-fn-name-class.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Assignment of function `name` attribute (ClassExpression) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [class, destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    AssignmentElement[Yield] : DestructuringAssignmentTarget Initializeropt
-    [...] 7. If Initializer is present and value is undefined and
-       IsAnonymousFunctionDefinition(Initializer) and IsIdentifierRef of
-       DestructuringAssignmentTarget are both true, then
-       a. Let hasNameProperty be HasOwnProperty(v, "name").
-       b. ReturnIfAbrupt(hasNameProperty).
-       c. If hasNameProperty is false, perform SetFunctionName(v,
-          GetReferencedName(lref)).
-
----*/
-var xCls, cls, xCls2;
-
-var counter = 0;
-
-async function fn() {
-  for await ([ xCls = class x {}, cls = class {}, xCls2 = class { static name() {} } ] of [[]]) {
-    assert(xCls.name !== 'xCls');
-    assert(xCls2.name !== 'xCls2');
-
-    assert.sameValue(cls.name, 'cls');
-    verifyNotEnumerable(cls, 'name');
-    verifyNotWritable(cls, 'name');
-    verifyConfigurable(cls, 'name');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-init-fn-name-cover.js b/test/language/statements/for-await-of/dstr-array-elem-init-fn-name-cover.js
deleted file mode 100644
index fa0fa636c8466c79a548c07d70c118b30767929a..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-init-fn-name-cover.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-init-fn-name-cover.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Assignment of function `name` attribute (CoverParenthesizedExpression) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    AssignmentElement[Yield] : DestructuringAssignmentTarget Initializeropt
-    [...] 7. If Initializer is present and value is undefined and
-       IsAnonymousFunctionDefinition(Initializer) and IsIdentifierRef of
-       DestructuringAssignmentTarget are both true, then
-       a. Let hasNameProperty be HasOwnProperty(v, "name").
-       b. ReturnIfAbrupt(hasNameProperty).
-       c. If hasNameProperty is false, perform SetFunctionName(v,
-          GetReferencedName(lref)).
-
----*/
-var xCover, cover;
-
-var counter = 0;
-
-async function fn() {
-  for await ([ xCover = (0, function() {}), cover = (function() {}) ] of [[]]) {
-    assert(xCover.name !== 'xCover');
-
-    assert.sameValue(cover.name, 'cover');
-    verifyNotEnumerable(cover, 'name');
-    verifyNotWritable(cover, 'name');
-    verifyConfigurable(cover, 'name');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-init-fn-name-fn.js b/test/language/statements/for-await-of/dstr-array-elem-init-fn-name-fn.js
deleted file mode 100644
index 429355375d74e9afc87a8f4bc64cdbaa293a9844..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-init-fn-name-fn.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-init-fn-name-fn.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Assignment of function `name` attribute (FunctionExpression) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [class, destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    AssignmentElement[Yield] : DestructuringAssignmentTarget Initializeropt
-    [...] 7. If Initializer is present and value is undefined and
-       IsAnonymousFunctionDefinition(Initializer) and IsIdentifierRef of
-       DestructuringAssignmentTarget are both true, then
-       a. Let hasNameProperty be HasOwnProperty(v, "name").
-       b. ReturnIfAbrupt(hasNameProperty).
-       c. If hasNameProperty is false, perform SetFunctionName(v,
-          GetReferencedName(lref)).
-
----*/
-var xFn, fn;
-
-var counter = 0;
-
-async function fn() {
-  for await ([ xFn = function x() {}, fn = function() {} ] of [[]]) {
-    assert(xFn.name !== 'xFn');
-
-    assert.sameValue(fn.name, 'fn');
-    verifyNotEnumerable(fn, 'name');
-    verifyNotWritable(fn, 'name');
-    verifyConfigurable(fn, 'name');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-init-fn-name-gen.js b/test/language/statements/for-await-of/dstr-array-elem-init-fn-name-gen.js
deleted file mode 100644
index 4bfd1114657f0bd418aa899d6dab42a15e9fe286..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-init-fn-name-gen.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-init-fn-name-gen.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Assignment of function `name` attribute (GeneratorExpression) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    AssignmentElement[Yield] : DestructuringAssignmentTarget Initializeropt
-    [...] 7. If Initializer is present and value is undefined and
-       IsAnonymousFunctionDefinition(Initializer) and IsIdentifierRef of
-       DestructuringAssignmentTarget are both true, then
-       a. Let hasNameProperty be HasOwnProperty(v, "name").
-       b. ReturnIfAbrupt(hasNameProperty).
-       c. If hasNameProperty is false, perform SetFunctionName(v,
-          GetReferencedName(lref)).
-
----*/
-var xGen, gen;
-
-var counter = 0;
-
-async function fn() {
-  for await ([ xGen = function* x() {}, gen = function*() {} ] of [[]]) {
-    assert.notSameValue(xGen.name, 'xGen');
-
-    assert.sameValue(gen.name, 'gen');
-    verifyNotEnumerable(gen, 'name');
-    verifyNotWritable(gen, 'name');
-    verifyConfigurable(gen, 'name');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-init-in.js b/test/language/statements/for-await-of/dstr-array-elem-init-in.js
deleted file mode 100644
index 2c35d84b243e893efc3867607aa6ee384842ff92..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-init-in.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-init-in.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: The Initializer in an AssignmentElement may be an `in` expression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ([ x = 'x' in {} ] of [[]]) {
-    assert.sameValue(x, false);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-init-order.js b/test/language/statements/for-await-of/dstr-array-elem-init-order.js
deleted file mode 100644
index e145fda73d8e1c2623b4de948efbed4ec8ffad2d..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-init-order.js
+++ /dev/null
@@ -1,43 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-init-order.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Initializer values should be assigned in left-to-right order. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = 0;
-var a, b;
-
-var counter = 0;
-
-async function fn() {
-  for await ([ a = x += 1, b = x *= 2 ] of [[]]) {
-    assert.sameValue(a, 1);
-    assert.sameValue(b, 2);
-    assert.sameValue(x, 2);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-init-simple-no-strict.js b/test/language/statements/for-await-of/dstr-array-elem-init-simple-no-strict.js
deleted file mode 100644
index 91d88807a277f583c96df09276bdc2d71fba8019..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-init-simple-no-strict.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-init-simple-no-strict.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Identifiers that appear as the DestructuringAssignmentTarget in an AssignmentElement should take on the iterated value corresponding to their position in the ArrayAssignmentPattern. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var argument, eval;
-
-var counter = 0;
-
-async function fn() {
-  for await ([arguments = 4, eval = 5] of [[]]) {
-    assert.sameValue(arguments, 4);
-    assert.sameValue(eval, 5);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-init-yield-expr.js b/test/language/statements/for-await-of/dstr-array-elem-init-yield-expr.js
deleted file mode 100644
index 0b967873395470037cfaf32cce4f72b142734221..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-init-yield-expr.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-init-yield-expr.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the Initializer of an AssignmentElement within a generator function body, it behaves as a YieldExpression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var value = [];
-var iterationResult, iter, x;
-iter = (function*() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([ x = yield ] of [[]]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-})();
-
-iterationResult = iter.next();
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, false);
-assert.sameValue(x, undefined);
-
-iterationResult = iter.next(86);
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, true);
-assert.sameValue(x, 86);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-init-yield-ident-valid.js b/test/language/statements/for-await-of/dstr-array-elem-init-yield-ident-valid.js
deleted file mode 100644
index cccf1aec0ad48676caf94dd2ff3c6ba85236ebda..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-init-yield-ident-valid.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-init-yield-ident-valid.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the Initializer of an AssignmentElement outside of a generator function body, it behaves as an IdentifierReference. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var yield = 4;
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ([ x = yield ] of [[]]) {
-    assert.sameValue(x, 4);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-iter-nrml-close-skip.js b/test/language/statements/for-await-of/dstr-array-elem-iter-nrml-close-skip.js
deleted file mode 100644
index b891fef4f681a9974ec52f53abf8006965fa6590..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-iter-nrml-close-skip.js
+++ /dev/null
@@ -1,64 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-iter-nrml-close-skip.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is not called when assignment evaluation has exhausted the iterator (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern : [ AssignmentElementList ]
-
-    [...]
-    5. If iteratorRecord.[[done]] is false, return IteratorClose(iterator, result).
-    6. Return result.
-
----*/
-var nextCount = 0;
-var returnCount = 0;
-var _;
-var iterable = {};
-var iterator = {
-  next: function() {
-    nextCount += 1;
-    return { done: true };
-  },
-  return: function() {
-    returnCount += 1;
-    return {};
-  }
-};
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-var counter = 0;
-
-async function fn() {
-  for await ([ _ ] of [iterable]) {
-    assert.sameValue(nextCount, 1);
-    assert.sameValue(returnCount, 0);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-iter-nrml-close.js b/test/language/statements/for-await-of/dstr-array-elem-iter-nrml-close.js
deleted file mode 100644
index b73afb2079e01b9a0cdd15f509902f620aca3bc8..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-iter-nrml-close.js
+++ /dev/null
@@ -1,80 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-iter-nrml-close.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is called when assignment evaluation has not exhausted the iterator (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern : [ AssignmentElementList ]
-
-    [...]
-    5. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       result).
-    6. Return result.
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    [...]
-
----*/
-var nextCount = 0;
-var returnCount = 0;
-var thisValue = null;
-var args = null;
-var _;
-var iterable = {};
-var iterator = {
-  next: function() {
-    nextCount += 1;
-    // Set an upper-bound to limit unnecessary iteration in non-conformant
-    // implementations
-    return { done: nextCount > 10 };
-  },
-  return: function() {
-    returnCount += 1;
-    thisValue = this;
-    args = arguments;
-    return {};
-  }
-};
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-var counter = 0;
-
-async function fn() {
-  for await ([ _ ] of [iterable]) {
-    assert.sameValue(nextCount, 1);
-    assert.sameValue(returnCount, 1);
-    assert.sameValue(thisValue, iterator, 'correct `this` value');
-    assert(!!args, 'arguments object provided');
-    assert.sameValue(args.length, 0, 'zero arguments specified');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-iter-rtrn-close-err.js b/test/language/statements/for-await-of/dstr-array-elem-iter-rtrn-close-err.js
deleted file mode 100644
index 18efa99076c0709733d8f43365fe0bf55c35d008..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-iter-rtrn-close-err.js
+++ /dev/null
@@ -1,79 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-iter-rtrn-close-err.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is called when reference evaluation produces a "return" completion (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern : [ AssignmentElementList ]
-
-    [...]
-    5. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       result).
-    6. Return result.
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    7. If completion.[[type]] is throw, return Completion(completion).
-    8. If innerResult.[[type]] is throw, return Completion(innerResult).
-
----*/
-var returnCount = 0;
-var unreachable = 0;
-var iterable = {};
-var iterator = {
-  return: function() {
-    returnCount += 1;
-    throw new Test262Error();
-  }
-};
-var iter;
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-function* g() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([ {}[ yield ] ] of [iterable]) {
-    unreachable += 1;
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}
-iter = g();
-iter.next();
-assert.throws(Test262Error, function() {
-  iter.return();
-});
-
-assert.sameValue(returnCount, 1);
-assert.sameValue(unreachable, 0, 'Unreachable statement was not executed');
diff --git a/test/language/statements/for-await-of/dstr-array-elem-iter-rtrn-close-null.js b/test/language/statements/for-await-of/dstr-array-elem-iter-rtrn-close-null.js
deleted file mode 100644
index ef43fceeee189abddcc39f81e81a442160f59ae2..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-iter-rtrn-close-null.js
+++ /dev/null
@@ -1,76 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-iter-rtrn-close-null.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose throws a TypeError when `return` returns a non-Object value (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern : [ AssignmentElementList ]
-
-    [...]
-    5. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       result).
-    6. Return result.
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    7. If completion.[[type]] is throw, return Completion(completion).
-    8. If innerResult.[[type]] is throw, return Completion(innerResult).
-    9. If Type(innerResult.[[value]]) is not Object, throw a TypeError
-       exception.
-
----*/
-var iterable = {};
-var iterator = {
-  return: function() {
-    return null;
-  }
-};
-var iter;
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-function* g() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([ {}[yield] ] of [iterable]) {
-    unreachable += 1;
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}
-
-iter = g();
-iter.next();
-
-assert.throws(TypeError, function() {
-  iter.return();
-});
diff --git a/test/language/statements/for-await-of/dstr-array-elem-iter-rtrn-close.js b/test/language/statements/for-await-of/dstr-array-elem-iter-rtrn-close.js
deleted file mode 100644
index 303d64a37f32ae79202d7c63b0453b9db5585be2..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-iter-rtrn-close.js
+++ /dev/null
@@ -1,86 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-iter-rtrn-close.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is called when reference evaluation produces a "return" completion (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern : [ AssignmentElementList ]
-
-    [...]
-    5. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       result).
-    6. Return result.
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    7. If completion.[[type]] is throw, return Completion(completion).
-    8. If innerResult.[[type]] is throw, return Completion(innerResult).
-
----*/
-var returnCount = 0;
-var unreachable = 0;
-var thisValue = null;
-var args = null;
-var iterable = {};
-var iterator = {
-  return: function() {
-    returnCount += 1;
-    thisValue = this;
-    args = arguments;
-    return {};
-  }
-};
-var iter, result;
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-function* g() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([ {}[yield] ] of [iterable]) {
-    unreachable += 1;
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}
-iter = g();
-iter.next();
-result = iter.return(777);
-
-assert.sameValue(returnCount, 1);
-assert.sameValue(unreachable, 0, 'Unreachable statement was not executed');
-assert.sameValue(result.value, 777);
-assert(result.done, 'Iterator correctly closed');
-assert.sameValue(thisValue, iterator, 'correct `this` value');
-assert(!!args, 'arguments object provided');
-assert.sameValue(args.length, 0, 'zero arguments specified');
diff --git a/test/language/statements/for-await-of/dstr-array-elem-nested-array-yield-expr.js b/test/language/statements/for-await-of/dstr-array-elem-nested-array-yield-expr.js
deleted file mode 100644
index 9ad3e282be29996c54075451f606ea3721bbc44f..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-nested-array-yield-expr.js
+++ /dev/null
@@ -1,58 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-nested-array-yield-expr.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the DestructuringAssignmentTarget of a nested destructuring assignment and within a generator function body, it behaves as a YieldExpression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var value = [[22]];
-var x = {};
-var iterationResult, iter;
-
-iter = (function*() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([[x[yield]]] of [value]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}());
-
-iterationResult = iter.next();
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, false);
-assert.sameValue(x.prop, undefined);
-
-iterationResult = iter.next('prop');
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, true);
-assert.sameValue(x.prop, 22);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-nested-array-yield-ident-valid.js b/test/language/statements/for-await-of/dstr-array-elem-nested-array-yield-ident-valid.js
deleted file mode 100644
index e11b2b4c6c6de99df593d2b92e8bd4666d9443b7..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-nested-array-yield-ident-valid.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-nested-array-yield-ident-valid.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the DestructuringAssignmentTarget of a nested destructuring assignment outside of strict mode, it behaves as an IdentifierReference. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var yield = 'prop';
-var x = {};
-
-var counter = 0;
-
-async function fn() {
-  for await ([[x[yield]]] of [[[22]]]) {
-    assert.sameValue(x.prop, 22);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-nested-array.js b/test/language/statements/for-await-of/dstr-array-elem-nested-array.js
deleted file mode 100644
index d6b92ee4792d096a83b8c34d445ffc75a83561a3..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-nested-array.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-nested-array.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an array literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ([[x]] of [[[1]]]) {
-    assert.sameValue(x, 1);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-nested-obj-yield-expr.js b/test/language/statements/for-await-of/dstr-array-elem-nested-obj-yield-expr.js
deleted file mode 100644
index 2c33ed58e358feb27338d4852f31561191edc82c..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-nested-obj-yield-expr.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-nested-obj-yield-expr.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the Initializer of a nested destructuring assignment and within a generator function body, it behaves as a YieldExpression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var iterationResult, iter, x;
-
-iter = (function*() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([{ x = yield }] of [[{}]]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}());
-
-iterationResult = iter.next();
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, false);
-assert.sameValue(x, undefined);
-
-iterationResult = iter.next(4);
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, true);
-assert.sameValue(x, 4);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-nested-obj-yield-ident-valid.js b/test/language/statements/for-await-of/dstr-array-elem-nested-obj-yield-ident-valid.js
deleted file mode 100644
index d503e10ee170d1e28631ca6fa2e9e5b83d8ea74a..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-nested-obj-yield-ident-valid.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-nested-obj-yield-ident-valid.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the Initializer of a nested destructuring assignment outside of a generator function body, it behaves as an IdentifierReference. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var yield = 2;
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ([{ x = yield }] of [[{}]]) {
-    assert.sameValue(x, 2);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-nested-obj.js b/test/language/statements/for-await-of/dstr-array-elem-nested-obj.js
deleted file mode 100644
index bd47dba4fdd76c63512ed94510862c896fad6671..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-nested-obj.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-nested-obj.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an object literal, it should be parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ([{ x }] of [[{ x: 2 }]]) {
-    assert.sameValue(x, 2);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-put-prop-ref-no-get.js b/test/language/statements/for-await-of/dstr-array-elem-put-prop-ref-no-get.js
deleted file mode 100644
index 6d1aad896f2fff98dab914929bad5724c5a2f7cb..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-put-prop-ref-no-get.js
+++ /dev/null
@@ -1,48 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-put-prop-ref-no-get.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: If the DestructuringAssignmentTarget of an AssignmentElement is a PropertyReference, it should not be evaluated. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x, setValue;
-x = {
-  get y() {
-    $ERROR('The property should not be accessed.');
-  },
-  set y(val) {
-    setValue = val;
-  }
-};
-
-var counter = 0;
-
-async function fn() {
-  for await ([x.y] of [[23]]) {
-    assert.sameValue(setValue, 23);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-put-prop-ref.js b/test/language/statements/for-await-of/dstr-array-elem-put-prop-ref.js
deleted file mode 100644
index aa72ff286bc7346280f1c20526536ce0685d20ae..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-put-prop-ref.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-put-prop-ref.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: The DestructuringAssignmentTarget of an AssignmentElement may be a PropertyReference. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = {};
-
-var counter = 0;
-
-async function fn() {
-  for await ([x.y] of [[4]]) {
-    assert.sameValue(x.y, 4);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-put-unresolvable-no-strict.js b/test/language/statements/for-await-of/dstr-array-elem-put-unresolvable-no-strict.js
deleted file mode 100644
index 256dcb8869e828474add43478c5df05df53351a0..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-put-unresolvable-no-strict.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-put-unresolvable-no-strict.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Outside of strict mode, if the the assignment target is an unresolvable reference, a new `var` binding should be created in the environment record. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-{
-
-var counter = 0;
-
-async function fn() {
-  for await ([ unresolvable ] of [[]]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}
-
-assert.sameValue(unresolvable, undefined);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-target-identifier.js b/test/language/statements/for-await-of/dstr-array-elem-target-identifier.js
deleted file mode 100644
index f95b06dd558382a50d747184f994e403690b95c0..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-target-identifier.js
+++ /dev/null
@@ -1,42 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-target-identifier.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Identifiers that appear as the DestructuringAssignmentTarget in an AssignmentElement should take on the iterated value corresponding to their position in the ArrayAssignmentPattern. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x, y, z;
-
-var counter = 0;
-
-async function fn() {
-  for await ([x, y, z] of [[1, 2, 3]]) {
-    assert.sameValue(x, 1);
-    assert.sameValue(y, 2);
-    assert.sameValue(z, 3);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-target-simple-no-strict.js b/test/language/statements/for-await-of/dstr-array-elem-target-simple-no-strict.js
deleted file mode 100644
index 8a9990e0a3c082ed128698d032d4c62a3649ef18..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-target-simple-no-strict.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-target-simple-no-strict.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Identifiers that appear as the DestructuringAssignmentTarget in an AssignmentElement should take on the iterated value corresponding to their position in the ArrayAssignmentPattern. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var argument, eval;
-
-var counter = 0;
-
-async function fn() {
-  for await ([arguments, eval] of [[2, 3]]) {
-    assert.sameValue(arguments, 2);
-    assert.sameValue(eval, 3);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-target-yield-expr.js b/test/language/statements/for-await-of/dstr-array-elem-target-yield-expr.js
deleted file mode 100644
index f21bf7f7cb80838462f8c346a02839f92b573314..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-target-yield-expr.js
+++ /dev/null
@@ -1,58 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-target-yield-expr.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the DestructuringAssignmentTarget of an AssignmentElement within a generator function body, it behaves as a YieldExpression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var value = [33];
-var x = {};
-var iterationResult, iter;
-
-iter = (function*() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([ x[yield] ] of [[33]]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}());
-
-iterationResult = iter.next();
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, false);
-assert.sameValue(x.prop, undefined);
-
-iterationResult = iter.next('prop');
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, true);
-assert.sameValue(x.prop, 33);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-target-yield-valid.js b/test/language/statements/for-await-of/dstr-array-elem-target-yield-valid.js
deleted file mode 100644
index a9b16fdff3703a58b5a288480624652a2646f678..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-target-yield-valid.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-target-yield-valid.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the DestructuringAssignmentTarget of an AssignmentElement outside of a generator function body, it behaves as an IdentifierReference. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var yield = 'prop';
-var x = {};
-
-var counter = 0;
-
-async function fn() {
-  for await ([ x[yield] ] of [[33]]) {
-    assert.sameValue(x.prop, 33);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-elision-iter-nrml-close-skip.js b/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-elision-iter-nrml-close-skip.js
deleted file mode 100644
index dc73b88d0502e87471aaa8dace61716ab330f6ed..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-elision-iter-nrml-close-skip.js
+++ /dev/null
@@ -1,72 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-trlg-iter-elision-iter-nrml-close-skip.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose not invoked when elision exhausts the iterator (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern :
-        [ AssignmentElementList , Elisionopt AssignmentRestElementopt ]
-
-    [...]
-    6. If Elision is present, then
-       a. Let status be the result of performing
-          IteratorDestructuringAssignmentEvaluation of Elision with
-          iteratorRecord as the argument.
-       b. If status is an abrupt completion, then
-          [...]
-    8. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       status).
-    9. Return Completion(status).
-
----*/
-var nextCount = 0;
-var returnCount = 0;
-var iterable = {};
-var x;
-var iterator = {
-  next: function() {
-    nextCount += 1;
-
-    return { done: nextCount > 1 };
-  },
-  return: function() {
-    returnCount += 1;
-  }
-};
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-var counter = 0;
-
-async function fn() {
-  for await ([ x , , ] of [iterable]) {
-    assert.sameValue(nextCount, 2);
-    assert.sameValue(returnCount, 0);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-elision-iter-nrml-close.js b/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-elision-iter-nrml-close.js
deleted file mode 100644
index 9170bb3200e2fd01e8bcd252083bc8d9cbb73739..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-elision-iter-nrml-close.js
+++ /dev/null
@@ -1,87 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-trlg-iter-elision-iter-nrml-close.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose invoked when elision does not exhaust the iterator (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern :
-        [ AssignmentElementList , Elisionopt AssignmentRestElementopt ]
-
-    [...]
-    6. If Elision is present, then
-       a. Let status be the result of performing
-          IteratorDestructuringAssignmentEvaluation of Elision with
-          iteratorRecord as the argument.
-       b. If status is an abrupt completion, then
-          [...]
-    8. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       status).
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    [...]
-
----*/
-var nextCount = 0;
-var returnCount = 0;
-var thisValue = null;
-var args = null;
-var iterable = {};
-var x;
-var iterator = {
-  next: function() {
-    nextCount += 1;
-
-    // Set an upper-bound to limit unnecessary iteration in non-conformant
-    // implementations
-    return { done: nextCount > 10 };
-  },
-  return: function() {
-    returnCount += 1;
-    thisValue = this;
-    args = arguments;
-    return {};
-  }
-};
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-var counter = 0;
-
-async function fn() {
-  for await ([ x , , ] of [iterable]) {
-    assert.sameValue(nextCount, 2);
-    assert.sameValue(returnCount, 1);
-    assert.sameValue(thisValue, iterator, 'correct `this` value');
-    assert(!!args, 'arguments object provided');
-    assert.sameValue(args.length, 0, 'zero arguments specified');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-nrml-close-skip.js b/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-nrml-close-skip.js
deleted file mode 100644
index be57dfb781200f3eead3cc04160f106c1989b9e0..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-nrml-close-skip.js
+++ /dev/null
@@ -1,73 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-trlg-iter-list-nrml-close-skip.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is not invoked when evaluation of AssignmentElementList exhausts the iterator (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern :
-        [ AssignmentElementList , Elisionopt AssignmentRestElementopt ]
-
-    [...]
-    3. Let iteratorRecord be Record {[[iterator]]: iterator, [[done]]: false}.
-    4. Let status be the result of performing
-       IteratorDestructuringAssignmentEvaluation of AssignmentElementList using
-       iteratorRecord as the argument.
-    5. If status is an abrupt completion, then
-       a. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-          status).
-       b. Return Completion(status).
-
----*/
-var nextCount = 0;
-var returnCount = 0;
-var iterable = {};
-var thrower = function() {
-  throw new Test262Error();
-};
-var x;
-var iterator = {
-  next: function() {
-    nextCount += 1;
-    return { done: true };
-  },
-  return: function() {
-    returnCount += 1;
-  }
-};
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-var counter = 0;
-
-async function fn() {
-  for await ([ x , ] of [iterable]) {
-    assert.sameValue(nextCount, 1);
-    assert.sameValue(returnCount, 0);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-nrml-close.js b/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-nrml-close.js
deleted file mode 100644
index 9d98bc175853b504eda5be4160a207cfcb0df82c..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-nrml-close.js
+++ /dev/null
@@ -1,86 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-trlg-iter-list-nrml-close.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is invoked when evaluation of AssignmentElementList completes without exhausting the iterator (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern :
-        [ AssignmentElementList , Elisionopt AssignmentRestElementopt ]
-
-    [...]
-    3. Let iteratorRecord be Record {[[iterator]]: iterator, [[done]]: false}.
-    4. Let status be the result of performing
-       IteratorDestructuringAssignmentEvaluation of AssignmentElementList using
-       iteratorRecord as the argument.
-    5. If status is an abrupt completion, then
-       a. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-          status).
-       b. Return Completion(status).
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    [...]
-
----*/
-var nextCount = 0;
-var returnCount = 0;
-var thisValue = null;
-var args = null;
-var iterable = {};
-var x;
-var iterator = {
-  next: function() {
-    nextCount += 1;
-    // Set an upper-bound to limit unnecessary iteration in non-conformant
-    // implementations
-    return { done: nextCount > 10 };
-  },
-  return: function() {
-    returnCount += 1;
-    thisValue = this;
-    args = arguments;
-    return {};
-  }
-};
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-var counter = 0;
-
-async function fn() {
-  for await ([ x , ] of [iterable]) {
-    assert.sameValue(nextCount, 1);
-    assert.sameValue(returnCount, 1);
-    assert.sameValue(thisValue, iterator, 'correct `this` value');
-    assert(!!args, 'arguments object provided');
-    assert.sameValue(args.length, 0, 'zero arguments specified');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-rtrn-close-err.js b/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-rtrn-close-err.js
deleted file mode 100644
index f7b14a42999611c835a2f0701bc995a9203f33f3..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-rtrn-close-err.js
+++ /dev/null
@@ -1,86 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close-err.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is invoked when evaluation of AssignmentElementList returns a "return" completion and the iterator has not been marked as "done" (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern :
-        [ AssignmentElementList , Elisionopt AssignmentRestElementopt ]
-
-    [...]
-    3. Let iteratorRecord be Record {[[iterator]]: iterator, [[done]]: false}.
-    4. Let status be the result of performing
-       IteratorDestructuringAssignmentEvaluation of AssignmentElementList using
-       iteratorRecord as the argument.
-    5. If status is an abrupt completion, then
-       a. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-          status).
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    7. If completion.[[type]] is throw, return Completion(completion).
-    8. If innerResult.[[type]] is throw, return Completion(innerResult).
-
----*/
-var returnCount = 0;
-var unreachable = 0;
-var iterable = {};
-var iterator = {
-  return: function() {
-    returnCount += 1;
-
-    throw new Test262Error();
-  }
-};
-var iter;
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-function* g() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([ {}[yield] , ] of [iterable]) {
-    unreachable += 1;
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}
-
-iter = g();
-iter.next();
-assert.throws(Test262Error, function() {
-  iter.return();
-});
-
-assert.sameValue(returnCount, 1);
-assert.sameValue(unreachable, 0, 'Unreachable statement was not executed');
diff --git a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-rtrn-close-null.js b/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-rtrn-close-null.js
deleted file mode 100644
index bbabb3d867278ffedf7a770814435a6b165b2452..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-rtrn-close-null.js
+++ /dev/null
@@ -1,83 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close-null.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose throws a TypeError when `return` returns a non-Object value (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern :
-        [ AssignmentElementList , Elisionopt AssignmentRestElementopt ]
-
-    [...]
-    3. Let iteratorRecord be Record {[[iterator]]: iterator, [[done]]: false}.
-    4. Let status be the result of performing
-       IteratorDestructuringAssignmentEvaluation of AssignmentElementList using
-       iteratorRecord as the argument.
-    5. If status is an abrupt completion, then
-       a. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-          status).
-       b. Return Completion(status).
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    7. If completion.[[type]] is throw, return Completion(completion).
-    8. If innerResult.[[type]] is throw, return Completion(innerResult).
-    9. If Type(innerResult.[[value]]) is not Object, throw a TypeError
-       exception.
-
----*/
-var iterable = {};
-var iterator = {
-  return: function() {
-    return null;
-  }
-};
-var iter;
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-function* g() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([ {}[yield] , ] of [iterable]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}
-
-iter = g();
-iter.next();
-
-assert.throws(TypeError, function() {
-  iter.return();
-});
diff --git a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-rtrn-close.js b/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-rtrn-close.js
deleted file mode 100644
index 1cab9a05b4b7fe47e9a41da15b57ce5c2e3083bf..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-rtrn-close.js
+++ /dev/null
@@ -1,94 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is invoked when evaluation of AssignmentElementList returns a "return" completion and the iterator has not been marked as "done" (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern :
-        [ AssignmentElementList , Elisionopt AssignmentRestElementopt ]
-
-    [...]
-    3. Let iteratorRecord be Record {[[iterator]]: iterator, [[done]]: false}.
-    4. Let status be the result of performing
-       IteratorDestructuringAssignmentEvaluation of AssignmentElementList using
-       iteratorRecord as the argument.
-    5. If status is an abrupt completion, then
-       a. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-          status).
-       b. Return Completion(status).
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    7. If completion.[[type]] is throw, return Completion(completion).
-    8. If innerResult.[[type]] is throw, return Completion(innerResult).
-
----*/
-var returnCount = 0;
-var unreachable = 0;
-var thisValue = null;
-var args = null;
-var iterable = {};
-var iterator = {
-  return: function() {
-    returnCount += 1;
-    thisValue = this;
-    args = arguments;
-    return {};
-  }
-};
-var iter, result;
-
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-function* g() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([ {}[yield] , ] of [iterable]) {
-    unreachable += 1;
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-};
-
-iter = g();
-iter.next();
-result = iter.return(888);
-
-assert.sameValue(returnCount, 1);
-assert.sameValue(unreachable, 0, 'Unreachable statement was not executed');
-assert.sameValue(result.value, 888);
-assert(result.done, 'Iterator correctly closed');
-assert.sameValue(thisValue, iterator, 'correct `this` value');
-assert(!!args, 'arguments object provided');
-assert.sameValue(args.length, 0, 'zero arguments specified');
diff --git a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-nrml-close-skip.js b/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-nrml-close-skip.js
deleted file mode 100644
index c49c8b063a76ac25daeba3defac2b74b1029dab9..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-nrml-close-skip.js
+++ /dev/null
@@ -1,73 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-trlg-iter-rest-nrml-close-skip.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is not called when rest element evaluation has exhausted the iterator (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern :
-        [ AssignmentElementList , Elisionopt AssignmentRestElementopt ]
-
-    [...]
-    7. If AssignmentRestElement is present, then
-       a. Let status be the result of performing
-          IteratorDestructuringAssignmentEvaluation of AssignmentRestElement
-          with iteratorRecord as the argument.
-    8. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       status).
-    9. Return Completion(status).
-
----*/
-var nextCount = 0;
-var returnCount = 0;
-var iterable = {};
-var x, y;
-var iterator = {
-  next: function() {
-    nextCount += 1;
-    return { value: nextCount, done: nextCount > 1 };
-  },
-  return: function() {
-    returnCount += 1;
-  }
-};
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-var counter = 0;
-
-async function fn() {
-  for await ([ x , ...y ] of [iterable]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-assert.sameValue(nextCount, 2, 'nextCount');
-assert.sameValue(returnCount, 0, 'returnCount');
-assert.sameValue(x, 1, 'x');
-assert.sameValue(y.length, 0, 'y.length');
diff --git a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-rtrn-close-err.js b/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-rtrn-close-err.js
deleted file mode 100644
index 566e1a75ce88e6e2399f1e0771e9dadcdb51c40d..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-rtrn-close-err.js
+++ /dev/null
@@ -1,95 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-trlg-iter-rest-rtrn-close-err.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is called when AssignmentRestEvaluation produces a "return" completion due to reference evaluation (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern :
-        [ AssignmentElementList , Elisionopt AssignmentRestElementopt ]
-
-    [...]
-    7. If AssignmentRestElement is present, then
-       a. Let status be the result of performing
-          IteratorDestructuringAssignmentEvaluation of AssignmentRestElement
-          with iteratorRecord as the argument.
-    8. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       status).
-    9. Return Completion(status).
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    7. If completion.[[type]] is throw, return Completion(completion).
-    8. If innerResult.[[type]] is throw, return Completion(innerResult).
-
----*/
-var nextCount = 0;
-var returnCount = 0;
-var unreachable = 0;
-var x;
-var iterable = {};
-var iterator = {
-  next: function() {
-    nextCount += 1;
-    // Set an upper-bound to limit unnecessary iteration in non-conformant
-    // implementations
-    return { done: nextCount > 10 };
-  },
-  return: function() {
-    returnCount += 1;
-
-    throw new Test262Error();
-  }
-};
-var iter;
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-function* g() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([ x , ...{}[yield] ] of [iterable]) {
-    unreachable += 1;
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}
-
-iter = g();
-iter.next();
-
-assert.throws(Test262Error, function() {
-  iter.return();
-});
-
-assert.sameValue(nextCount, 1);
-assert.sameValue(returnCount, 1);
-assert.sameValue(unreachable, 0, 'Unreachable statement was not executed');
diff --git a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-rtrn-close-null.js b/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-rtrn-close-null.js
deleted file mode 100644
index 073175cf133091d495baf9eda5743e5806109d57..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-rtrn-close-null.js
+++ /dev/null
@@ -1,90 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-trlg-iter-rest-rtrn-close-null.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose throws a TypeError when `return` returns a non-Object value (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern :
-        [ AssignmentElementList , Elisionopt AssignmentRestElementopt ]
-
-    [...]
-    7. If AssignmentRestElement is present, then
-       a. Let status be the result of performing
-          IteratorDestructuringAssignmentEvaluation of AssignmentRestElement
-          with iteratorRecord as the argument.
-    8. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       status).
-    9. Return Completion(status).
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    7. If completion.[[type]] is throw, return Completion(completion).
-    8. If innerResult.[[type]] is throw, return Completion(innerResult).
-
----*/
-var nextCount = 0;
-var iterable = {};
-var x;
-var iterator = {
-  next: function() {
-    nextCount += 1;
-    // Set an upper-bound to limit unnecessary iteration in non-conformant
-    // implementations
-    return { done: nextCount > 10 };
-  },
-  return: function() {
-    return null;
-  }
-};
-var iter;
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-function* g() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([ x , ...{}[yield] ] of [iterable]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}
-
-iter = g();
-iter.next();
-
-assert.throws(TypeError, function() {
-  iter.return();
-});
-
-assert.sameValue(nextCount, 1);
diff --git a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-rtrn-close.js b/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-rtrn-close.js
deleted file mode 100644
index 188453533c08318bde49437c19e3f0bf6be51f77..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-rtrn-close.js
+++ /dev/null
@@ -1,101 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elem-trlg-iter-rest-rtrn-close.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is called when AssignmentRestEvaluation produces a "return" completion due to reference evaluation (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern :
-        [ AssignmentElementList , Elisionopt AssignmentRestElementopt ]
-
-    [...]
-    7. If AssignmentRestElement is present, then
-       a. Let status be the result of performing
-          IteratorDestructuringAssignmentEvaluation of AssignmentRestElement
-          with iteratorRecord as the argument.
-    8. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       status).
-    9. Return Completion(status).
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    7. If completion.[[type]] is throw, return Completion(completion).
-    8. If innerResult.[[type]] is throw, return Completion(innerResult).
-
----*/
-var nextCount = 0;
-var returnCount = 0;
-var unreachable = 0;
-var thisValue = null;
-var args = null;
-var iterable = {};
-var x;
-var iterator = {
-  next: function() {
-    nextCount += 1;
-    // Set an upper-bound to limit unnecessary iteration in non-conformant
-    // implementations
-    return { done: nextCount > 10 };
-  },
-  return: function() {
-    returnCount += 1;
-    thisValue = this;
-    args = arguments;
-    return {};
-  }
-};
-var iter, result;
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-function* g() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([ x , ...{}[yield] ] of [iterable]) {
-    unreachable += 1;
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}
-
-iter = g();
-iter.next();
-result = iter.return(999);
-
-assert.sameValue(nextCount, 1);
-assert.sameValue(returnCount, 1);
-assert.sameValue(unreachable, 0, 'Unreachable statement was not executed');
-assert.sameValue(result.value, 999);
-assert(result.done, 'Iterator correctly closed');
-assert.sameValue(thisValue, iterator, 'correct `this` value');
-assert(!!args, 'arguments object provided');
-assert.sameValue(args.length, 0, 'zero arguments specified');
diff --git a/test/language/statements/for-await-of/dstr-array-elision-iter-nrml-close-skip.js b/test/language/statements/for-await-of/dstr-array-elision-iter-nrml-close-skip.js
deleted file mode 100644
index a2d2ec0139362bb3b945219815ae698e13a70194..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elision-iter-nrml-close-skip.js
+++ /dev/null
@@ -1,65 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elision-iter-nrml-close-skip.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is not called when iteration has exhausted the iterator (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern : [ Elision ]
-
-    1. Let iterator be GetIterator(value).
-    [...]
-    5. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       result).
-    [...]
-
----*/
-var nextCount = 0;
-var returnCount = 0;
-var iterable = {};
-var iterator = {
-  next: function() {
-    nextCount += 1;
-    return { done: true };
-  },
-  return: function() {
-    returnCount += 1;
-    return {};
-  }
-};
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-var counter = 0;
-
-async function fn() {
-  for await ([ , ] of [iterable]) {
-    assert.sameValue(nextCount, 1);
-    assert.sameValue(returnCount, 0);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elision-iter-nrml-close.js b/test/language/statements/for-await-of/dstr-array-elision-iter-nrml-close.js
deleted file mode 100644
index 509a6001c2646f3e95c5787126d22a5c2be77fbe..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elision-iter-nrml-close.js
+++ /dev/null
@@ -1,80 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elision-iter-nrml-close.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is called when assignment evaluation has not exhausted the iterator (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern : [ Elision ]
-
-    1. Let iterator be GetIterator(value).
-    [...]
-    5. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       result).
-    [...]
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    [...]
-
----*/
-var nextCount = 0;
-var returnCount = 0;
-var thisValue = null;
-var args = null;
-var iterable = {};
-var iterator = {
-  next: function() {
-    nextCount += 1;
-    // Set an upper-bound to limit unnecessary iteration in non-conformant
-    // implementations
-    return { done: nextCount > 10 };
-  },
-  return: function() {
-    returnCount += 1;
-    thisValue = this;
-    args = arguments;
-    return {};
-  }
-};
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-var counter = 0;
-
-async function fn() {
-  for await ([ , ] of [iterable]) {
-    assert.sameValue(nextCount, 1);
-    assert.sameValue(returnCount, 1);
-    assert.sameValue(thisValue, iterator, 'correct `this` value');
-    assert(!!args, 'arguments object provided');
-    assert.sameValue(args.length, 0, 'zero arguments specified');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elision-val-array.js b/test/language/statements/for-await-of/dstr-array-elision-val-array.js
deleted file mode 100644
index 9d55d53877eef745f029c48193c23e651bb16be9..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elision-val-array.js
+++ /dev/null
@@ -1,39 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elision-val-array.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: An ArrayAssignmentPattern containing only Elisions requires iterable values (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-
-var counter = 0;
-
-async function fn() {
-  for await ([,] of [[]]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-elision-val-string.js b/test/language/statements/for-await-of/dstr-array-elision-val-string.js
deleted file mode 100644
index ec09b914e552f48392a2e2928d2c9fc8e1541a36..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-elision-val-string.js
+++ /dev/null
@@ -1,39 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-elision-val-string.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: An ArrayAssignmentPattern containing only Elisions requires iterable values (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-
-var counter = 0;
-
-async function fn() {
-  for await ([,] of ['string literal']) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-empty-iter-close.js b/test/language/statements/for-await-of/dstr-array-empty-iter-close.js
deleted file mode 100644
index c6bf46b8ca051799d745e45a15001f7d8f5cafb7..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-empty-iter-close.js
+++ /dev/null
@@ -1,76 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-empty-iter-close.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Iterator is closed without iterating (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern : [ ]
-
-    1. Let iterator be GetIterator(value).
-    2. ReturnIfAbrupt(iterator).
-    3. Return IteratorClose(iterator, NormalCompletion(empty)).
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    [...]
-
----*/
-var nextCount = 0;
-var returnCount = 0;
-var thisValue = null;
-var args = null;
-var iterable = {};
-var iterator = {
-  next: function() {
-    nextCount += 1;
-    return { done: true };
-  },
-  return: function() {
-    returnCount += 1;
-    thisValue = this;
-    args = arguments;
-    return {};
-  }
-};
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-var counter = 0;
-
-async function fn() {
-  for await ([] of [iterable]) {
-    assert.sameValue(nextCount, 0);
-    assert.sameValue(returnCount, 1);
-    assert.sameValue(thisValue, iterator, 'correct `this` value');
-    assert(!!args, 'arguments object provided');
-    assert.sameValue(args.length, 0, 'zero arguments specified');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-empty-val-array.js b/test/language/statements/for-await-of/dstr-array-empty-val-array.js
deleted file mode 100644
index 897d5c7e253e7ab6edbc5a10cc3ca36953c00ffd..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-empty-val-array.js
+++ /dev/null
@@ -1,39 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-empty-val-array.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: An ArrayAssignmentPattern without an AssignmentElementList requires iterable values. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-
-var counter = 0;
-
-async function fn() {
-  for await ([] of [[]]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-empty-val-string.js b/test/language/statements/for-await-of/dstr-array-empty-val-string.js
deleted file mode 100644
index 265d0f8984d8058db10bb2c8207eee73d108b3af..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-empty-val-string.js
+++ /dev/null
@@ -1,39 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-empty-val-string.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: An ArrayAssignmentPattern without an AssignmentElementList requires iterable values. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-
-var counter = 0;
-
-async function fn() {
-  for await ([] of ['string literal']) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-iteration.js b/test/language/statements/for-await-of/dstr-array-iteration.js
deleted file mode 100644
index 4552d7a751d2910a728893f95fc37c0bf11f7b89..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-iteration.js
+++ /dev/null
@@ -1,47 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-iteration.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Value iteration only proceeds for the number of elements in the ArrayAssignmentPattern. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var count = 0;
-var g = function*() {
-  count += 1;
-  yield;
-  count += 1;
-  yield;
-  count += 1;
-}
-
-var counter = 0;
-
-async function fn() {
-  for await ([,,] of [g()]) {
-    assert.sameValue(count, 2);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-after-element.js b/test/language/statements/for-await-of/dstr-array-rest-after-element.js
deleted file mode 100644
index d796a4d1d57355e9d9d0d7ea40ce17f8c77e5472..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-after-element.js
+++ /dev/null
@@ -1,43 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-after-element.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: An AssignmentRestElement following an AssignmentElement consumes all remaining iterable values. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x, y;
-
-var counter = 0;
-
-async function fn() {
-  for await ([x, ...y] of [[1, 2, 3]]) {
-    assert.sameValue(x, 1);
-    assert.sameValue(y.length, 2);
-    assert.sameValue(y[0], 2);
-    assert.sameValue(y[1], 3);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-after-elision.js b/test/language/statements/for-await-of/dstr-array-rest-after-elision.js
deleted file mode 100644
index c87534c5e8226831ff59a058da01b354dd47f0e5..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-after-elision.js
+++ /dev/null
@@ -1,42 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-after-elision.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: An AssignmentRestElement following an elision consumes all remaining iterable values. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ([, ...x] of [[1, 2, 3]]) {
-    assert.sameValue(x.length, 2);
-    assert.sameValue(x[0], 2);
-    assert.sameValue(x[1], 3);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-elision.js b/test/language/statements/for-await-of/dstr-array-rest-elision.js
deleted file mode 100644
index af6b84134789df0579c81f5f9eee3dacb483b284..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-elision.js
+++ /dev/null
@@ -1,43 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-elision.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: ArrayAssignmentPattern may include elisions at any position preceeding a AssignmentRestElement in a AssignmentElementList. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x, y;
-
-var counter = 0;
-
-async function fn() {
-  for await ([, , x, , ...y] of [[1, 2, 3, 4, 5, 6]]) {
-    assert.sameValue(x, 3);
-    assert.sameValue(y.length, 2);
-    assert.sameValue(y[0], 5);
-    assert.sameValue(y[1], 6);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-iter-nrml-close-skip.js b/test/language/statements/for-await-of/dstr-array-rest-iter-nrml-close-skip.js
deleted file mode 100644
index c0f24a7fd91ff564a93bce2ce047a4e10f059d42..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-iter-nrml-close-skip.js
+++ /dev/null
@@ -1,67 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-iter-nrml-close-skip.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is not called when assignment evaluation has exhausted the iterator (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern : [ Elisionopt AssignmentRestElement ]
-
-    [...]
-    5. Let result be the result of performing
-       IteratorDestructuringAssignmentEvaluation of AssignmentRestElement with
-       iteratorRecord as the argument
-    6. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       result).
-    7. Return result.
-
----*/
-var nextCount = 0;
-var returnCount = 0;
-var x;
-var iterable = {};
-var iterator = {
-  next: function() {
-    nextCount += 1;
-    return { done: true };
-  },
-  return: function() {
-    returnCount += 1;
-  }
-};
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-var counter = 0;
-
-async function fn() {
-  for await ([ ...x ] of [iterable]) {
-    assert.sameValue(nextCount, 1);
-    assert.sameValue(returnCount, 0);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-iter-rtrn-close-err.js b/test/language/statements/for-await-of/dstr-array-rest-iter-rtrn-close-err.js
deleted file mode 100644
index cfa8e8f4d2e20c87a9e4d794a282f44286cfe1ad..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-iter-rtrn-close-err.js
+++ /dev/null
@@ -1,91 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-iter-rtrn-close-err.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is called when reference evaluation produces a "return" completion (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern : [ Elisionopt AssignmentRestElement ]
-
-    [...]
-    5. Let result be the result of performing
-       IteratorDestructuringAssignmentEvaluation of AssignmentRestElement with
-       iteratorRecord as the argument
-    6. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       result).
-
-    AssignmentRestElement[Yield] : ... DestructuringAssignmentTarget
-
-    1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an
-       ArrayLiteral, then
-       a. Let lref be the result of evaluating DestructuringAssignmentTarget.
-       b. ReturnIfAbrupt(lref).
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    7. If completion.[[type]] is throw, return Completion(completion).
-    8. If innerResult.[[type]] is throw, return Completion(innerResult).
-
----*/
-var returnCount = 0;
-var unreachable = 0;
-function ReturnError() {}
-var iterable = {};
-var iterator = {
-  return: function() {
-    returnCount += 1;
-
-    throw new Test262Error();
-  }
-};
-var iter;
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-function* g() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([...{}[yield]] of [iterable]) {
-    unreachable += 1;
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}
-
-iter = g();
-iter.next();
-assert.throws(Test262Error, function() {
-  iter.return();
-});
-
-assert.sameValue(returnCount, 1);
-assert.sameValue(unreachable, 0, 'Unreachable statement was not executed');
diff --git a/test/language/statements/for-await-of/dstr-array-rest-iter-rtrn-close-null.js b/test/language/statements/for-await-of/dstr-array-rest-iter-rtrn-close-null.js
deleted file mode 100644
index becc03c060050b03d30aa04210ff2825809fe1a9..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-iter-rtrn-close-null.js
+++ /dev/null
@@ -1,90 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-iter-rtrn-close-null.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose throws a TypeError when `return` returns a non-Object value (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern : [ Elisionopt AssignmentRestElement ]
-
-    [...]
-    5. Let result be the result of performing
-       IteratorDestructuringAssignmentEvaluation of AssignmentRestElement with
-       iteratorRecord as the argument
-    6. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       result).
-
-    AssignmentRestElement[Yield] : ... DestructuringAssignmentTarget
-
-    1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an
-       ArrayLiteral, then
-       a. Let lref be the result of evaluating DestructuringAssignmentTarget.
-       b. ReturnIfAbrupt(lref).
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    [...]
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    7. If completion.[[type]] is throw, return Completion(completion).
-    8. If innerResult.[[type]] is throw, return Completion(innerResult).
-
----*/
-var iterable = {};
-var iterator = {
-  return: function() {
-    return null;
-  }
-};
-var iter;
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-function* g() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([...{}[yield]] of [iterable]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}
-
-iter = g();
-iter.next();
-
-assert.throws(TypeError, function() {
-  iter.return();
-});
diff --git a/test/language/statements/for-await-of/dstr-array-rest-iter-rtrn-close.js b/test/language/statements/for-await-of/dstr-array-rest-iter-rtrn-close.js
deleted file mode 100644
index fa4c16d68d14135d49dfebe0761342161be3ec3b..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-iter-rtrn-close.js
+++ /dev/null
@@ -1,102 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-iter-rtrn-close.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: IteratorClose is called when reference evaluation produces a "return" completion (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern : [ Elisionopt AssignmentRestElement ]
-
-    [...]
-    5. Let result be the result of performing
-       IteratorDestructuringAssignmentEvaluation of AssignmentRestElement with
-       iteratorRecord as the argument
-    6. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       result).
-
-    AssignmentRestElement[Yield] : ... DestructuringAssignmentTarget
-
-    1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an
-       ArrayLiteral, then
-       a. Let lref be the result of evaluating DestructuringAssignmentTarget.
-       b. ReturnIfAbrupt(lref).
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    [...]
-
-    7.4.6 IteratorClose( iterator, completion )
-
-    [...]
-    6. Let innerResult be Call(return, iterator, « »).
-    7. If completion.[[type]] is throw, return Completion(completion).
-    8. If innerResult.[[type]] is throw, return Completion(innerResult).
-
----*/
-var returnCount = 0;
-var unreachable = 0;
-var thisValue = null;
-var args = null;
-var iterable = {};
-var iterator = {
-  return: function() {
-    returnCount += 1;
-    thisValue = this;
-    args = arguments;
-    return {};
-  }
-};
-var iter, result;
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-function* g() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([...{}[yield]] of [iterable]) {
-    unreachable += 1;
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}
-
-iter = g();
-iter.next();
-result = iter.return(444);
-
-assert.sameValue(returnCount, 1);
-assert.sameValue(unreachable, 0, 'Unreachable statement was not executed');
-assert.sameValue(result.value, 444);
-assert(result.done, 'Iterator correctly closed');
-assert.sameValue(thisValue, iterator, 'correct `this` value');
-assert(!!args, 'arguments object provided');
-assert.sameValue(args.length, 0, 'zero arguments specified');
diff --git a/test/language/statements/for-await-of/dstr-array-rest-iteration.js b/test/language/statements/for-await-of/dstr-array-rest-iteration.js
deleted file mode 100644
index 76dd8bd84269557bfe33aa16f486c8c391a97bff..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-iteration.js
+++ /dev/null
@@ -1,48 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-iteration.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: In the presense of an AssignmentRestElement, value iteration exhausts the iterable value; (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var count = 0;
-var g = function*() {
-  count += 1;
-  yield;
-  count += 1;
-  yield;
-  count += 1;
-}
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ([...x] of [g()]) {
-    assert.sameValue(count, 3);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-lref.js b/test/language/statements/for-await-of/dstr-array-rest-lref.js
deleted file mode 100644
index 774372e2dd8d07130bacf52149a2776778bb614d..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-lref.js
+++ /dev/null
@@ -1,76 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-lref.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Reference is evaluated during assignment (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol.iterator, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    ArrayAssignmentPattern : [ Elisionopt AssignmentRestElement ]
-
-    [...]
-    5. Let result be the result of performing
-       IteratorDestructuringAssignmentEvaluation of AssignmentRestElement with
-       iteratorRecord as the argument
-    6. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
-       result).
-
-    AssignmentRestElement[Yield] : ... DestructuringAssignmentTarget
-
-    1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an
-       ArrayLiteral, then
-       a. Let lref be the result of evaluating DestructuringAssignmentTarget.
-       b. ReturnIfAbrupt(lref).
-    [...]
-
----*/
-var nextCount = 0;
-var returnCount = 0;
-var iterable = {};
-var iterator = {
-  next: function() {
-    nextCount += 1;
-    return { done: true };
-  },
-  return: function() {
-    returnCount += 1;
-  }
-};
-var obj = {};
-iterable[Symbol.iterator] = function() {
-  return iterator;
-};
-
-var counter = 0;
-
-async function fn() {
-  for await ([...obj['a' + 'b']] of [iterable]) {
-    assert.sameValue(nextCount, 1);
-    assert.sameValue(returnCount, 0);
-    assert(!!obj.ab);
-    assert.sameValue(obj.ab.length, 0);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-nested-array-null.js b/test/language/statements/for-await-of/dstr-array-rest-nested-array-null.js
deleted file mode 100644
index 7e77f8f08d490fcf407dc48b0156a438823373bc..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-nested-array-null.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-nested-array-null.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an array literal and the iterable emits `null` as the only value, an array with a single `null` element should be used as the value of the nested DestructuringAssignment. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x, y;
-
-var counter = 0;
-
-async function fn() {
-  for await ([...[x, y]] of [[null]]) {
-    assert.sameValue(x, null);
-    assert.sameValue(y, undefined);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-nested-array-undefined-hole.js b/test/language/statements/for-await-of/dstr-array-rest-nested-array-undefined-hole.js
deleted file mode 100644
index 64475acd692c746b6965b03759d1e2e6542bbcf6..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-nested-array-undefined-hole.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-nested-array-undefined-hole.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an array literal and the iterable is an array with a "hole", an array with a single `undefined` element should be used as the value of the nested DestructuringAssignment. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-
-var counter = 0;
-
-async function fn() {
-  for await ([...[x]] of [[ , ]]) {
-    assert.sameValue(x, undefined);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-nested-array-undefined-own.js b/test/language/statements/for-await-of/dstr-array-rest-nested-array-undefined-own.js
deleted file mode 100644
index 0f7d3daad2ebcf95f8eba153b942f6cdcd8a9c23..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-nested-array-undefined-own.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-nested-array-undefined-own.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an array literal and the iterable emits `undefined` as the only value, an array with a single `undefined` element should be used as the value of the nested DestructuringAssignment. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-
-var counter = 0;
-
-async function fn() {
-  for await ([...[x]] of [[undefined]]) {
-    assert.sameValue(x, undefined);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-nested-array-undefined.js b/test/language/statements/for-await-of/dstr-array-rest-nested-array-undefined.js
deleted file mode 100644
index 7b9e140806f313346e13d82ba41315f61ae13cdc..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-nested-array-undefined.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-nested-array-undefined.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an array literal and the iterable is emits no values, an empty array should be used as the value of the nested DestructuringAssignment. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-
-var counter = 0;
-
-async function fn() {
-  for await ([...[x]] of [[]]) {
-    assert.sameValue(x, undefined);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-nested-array-yield-expr.js b/test/language/statements/for-await-of/dstr-array-rest-nested-array-yield-expr.js
deleted file mode 100644
index 80e9734a7b190b93441d5f4fcd359e4d22a5fb17..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-nested-array-yield-expr.js
+++ /dev/null
@@ -1,58 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-nested-array-yield-expr.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the DestructuringAssignmentTarget of a nested destructuring assignment and within a generator function body, it should behave as a YieldExpression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var value = [86];
-var x = {};
-var iterationResult, iter;
-
-iter = (function*() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([...[x[yield]]] of [[86]]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}());
-
-iterationResult = iter.next();
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, false);
-assert.sameValue(x.prop, undefined);
-
-iterationResult = iter.next('prop');
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, true);
-assert.sameValue(x.prop, 86);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-nested-array-yield-ident-valid.js b/test/language/statements/for-await-of/dstr-array-rest-nested-array-yield-ident-valid.js
deleted file mode 100644
index 877c2b34eb53bb8e4b03ca401df7c3da8c2aa932..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-nested-array-yield-ident-valid.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-nested-array-yield-ident-valid.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the DestructuringAssignmentTarget of a nested destructuring assignment and outside of a generator function body, it should behave as an IdentifierExpression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var yield = 'prop';
-var x = {};
-
-var counter = 0;
-
-async function fn() {
-  for await ([...[x[yield]]] of [[86]]) {
-    assert.sameValue(x.prop, 86);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-nested-array.js b/test/language/statements/for-await-of/dstr-array-rest-nested-array.js
deleted file mode 100644
index 08e0a641440c0d03b37ebffc7ada603baa945ec0..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-nested-array.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-nested-array.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an array literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ([...[x]] of [[1, 2, 3]]) {
-    assert.sameValue(x, 1);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-nested-obj-null.js b/test/language/statements/for-await-of/dstr-array-rest-nested-obj-null.js
deleted file mode 100644
index 353c891c703c3a1d74f08d4f137a6a5e4732893e..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-nested-obj-null.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-nested-obj-null.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an object literal and the iterable emits `null` as the only value, an array with a single `null` element should be used as the value of the nested DestructuringAssignment. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x, length;
-
-var counter = 0;
-
-async function fn() {
-  for await ([...{ 0: x, length }] of [[null]]) {
-    assert.sameValue(x, null);
-    assert.sameValue(length, 1);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-nested-obj-undefined-hole.js b/test/language/statements/for-await-of/dstr-array-rest-nested-obj-undefined-hole.js
deleted file mode 100644
index fe597fa823a9e9cab359ec54f4694947ae5972bb..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-nested-obj-undefined-hole.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-nested-obj-undefined-hole.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an array literal and the iterable is an array with a "hole", an array with a single `undefined` element should be used as the value of the nested DestructuringAssignment. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-// Use the the top-level lexical scope for 'length' to provide compatibility with browsers
-// where length and name are properties of WindowProxy
-let length;
-
-var counter = 0;
-
-async function fn() {
-  for await ([...{ 0: x, length }] of [[ , ]]) {
-    assert.sameValue(x, undefined);
-    assert.sameValue(length, 1);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-nested-obj-undefined-own.js b/test/language/statements/for-await-of/dstr-array-rest-nested-obj-undefined-own.js
deleted file mode 100644
index e75832cde021657cc15dd082b5a4a41e17fd2146..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-nested-obj-undefined-own.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-nested-obj-undefined-own.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an array literal and the iterable emits `undefined` as the only value, an array with a single `undefined` element should be used as the value of the nested DestructuringAssignment. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-// Use the the top-level lexical scope for 'length' to provide compatibility with browsers
-// where length and name are properties of WindowProxy
-let length;
-
-var counter = 0;
-
-async function fn() {
-  for await ([...{ 0: x, length }] of [[undefined]]) {
-    assert.sameValue(x, undefined);
-    assert.sameValue(length, 1);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-nested-obj-undefined.js b/test/language/statements/for-await-of/dstr-array-rest-nested-obj-undefined.js
deleted file mode 100644
index 470a0ac3cd9cbced5dd79a7ec194870b6c3ac788..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-nested-obj-undefined.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-nested-obj-undefined.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an obect literal and the iterable is emits no values, an empty array should be used as the value of the nested DestructuringAssignment. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-// Use the the top-level lexical scope for 'length' to provide compatibility with browsers
-// where length and name are properties of WindowProxy
-let length;
-
-var counter = 0;
-
-async function fn() {
-  for await ([...{ 0: x, length }] of [[]]) {
-    assert.sameValue(x, undefined);
-    assert.sameValue(length, 0);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-nested-obj-yield-expr.js b/test/language/statements/for-await-of/dstr-array-rest-nested-obj-yield-expr.js
deleted file mode 100644
index 2be57590b489a057bfa0243855ab414929f901f6..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-nested-obj-yield-expr.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-nested-obj-yield-expr.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the Initializer of a nested destructuring assignment and within a generator function body, it should behave as a YieldExpression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var iterationResult, iter, x;
-
-iter = (function*() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([...{ x = yield }] of [[{}]]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}());
-
-iterationResult = iter.next();
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, false);
-assert.sameValue(x, undefined);
-
-iterationResult = iter.next(4);
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, true);
-assert.sameValue(x, 4);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-nested-obj-yield-ident-valid.js b/test/language/statements/for-await-of/dstr-array-rest-nested-obj-yield-ident-valid.js
deleted file mode 100644
index f2b21cfab52d4020ada55e817b996baa0f601e1b..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-nested-obj-yield-ident-valid.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-nested-obj-yield-ident-valid.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the Initializer of a nested destructuring assignment and outside of a generator function body, it should behave as an IdentifierExpression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var yield = 2;
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ([...{ x = yield }] of [[{}]]) {
-    assert.sameValue(x, 2);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-nested-obj.js b/test/language/statements/for-await-of/dstr-array-rest-nested-obj.js
deleted file mode 100644
index 4294b8c84fd4aa481c90d5487b0aa852437dabc8..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-nested-obj.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-nested-obj.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an object literal, it should be parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ([...{ 1: x }] of [[1, 2, 3]]) {
-    assert.sameValue(x, 2);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-put-prop-ref-no-get.js b/test/language/statements/for-await-of/dstr-array-rest-put-prop-ref-no-get.js
deleted file mode 100644
index c705eae15eae4472b0c4d0b3c979712430fae7c4..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-put-prop-ref-no-get.js
+++ /dev/null
@@ -1,51 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-put-prop-ref-no-get.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: If the DestructuringAssignmentTarget of an AssignmentElement is a PropertyReference, it should not be evaluated. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var setValue;
-var x = {
-  get y() {
-    $ERROR('The property should not be accessed.');
-  },
-  set y(val) {
-    setValue = val;
-  }
-};
-
-var counter = 0;
-
-async function fn() {
-  for await ([...x.y] of [[23, 45, 99]]) {
-    assert.sameValue(setValue.length, 3);
-    assert.sameValue(setValue[0], 23);
-    assert.sameValue(setValue[1], 45);
-    assert.sameValue(setValue[2], 99);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-put-prop-ref.js b/test/language/statements/for-await-of/dstr-array-rest-put-prop-ref.js
deleted file mode 100644
index 4fe4659dc68c250a196b82aac6f0d67d2a37c67c..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-put-prop-ref.js
+++ /dev/null
@@ -1,43 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-put-prop-ref.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: The DestructuringAssignmentTarget of an AssignmentElement may be a PropertyReference. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = {};
-
-var counter = 0;
-
-async function fn() {
-  for await ([...x.y] of [[4, 3, 2]]) {
-    assert.sameValue(x.y.length, 3);
-    assert.sameValue(x.y[0], 4);
-    assert.sameValue(x.y[1], 3);
-    assert.sameValue(x.y[2], 2);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-put-unresolvable-no-strict.js b/test/language/statements/for-await-of/dstr-array-rest-put-unresolvable-no-strict.js
deleted file mode 100644
index 8e6ff5b606b6bf0ce9025f9ca7813f3619da73d5..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-put-unresolvable-no-strict.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-put-unresolvable-no-strict.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Outside of strict mode, if the the assignment target is an unresolvable reference, a new `var` binding should be created in the environment record. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-{
-
-var counter = 0;
-
-async function fn() {
-  for await ([ ...unresolvable ] of [[]]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}
-
-assert.sameValue(unresolvable.length, 0);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-yield-expr.js b/test/language/statements/for-await-of/dstr-array-rest-yield-expr.js
deleted file mode 100644
index c43782995988359c741fbbd00bb897710575cdf8..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-yield-expr.js
+++ /dev/null
@@ -1,60 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-yield-expr.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the DestructuringAssignmentTarget of an AssignmentRestElement and within the body of a generator function, it should behave as a YieldExpression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = {};
-var iterationResult, iter;
-
-iter = (function*() {
-
-var counter = 0;
-
-async function fn() {
-  for await ([...x[yield]] of [[33, 44, 55]]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}());
-
-iterationResult = iter.next();
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, false);
-assert.sameValue(x.prop, undefined);
-
-iterationResult = iter.next('prop');
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, true);
-assert.sameValue(x.prop.length, 3);
-assert.sameValue(x.prop[0], 33);
-assert.sameValue(x.prop[1], 44);
-assert.sameValue(x.prop[2], 55);
diff --git a/test/language/statements/for-await-of/dstr-array-rest-yield-ident-valid.js b/test/language/statements/for-await-of/dstr-array-rest-yield-ident-valid.js
deleted file mode 100644
index 1cb9d4ebed32b42dd819b2ce667ad4f20e36090b..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-array-rest-yield-ident-valid.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/array-rest-yield-ident-valid.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the DestructuringAssignmentTarget of an AssignmentRestElement and outside of a generator function body, it should behave as an IdentifierReference. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var yield = 'prop';
-var x = {};
-
-var counter = 0;
-
-async function fn() {
-  for await ([...x[yield]] of [[33, 44, 55]]) {
-    assert.sameValue(x.prop.length, 3);
-    assert.sameValue(x.prop[0], 33);
-    assert.sameValue(x.prop[1], 44);
-    assert.sameValue(x.prop[2], 55);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-empty-bool.js b/test/language/statements/for-await-of/dstr-obj-empty-bool.js
deleted file mode 100644
index ad785f19544b0b14538f708458e39b5a709821f6..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-empty-bool.js
+++ /dev/null
@@ -1,39 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-empty-bool.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: An ObjectAssignmentPattern without an AssignmentPropertyList requires an object-coercible value (boolean value) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-
-var counter = 0;
-
-async function fn() {
-  for await ({} of [false]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-empty-num.js b/test/language/statements/for-await-of/dstr-obj-empty-num.js
deleted file mode 100644
index bcf4e95a444b22640cc9cc938e6cc361db839b93..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-empty-num.js
+++ /dev/null
@@ -1,39 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-empty-num.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: An ObjectAssignmentPattern without an AssignmentPropertyList requires an object-coercible value (number value) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-
-var counter = 0;
-
-async function fn() {
-  for await ({} of [0]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-empty-obj.js b/test/language/statements/for-await-of/dstr-obj-empty-obj.js
deleted file mode 100644
index 4c0db8e5fcdb8a424593231697f6eefe9650b270..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-empty-obj.js
+++ /dev/null
@@ -1,39 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-empty-obj.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: An ObjectAssignmentPattern without an AssignmentPropertyList requires an object-coercible value (object value) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-
-var counter = 0;
-
-async function fn() {
-  for await ({} of [{}]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-empty-string.js b/test/language/statements/for-await-of/dstr-obj-empty-string.js
deleted file mode 100644
index b4e26d6474926aa40b01ea7c7f98a6e2db75f4eb..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-empty-string.js
+++ /dev/null
@@ -1,39 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-empty-string.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: An ObjectAssignmentPattern without an AssignmentPropertyList requires an object-coercible value (string value) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-
-var counter = 0;
-
-async function fn() {
-  for await ({} of ['']) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-empty-symbol.js b/test/language/statements/for-await-of/dstr-obj-empty-symbol.js
deleted file mode 100644
index a09130983c7f0456f443d8c4c9e762931a9cc635..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-empty-symbol.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-empty-symbol.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: An ObjectAssignmentPattern without an AssignmentPropertyList requires an object-coercible value (symbol value) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [Symbol, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var s = Symbol();
-
-var counter = 0;
-
-async function fn() {
-  for await ({} of [s]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-first.js b/test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-first.js
deleted file mode 100644
index 7830d74f61620358c72f048fcae0485d4e34a426..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-first.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-identifier-resolution-first.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Evaluation of DestructuringAssignmentTarget (first of many) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-var y;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x, y } of [{ x: 3 }]) {
-    assert.sameValue(x, 3);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-last.js b/test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-last.js
deleted file mode 100644
index 46abcb93711ea13bcfd5e9c20ead5c5e0ab2da99..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-last.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-identifier-resolution-last.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Evaluation of DestructuringAssignmentTarget (last of many) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-var w;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ w, x } of [{ x: 4 }]) {
-    assert.sameValue(x, 4);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-lone.js b/test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-lone.js
deleted file mode 100644
index dcce9d28d94a2b4b02fba2ea49969f7773a48e56..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-lone.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-identifier-resolution-lone.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Evaluation of DestructuringAssignmentTarget (lone identifier) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x, } of [{ x: 2 }]) {
-    assert.sameValue(x, 2);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-middle.js b/test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-middle.js
deleted file mode 100644
index 02ff3f7f5f5b00b871b0bd8f9c0d2a5e58f600da..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-middle.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-identifier-resolution-middle.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Evaluation of DestructuringAssignmentTarget (within many) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-var w, y;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ w, x, y } of [{ x: 5 }]) {
-    assert.sameValue(x, 5);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-trlng.js b/test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-trlng.js
deleted file mode 100644
index dc1dfdb3f0161694146960cd93f001fa1510a3c7..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-trlng.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-identifier-resolution-trlng.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Evaluation of DestructuringAssignmentTarget (lone identifier with trailing comma) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x } of [{ x: 1 }]) {
-    assert.sameValue(x, 1);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-identifier-yield-ident-valid.js b/test/language/statements/for-await-of/dstr-obj-id-identifier-yield-ident-valid.js
deleted file mode 100644
index cbbad6d53432786ed50c05c6b6a83d7f6c5e2a4f..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-identifier-yield-ident-valid.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-identifier-yield-ident-valid.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: yield is a valid IdentifierReference in an AssignmentProperty outside of strict mode and generator functions. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var yield;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ yield } of [{ yield: 3 }]) {
-    assert.sameValue(yield, 3);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-init-assignment-missing.js b/test/language/statements/for-await-of/dstr-obj-id-init-assignment-missing.js
deleted file mode 100644
index 27be57883eea95938a46754ed7a0b89c38eeb907..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-init-assignment-missing.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-init-assignment-missing.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: If the Initializer is present and v is undefined, the Initializer should be evaluated and the result assigned to the target reference (no corresponding property defined). (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x = 1 } of [{}]) {
-    assert.sameValue(x, 1);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-init-assignment-null.js b/test/language/statements/for-await-of/dstr-obj-id-init-assignment-null.js
deleted file mode 100644
index fce306b29fe086a2a9d4f563adbd44e4d468d578..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-init-assignment-null.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-init-assignment-null.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: If the Initializer is present and v is undefined, the Initializer should be evaluated and the result assigned to the target reference (null property value defined). (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x = 1 } of [{ x: null }]) {
-    assert.sameValue(x, null);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-init-assignment-truthy.js b/test/language/statements/for-await-of/dstr-obj-id-init-assignment-truthy.js
deleted file mode 100644
index 4d64159d026ec40baa2fc85e8510311e5f1211dd..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-init-assignment-truthy.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-init-assignment-truthy.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: If the Initializer is present and v is undefined, the Initializer should be evaluated and the result assigned to the target reference (truthy property value defined). (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x = 1 } of [{ x: 2 }]) {
-    assert.sameValue(x, 2);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-init-assignment-undef.js b/test/language/statements/for-await-of/dstr-obj-id-init-assignment-undef.js
deleted file mode 100644
index 3d414449c17b6524fd0cd869972075b457065427..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-init-assignment-undef.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-init-assignment-undef.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: If the Initializer is present and v is undefined, the Initializer should be evaluated and the result assigned to the target reference ("undefined" property value defined). (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x = 1 } of [{ x: undefined }]) {
-    assert.sameValue(x, 1);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-init-evaluation.js b/test/language/statements/for-await-of/dstr-obj-id-init-evaluation.js
deleted file mode 100644
index 1f1c5dfbf4554c09f7c1c167b2e4f557c31d6034..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-init-evaluation.js
+++ /dev/null
@@ -1,43 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-init-evaluation.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: The Initializer should only be evaluated if v is undefined. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var flag1 = false;
-var flag2 = false;
-var x, y;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x = flag1 = true, y = flag2 = true } of [{ y: 1 }]) {
-    assert.sameValue(flag1, true);
-    assert.sameValue(flag2, false);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-init-fn-name-arrow.js b/test/language/statements/for-await-of/dstr-obj-id-init-fn-name-arrow.js
deleted file mode 100644
index 0905a9d9f99c7cbda9a2c17656763fae7b6ff68e..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-init-fn-name-arrow.js
+++ /dev/null
@@ -1,53 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-init-fn-name-arrow.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Assignment of function `name` attribute (ArrowFunction) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    AssignmentProperty : IdentifierReference Initializeropt
-    [...] 6. If Initializeropt is present and v is undefined, then
-       [...]
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
-          i. Let hasNameProperty be HasOwnProperty(v, "name").
-          ii. ReturnIfAbrupt(hasNameProperty).
-          iii. If hasNameProperty is false, perform SetFunctionName(v, P).
-
----*/
-var arrow;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ arrow = () => {} } of [{}]) {
-    assert.sameValue(arrow.name, 'arrow');
-    verifyNotEnumerable(arrow, 'name');
-    verifyNotWritable(arrow, 'name');
-    verifyConfigurable(arrow, 'name');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-init-fn-name-class.js b/test/language/statements/for-await-of/dstr-obj-id-init-fn-name-class.js
deleted file mode 100644
index ac2b9629b6d7d4d5e0873ccf9a58575f9d1beb14..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-init-fn-name-class.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-init-fn-name-class.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Assignment of function `name` attribute (ClassExpression) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [class, destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    AssignmentProperty : IdentifierReference Initializeropt
-    [...] 6. If Initializeropt is present and v is undefined, then
-       [...]
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
-          i. Let hasNameProperty be HasOwnProperty(v, "name").
-          ii. ReturnIfAbrupt(hasNameProperty).
-          iii. If hasNameProperty is false, perform SetFunctionName(v, P).
-
----*/
-var xCls, cls, xCls2;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ xCls = class x {}, cls = class {}, xCls2 = class { static name() {} } } of [{}]) {
-    assert.notSameValue(xCls.name, 'xCls');
-    assert.notSameValue(xCls2.name, 'xCls2');
-
-    assert.sameValue(cls.name, 'cls');
-    verifyNotEnumerable(cls, 'name');
-    verifyNotWritable(cls, 'name');
-    verifyConfigurable(cls, 'name');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-init-fn-name-cover.js b/test/language/statements/for-await-of/dstr-obj-id-init-fn-name-cover.js
deleted file mode 100644
index a8b5ffefbfebd7c1d729a9b148c782df0124ecae..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-init-fn-name-cover.js
+++ /dev/null
@@ -1,55 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-init-fn-name-cover.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Assignment of function `name` attribute (CoverParenthesizedExpression) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    AssignmentProperty : IdentifierReference Initializeropt
-    [...] 6. If Initializeropt is present and v is undefined, then
-       [...]
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
-          i. Let hasNameProperty be HasOwnProperty(v, "name").
-          ii. ReturnIfAbrupt(hasNameProperty).
-          iii. If hasNameProperty is false, perform SetFunctionName(v, P).
-
----*/
-var xCover, cover;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ xCover = (0, function() {}), cover = (function() {}) } of [{}]) {
-    assert.notSameValue(xCover.name, 'xCover');
-
-    assert.sameValue(cover.name, 'cover');
-    verifyNotEnumerable(cover, 'name');
-    verifyNotWritable(cover, 'name');
-    verifyConfigurable(cover, 'name');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-init-fn-name-fn.js b/test/language/statements/for-await-of/dstr-obj-id-init-fn-name-fn.js
deleted file mode 100644
index 52d6f587ae671369e45a10e4c6b76807418a00ff..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-init-fn-name-fn.js
+++ /dev/null
@@ -1,55 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-init-fn-name-fn.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Assignment of function `name` attribute (FunctionExpression) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    AssignmentProperty : IdentifierReference Initializeropt
-    [...] 6. If Initializeropt is present and v is undefined, then
-       [...]
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
-          i. Let hasNameProperty be HasOwnProperty(v, "name").
-          ii. ReturnIfAbrupt(hasNameProperty).
-          iii. If hasNameProperty is false, perform SetFunctionName(v, P).
-
----*/
-var xFn, fn;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ xFn = function x() {}, fn = function() {} } of [{}]) {
-    assert.notSameValue(xFn.name, 'xFn');
-
-    assert.sameValue(fn.name, 'fn');
-    verifyNotEnumerable(fn, 'name');
-    verifyNotWritable(fn, 'name');
-    verifyConfigurable(fn, 'name');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-init-fn-name-gen.js b/test/language/statements/for-await-of/dstr-obj-id-init-fn-name-gen.js
deleted file mode 100644
index 95ffac652f00e805dd90769a103e0e1b78a4af86..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-init-fn-name-gen.js
+++ /dev/null
@@ -1,55 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-init-fn-name-gen.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Assignment of function `name` attribute (GeneratorExpression) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    AssignmentProperty : IdentifierReference Initializeropt
-    [...] 6. If Initializeropt is present and v is undefined, then
-       [...]
-       d. If IsAnonymousFunctionDefinition(Initializer) is true, then
-          i. Let hasNameProperty be HasOwnProperty(v, "name").
-          ii. ReturnIfAbrupt(hasNameProperty).
-          iii. If hasNameProperty is false, perform SetFunctionName(v, P).
-
----*/
-var xGen, gen;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ xGen = function* x() {}, gen = function*() {} } of [{}]) {
-    assert.notSameValue(xGen.name, 'xGen');
-
-    assert.sameValue(gen.name, 'gen');
-    verifyNotEnumerable(gen, 'name');
-    verifyNotWritable(gen, 'name');
-    verifyConfigurable(gen, 'name');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-init-in.js b/test/language/statements/for-await-of/dstr-obj-id-init-in.js
deleted file mode 100644
index 5ccf0a61839b75e81d1fd2cfc764b9fd13be78f8..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-init-in.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-init-in.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: The Initializer in an AssignmentProperty may be an `in` expression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var prop;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ prop = 'x' in {} } of [{}]) {
-    assert.sameValue(prop, false);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-init-order.js b/test/language/statements/for-await-of/dstr-obj-id-init-order.js
deleted file mode 100644
index 67b87e0f6d1dd2e45df8652082a6c8731367e450..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-init-order.js
+++ /dev/null
@@ -1,43 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-init-order.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Initializer values should be assigned in left-to-right order. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = 0;
-var a, b;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ a = x += 1, b = x *= 2 } of [{}]) {
-    assert.sameValue(a, 1);
-    assert.sameValue(b, 2);
-    assert.sameValue(x, 2);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-init-simple-no-strict.js b/test/language/statements/for-await-of/dstr-obj-id-init-simple-no-strict.js
deleted file mode 100644
index 159a1dc274486d1da829521defb8cc67e3940b51..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-init-simple-no-strict.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-init-simple-no-strict.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Evaluation of DestructuringAssignmentTarget. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var eval, arguments;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ eval = 3, arguments = 4 } of [{}]) {
-    assert.sameValue(eval, 3);
-    assert.sameValue(arguments, 4);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-init-yield-expr.js b/test/language/statements/for-await-of/dstr-obj-id-init-yield-expr.js
deleted file mode 100644
index bbe38946b1ebb4c0452d212eb99911c36179ebd4..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-init-yield-expr.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-init-yield-expr.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the Initializer of an AssignmentProperty and within a generator function body, it should behave as a YieldExpression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var iterationResult, x, iter;
-
-iter = (function*() {
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x = yield } of [{}]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}());
-
-iterationResult = iter.next();
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, false);
-assert.sameValue(x, undefined);
-
-iterationResult = iter.next(3);
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, true);
-assert.sameValue(x, 3);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-init-yield-ident-valid.js b/test/language/statements/for-await-of/dstr-obj-id-init-yield-ident-valid.js
deleted file mode 100644
index b367dcca14f5e3f5d4ed809c856b3d85c054ebdb..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-init-yield-ident-valid.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-init-yield-ident-valid.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the Initializer of an AssignmentProperty and outside of a generator function body, it should behave as an IdentifierReference. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var yield = 3;
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x = yield } of [{}]) {
-    assert.sameValue(x, 3);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-put-unresolvable-no-strict.js b/test/language/statements/for-await-of/dstr-obj-id-put-unresolvable-no-strict.js
deleted file mode 100644
index d385aa8367c6e7a9e1398881cba5204a56dea35c..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-put-unresolvable-no-strict.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-put-unresolvable-no-strict.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Outside of strict mode, if the the assignment target is an unresolvable reference, a new `var` binding should be created in the environment record. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-{
-
-var counter = 0;
-
-async function fn() {
-  for await ({ unresolvable } of [{}]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}
-
-assert.sameValue(unresolvable, undefined);
diff --git a/test/language/statements/for-await-of/dstr-obj-id-simple-no-strict.js b/test/language/statements/for-await-of/dstr-obj-id-simple-no-strict.js
deleted file mode 100644
index 8f0f992cfaa1b066bcfe11c5472f1db5d1a6941a..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-id-simple-no-strict.js
+++ /dev/null
@@ -1,43 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-id-simple-no-strict.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Evaluation of DestructuringAssignmentTarget. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var eval, arguments;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ eval, arguments } of [{ eval: 1, arguments: 2 }]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-assert.sameValue(eval, 1);
-assert.sameValue(arguments, 2);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-missing.js b/test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-missing.js
deleted file mode 100644
index 6a87653fc709cd71cb0980e6dce673bfb3cd0bbc..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-missing.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-elem-init-assignment-missing.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: If the Initializer is present and v is undefined, the Initializer should be evaluated and the result assigned to the target reference (non-existent property) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ y: x = 1 } of [{}]) {
-    assert.sameValue(x, 1);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-null.js b/test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-null.js
deleted file mode 100644
index c67bac5676f701d7f29946a2139c3cab6bfc9277..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-null.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-elem-init-assignment-null.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: If the Initializer is present and v is not undefined, the Initializer should be evaluated and the result assigned to the target reference (null value) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ y: x = 1 } of [{ y: null }]) {
-    assert.sameValue(x, null);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-truthy.js b/test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-truthy.js
deleted file mode 100644
index 66c39eb535d3242d7b447c7e420d8a41fcacefa1..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-truthy.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-elem-init-assignment-truthy.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: If the Initializer is present and v is not undefined, the Initializer should be evaluated and the result assigned to the target reference (truthy value) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ y: x = 1 } of [{ y: 2 }]) {
-    assert.sameValue(x, 2);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-undef.js b/test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-undef.js
deleted file mode 100644
index 0042c030a80ead6345f0c69618b3d12dcdf927d7..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-undef.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-elem-init-assignment-undef.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: If the Initializer is present and v is undefined, the Initializer should be evaluated and the result assigned to the target reference (undefined value) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ y: x = 1 } of [{ y: undefined }]) {
-    assert.sameValue(x, 1);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-evaluation.js b/test/language/statements/for-await-of/dstr-obj-prop-elem-init-evaluation.js
deleted file mode 100644
index 1d70028902346c538b8c58217dece0bb530373d0..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-evaluation.js
+++ /dev/null
@@ -1,45 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-elem-init-evaluation.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: The Initializer should only be evaluated if v is undefined. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var flag1 = false;
-var flag2 = false;
-var x, y;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: x = flag1 = true, y: y = flag2 = true } of [{ y: 1 }]) {
-    assert.sameValue(x, true, 'value of `x`');
-    assert.sameValue(flag1, true, 'value of `flag1`');
-    assert.sameValue(y, 1, 'value of `y`');
-    assert.sameValue(flag2, false, 'value of `flag2`');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-arrow.js b/test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-arrow.js
deleted file mode 100644
index ad7a8b454520a7818316cc17c789496fc7145d93..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-arrow.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-elem-init-fn-name-arrow.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Assignment of function `name` attribute (ArrowFunction) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    AssignmentElement[Yield] : DestructuringAssignmentTarget Initializeropt
-    [...] 7. If Initializer is present and v is undefined and
-       IsAnonymousFunctionDefinition(Initializer) and IsIdentifierRef of
-       DestructuringAssignmentTarget are both true, then
-       a. Let hasNameProperty be HasOwnProperty(rhsValue, "name").
-       b. ReturnIfAbrupt(hasNameProperty).
-       c. If hasNameProperty is false, perform SetFunctionName(rhsValue,
-          GetReferencedName(lref)).
-
----*/
-var arrow;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: arrow = () => {} } of [{}]) {
-    assert.sameValue(arrow.name, 'arrow');
-    verifyNotEnumerable(arrow, 'name');
-    verifyNotWritable(arrow, 'name');
-    verifyConfigurable(arrow, 'name');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-class.js b/test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-class.js
deleted file mode 100644
index d37d7ec7ce996b9b4ad5752bf04817231cd9f417..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-class.js
+++ /dev/null
@@ -1,57 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-elem-init-fn-name-class.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Assignment of function `name` attribute (ClassExpression) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [class, destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    AssignmentElement[Yield] : DestructuringAssignmentTarget Initializeropt
-    [...] 7. If Initializer is present and v is undefined and
-       IsAnonymousFunctionDefinition(Initializer) and IsIdentifierRef of
-       DestructuringAssignmentTarget are both true, then
-       a. Let hasNameProperty be HasOwnProperty(rhsValue, "name").
-       b. ReturnIfAbrupt(hasNameProperty).
-       c. If hasNameProperty is false, perform SetFunctionName(rhsValue,
-          GetReferencedName(lref)).
-
----*/
-var xCls, cls, xCls2;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: xCls = class x {}, x: cls = class {}, x: xCls2 = class { static name() {} } } of [{}]) {
-    assert.notSameValue(xCls.name, 'xCls');
-    assert.notSameValue(xCls2.name, 'xCls2');
-
-    assert.sameValue(cls.name, 'cls');
-    verifyNotEnumerable(cls, 'name');
-    verifyNotWritable(cls, 'name');
-    verifyConfigurable(cls, 'name');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-cover.js b/test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-cover.js
deleted file mode 100644
index 5b3e3105f54f443a5d5f743f605bf57ed3772323..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-cover.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-elem-init-fn-name-cover.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Assignment of function `name` attribute (CoverParenthesizedExpression) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    AssignmentElement[Yield] : DestructuringAssignmentTarget Initializeropt
-    [...] 7. If Initializer is present and v is undefined and
-       IsAnonymousFunctionDefinition(Initializer) and IsIdentifierRef of
-       DestructuringAssignmentTarget are both true, then
-       a. Let hasNameProperty be HasOwnProperty(rhsValue, "name").
-       b. ReturnIfAbrupt(hasNameProperty).
-       c. If hasNameProperty is false, perform SetFunctionName(rhsValue,
-          GetReferencedName(lref)).
-
----*/
-var xCover, cover;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: xCover = (0, function() {}), x: cover = (function() {}) } of [{}]) {
-    assert.notSameValue(xCover.name, 'xCover');
-
-    assert.sameValue(cover.name, 'cover');
-    verifyNotEnumerable(cover, 'name');
-    verifyNotWritable(cover, 'name');
-    verifyConfigurable(cover, 'name');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-fn.js b/test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-fn.js
deleted file mode 100644
index 933a1146d55b29fcfca6bed52872e06057bbb7ef..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-fn.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-elem-init-fn-name-fn.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Assignment of function `name` attribute (FunctionExpression) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    AssignmentElement[Yield] : DestructuringAssignmentTarget Initializeropt
-    [...] 7. If Initializer is present and v is undefined and
-       IsAnonymousFunctionDefinition(Initializer) and IsIdentifierRef of
-       DestructuringAssignmentTarget are both true, then
-       a. Let hasNameProperty be HasOwnProperty(rhsValue, "name").
-       b. ReturnIfAbrupt(hasNameProperty).
-       c. If hasNameProperty is false, perform SetFunctionName(rhsValue,
-          GetReferencedName(lref)).
-
----*/
-var xFn, fn;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: xFn = function x() {}, x: fn = function() {} } of [{}]) {
-    assert.notSameValue(xFn.name, 'xFn');
-
-    assert.sameValue(fn.name, 'fn');
-    verifyNotEnumerable(fn, 'name');
-    verifyNotWritable(fn, 'name');
-    verifyConfigurable(fn, 'name');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-gen.js b/test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-gen.js
deleted file mode 100644
index e9ad13e0728f29906c9ec37061be5a2b6242a105..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-gen.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-elem-init-fn-name-gen.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Assignment of function `name` attribute (GeneratorExpression) (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
-
-    AssignmentElement[Yield] : DestructuringAssignmentTarget Initializeropt
-    [...] 7. If Initializer is present and v is undefined and
-       IsAnonymousFunctionDefinition(Initializer) and IsIdentifierRef of
-       DestructuringAssignmentTarget are both true, then
-       a. Let hasNameProperty be HasOwnProperty(rhsValue, "name").
-       b. ReturnIfAbrupt(hasNameProperty).
-       c. If hasNameProperty is false, perform SetFunctionName(rhsValue,
-          GetReferencedName(lref)).
-
----*/
-var xGen, gen;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: xGen = function* x() {}, x: gen = function*() {} } of [{}]) {
-    assert.notSameValue(xGen.name, 'xGen');
-
-    assert.sameValue(gen.name, 'gen');
-    verifyNotEnumerable(gen, 'name');
-    verifyNotWritable(gen, 'name');
-    verifyConfigurable(gen, 'name');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-in.js b/test/language/statements/for-await-of/dstr-obj-prop-elem-init-in.js
deleted file mode 100644
index 119402efa102ebcd8363f011d12e3bab6b269ea0..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-in.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-elem-init-in.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: The Initializer in an AssignmentElement may be an `in` expression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var prop;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: prop = 'x' in {} } of [{}]) {
-    assert.sameValue(prop, false);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-yield-expr.js b/test/language/statements/for-await-of/dstr-obj-prop-elem-init-yield-expr.js
deleted file mode 100644
index 614793f4687cf6b7cef3e506ef764f07a57e7916..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-yield-expr.js
+++ /dev/null
@@ -1,55 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-elem-init-yield-expr.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the Initializer of an AssignmentElement and within a generator function body, it should behave as a YieldExpression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var iterationResult, iter, x;
-iter = (function*() {
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: x = yield } of [{}]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}());
-
-iterationResult = iter.next();
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, false);
-assert.sameValue(x, undefined);
-
-iterationResult = iter.next(86);
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, true);
-assert.sameValue(x, 86);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-yield-ident-valid.js b/test/language/statements/for-await-of/dstr-obj-prop-elem-init-yield-ident-valid.js
deleted file mode 100644
index 7b559b44b222dc60e405869d361be85d0a646211..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-elem-init-yield-ident-valid.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-elem-init-yield-ident-valid.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the Initializer of an AssignmentElement and outside of a generator function body, it should behave as an IdentifierReference. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var yield = 4;
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: x = yield } of [{}]) {
-    assert.sameValue(x, 4);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-elem-target-yield-expr.js b/test/language/statements/for-await-of/dstr-obj-prop-elem-target-yield-expr.js
deleted file mode 100644
index c281b74ed61ddc86bd897505a40828ca5a7faff2..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-elem-target-yield-expr.js
+++ /dev/null
@@ -1,57 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-elem-target-yield-expr.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the DestructuringAssignmentTarget of an AssignmentElement and within a generator function body, it should behave as a YieldExpression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = {};
-var iterationResult, iter;
-
-iter = (function*() {
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: x[yield] } of [{ x: 23 }]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}());
-
-iterationResult = iter.next();
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, false);
-assert.sameValue(x.prop, undefined);
-
-iterationResult = iter.next('prop');
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, true);
-assert.sameValue(x.prop, 23);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-elem-target-yield-ident-valid.js b/test/language/statements/for-await-of/dstr-obj-prop-elem-target-yield-ident-valid.js
deleted file mode 100644
index 5670e4b7da5aa14cfda074d218f4148237d6bdc8..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-elem-target-yield-ident-valid.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-elem-target-yield-ident-valid.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the DestructuringAssignmentTarget of an AssignmentElement and outside of a generator function body, it should behave as an IdentifierReference. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var yield = 'prop';
-var x = {};
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: x[yield] } of [{ x: 23 }]) {
-    assert.sameValue(x.prop, 23);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-first.js b/test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-first.js
deleted file mode 100644
index 75fd08237797f4cc21ae38fbb115fc77e727458e..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-first.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-identifier-resolution-first.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Evaluation of DestructuringAssignmentTarget (first of many). (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-var y;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ a: x, y } of [{ a: 3 }]) {
-    assert.sameValue(x, 3);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-last.js b/test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-last.js
deleted file mode 100644
index 31e0e54cccf916e684c0d2bc50902e2089dc5a97..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-last.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-identifier-resolution-last.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Evaluation of DestructuringAssignmentTarget (last of many). (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-var w;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ w, a: x } of [{ a: 4 }]) {
-    assert.sameValue(x, 4);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-lone.js b/test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-lone.js
deleted file mode 100644
index 5a5b775121524591d4f0a841484d8fdb89e48266..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-lone.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-identifier-resolution-lone.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Evaluation of DestructuringAssignmentTarget (lone element). (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ a: x } of [{ a: 1 }]) {
-    assert.sameValue(x, 1);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-middle.js b/test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-middle.js
deleted file mode 100644
index 827c0081f2579e10843934917b7d45ab20c2fc2a..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-middle.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-identifier-resolution-middle.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Evaluation of DestructuringAssignmentTarget (within many). (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-var w, y;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ w, a: x, y } of [{ a: 5 }]) {
-    assert.sameValue(x, 5);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-trlng.js b/test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-trlng.js
deleted file mode 100644
index 34c9ed03a1c81e27a0eb98b198744bb7e53d0593..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-trlng.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-identifier-resolution-trlng.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Evaluation of DestructuringAssignmentTarget (lone element with trailing comma). (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = null;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ a: x, } of [{ a: 2 }]) {
-    assert.sameValue(x, 2);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-name-evaluation.js b/test/language/statements/for-await-of/dstr-obj-prop-name-evaluation.js
deleted file mode 100644
index 2ddb1000eb72a0b0af3af04f252e28fd6f9df696..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-name-evaluation.js
+++ /dev/null
@@ -1,42 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-name-evaluation.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: PropertyName of an AssignmentProperty may be a ComputedPropertyName. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x, y, xy;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ ['x' + 'y']: x } of [{ x: 1, xy: 23, y: 2 }]) {
-    assert.sameValue(x, 23);
-    assert.sameValue(y, undefined);
-    assert.sameValue(xy, undefined);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-nested-array-yield-expr.js b/test/language/statements/for-await-of/dstr-obj-prop-nested-array-yield-expr.js
deleted file mode 100644
index 497cc6c313a4c23a1838d0c0d5f18a43ce28d938..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-nested-array-yield-expr.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-nested-array-yield-expr.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the Initializer of a nested destructuring assignment and within a generator function body, it should behave as a YieldExpression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var iterationResult, iter, x;
-
-iter = (function*() {
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: [x = yield] } of [{ x: [] }]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}());
-
-iterationResult = iter.next();
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, false);
-assert.sameValue(x, undefined);
-
-iterationResult = iter.next(24601);
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, true);
-assert.sameValue(x, 24601);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-nested-array-yield-ident-valid.js b/test/language/statements/for-await-of/dstr-obj-prop-nested-array-yield-ident-valid.js
deleted file mode 100644
index fb7d3f4132ad9dd4d637534f8e86e835110c9889..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-nested-array-yield-ident-valid.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-nested-array-yield-ident-valid.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the Initializer of a nested destructuring assignment and outside of a generator function body, it should behave as an IdentifierReference. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var yield = 22;
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: [x = yield] } of [{ x: [] }]) {
-    assert.sameValue(x, 22);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-nested-array.js b/test/language/statements/for-await-of/dstr-obj-prop-nested-array.js
deleted file mode 100644
index f1a26cb1a5bce5ac2a25a0d1a9c87bd26519b60b..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-nested-array.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-nested-array.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an array literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var y;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: [y] } of [{ x: [321] }]) {
-    assert.sameValue(y, 321);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-nested-obj-yield-expr.js b/test/language/statements/for-await-of/dstr-obj-prop-nested-obj-yield-expr.js
deleted file mode 100644
index 9219d743c5896538953c547dfd91c37e6463e8f6..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-nested-obj-yield-expr.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-nested-obj-yield-expr.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the Initializer of a nested destructuring assignment and within a generator function body, it should behave as a YieldExpression. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [generators, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var iterationResult, iter, x = undefined;
-
-iter = (function*() {
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: { x = yield } } of [{ x: {} }]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}());
-
-iterationResult = iter.next();
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, false);
-assert.sameValue(x, undefined);
-
-iterationResult = iter.next(4);
-
-assert.sameValue(iterationResult.value, undefined);
-assert.sameValue(iterationResult.done, true);
-assert.sameValue(x, 4);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-nested-obj-yield-ident-valid.js b/test/language/statements/for-await-of/dstr-obj-prop-nested-obj-yield-ident-valid.js
deleted file mode 100644
index f7e0f638739623c71a5b548e9869cbcb6e6b413d..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-nested-obj-yield-ident-valid.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-nested-obj-yield-ident-valid.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When a `yield` token appears within the Initializer of a nested destructuring assignment and outside of a generator function body, it should behave as an IdentifierReference. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var yield = 2;
-var result, x;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: { x = yield } } of [{ x: {} }]) {
-    assert.sameValue(x, 2);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-nested-obj.js b/test/language/statements/for-await-of/dstr-obj-prop-nested-obj.js
deleted file mode 100644
index 55e6e14b4347bf954b1470658efc2c26f7c4147f..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-nested-obj.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-nested-obj.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an object literal, it should be parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var result, y;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: { y } } of [{ x: { y: 2 } }]) {
-    assert.sameValue(y, 2);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-put-order.js b/test/language/statements/for-await-of/dstr-obj-prop-put-order.js
deleted file mode 100644
index 0a48ac6b61b83543c35475087bddf5a5c7fff3a8..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-put-order.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-put-order.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: The AssignmentElements in an AssignmentElementList are evaluated in left- to-right order. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ z: x, a: x } of [{ a: 2, z: 1 }]) {
-    assert.sameValue(x, 2);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-put-prop-ref-no-get.js b/test/language/statements/for-await-of/dstr-obj-prop-put-prop-ref-no-get.js
deleted file mode 100644
index 04b04ad0286572dac1477ca7be98c8b228f917fa..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-put-prop-ref-no-get.js
+++ /dev/null
@@ -1,48 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-put-prop-ref-no-get.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: If the DestructuringAssignmentTarget of an AssignmentElement is a PropertyReference, it should not be evaluated. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var setValue;
-var x = {
-  get y() {
-    $ERROR('The property should not be accessed.');
-  },
-  set y(val) {
-    setValue = val;
-  }
-};
-
-var counter = 0;
-
-async function fn() {
-  for await ({ a: x.y } of [{ a: 23 }]) {
-    assert.sameValue(setValue, 23);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-put-prop-ref.js b/test/language/statements/for-await-of/dstr-obj-prop-put-prop-ref.js
deleted file mode 100644
index 730e40577bcb74ae3ed59b4cacf511635c6ee730..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-put-prop-ref.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-put-prop-ref.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: The DestructuringAssignmentTarget of an AssignmentElement may be a PropertyReference. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x = {};
-
-var counter = 0;
-
-async function fn() {
-  for await ({ xy: x.y } of [{ xy: 4 }]) {
-    assert.sameValue(x.y, 4);
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-prop-put-unresolvable-no-strict.js b/test/language/statements/for-await-of/dstr-obj-prop-put-unresolvable-no-strict.js
deleted file mode 100644
index d374794b4b01ba2de9cc2b19ffd7cceccdc68b7b..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-prop-put-unresolvable-no-strict.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-prop-put-unresolvable-no-strict.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Outside of strict mode, if the the assignment target is an unresolvable reference, a new `var` binding should be created in the environment record. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [destructuring-binding, async-iteration]
-flags: [generated, noStrict, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-{
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x: unresolvable } of [{}]) {
-    
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
-
-}
-
-assert.sameValue(unresolvable, undefined);
diff --git a/test/language/statements/for-await-of/dstr-obj-rest-descriptors.js b/test/language/statements/for-await-of/dstr-obj-rest-descriptors.js
deleted file mode 100644
index 5dcfe88c613c1a30dbb93efae761954b1d028c3a..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-rest-descriptors.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-rest-descriptors.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Object created from rest deconstruction doesn't copy source object property descriptors. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [object-rest, destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var rest;
-var obj = {};
-Object.defineProperty(obj, "a", { value: 3, configurable: false, enumerable: true });
-Object.defineProperty(obj, "b", { value: 4, writable: false, enumerable: true });
-
-var counter = 0;
-
-async function fn() {
-  for await ({...rest} of [obj]) {
-    assert.sameValue(rest.a, 3);
-    assert.sameValue(rest.b, 4);
-
-    verifyEnumerable(rest, "a");
-    verifyWritable(rest, "a");
-    verifyConfigurable(rest, "a");
-
-    verifyEnumerable(rest, "b");
-    verifyWritable(rest, "b");
-    verifyConfigurable(rest, "b");
-
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-rest-empty-obj.js b/test/language/statements/for-await-of/dstr-obj-rest-empty-obj.js
deleted file mode 100644
index fb8351c3b9f10e7612abc1d4040108ec04a0f072..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-rest-empty-obj.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-rest-empty-obj.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: RestBindingInitialization creates a new object even if lhs is an empty object (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [object-rest, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var rest;
-
-
-var counter = 0;
-
-async function fn() {
-  for await ({...rest} of [{}]) {
-    assert.notSameValue(rest, undefined);
-    assert.notSameValue(rest, null);
-    assert.sameValue(typeof rest, "object");
-
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-rest-getter.js b/test/language/statements/for-await-of/dstr-obj-rest-getter.js
deleted file mode 100644
index 6c20d66a606a8a20e35bd606f3c19f2dbaa9d846..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-rest-getter.js
+++ /dev/null
@@ -1,48 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-rest-getter.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Getter is called when obj is being deconstructed to a rest Object (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [object-rest, destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var x;
-var count = 0;
-
-var counter = 0;
-
-async function fn() {
-  for await ({...x} of [{ get v() { count++; return 2; } }]) {
-    assert.sameValue(x.v, 2);
-    assert.sameValue(count, 1);
-
-    verifyEnumerable(x, "v");
-    verifyWritable(x, "v");
-    verifyConfigurable(x, "v");
-
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-rest-nested-obj-nested-rest.js b/test/language/statements/for-await-of/dstr-obj-rest-nested-obj-nested-rest.js
deleted file mode 100644
index eb5fbd358a4ffe33c6ed24c17828ebc7ca387a24..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-rest-nested-obj-nested-rest.js
+++ /dev/null
@@ -1,55 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-rest-nested-obj-nested-rest.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment and object rest desconstruction is allowed in that case. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [object-rest, destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var a, b, c, rest;
-
-var counter = 0;
-
-async function fn() {
-  for await ({a, b, ...{c, ...rest}} of [{a: 1, b: 2, c: 3, d: 4, e: 5}]) {
-    assert.sameValue(a, 1);
-    assert.sameValue(b, 2);
-    assert.sameValue(c, 3);
-
-    assert.sameValue(rest.d, 4);
-    assert.sameValue(rest.e, 5);
-
-    verifyEnumerable(rest, "d");
-    verifyWritable(rest, "d");
-    verifyConfigurable(rest, "d");
-
-    verifyEnumerable(rest, "e");
-    verifyWritable(rest, "e");
-    verifyConfigurable(rest, "e");
-
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-rest-nested-obj.js b/test/language/statements/for-await-of/dstr-obj-rest-nested-obj.js
deleted file mode 100644
index 54b86c9406abd4e783776f53cacdf51421a7e5ba..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-rest-nested-obj.js
+++ /dev/null
@@ -1,45 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-rest-nested-obj.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [object-rest, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var a, b, c, d, e;
-
-var counter = 0;
-
-async function fn() {
-  for await ({a, b, ...{c, e}} of [{a: 1, b: 2, c: 3, d: 4, e: 5}]) {
-    assert.sameValue(a, 1);
-    assert.sameValue(b, 2);
-    assert.sameValue(c, 3);
-    assert.sameValue(e, 5);
-    assert.sameValue(d, undefined);
-
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-rest-number.js b/test/language/statements/for-await-of/dstr-obj-rest-number.js
deleted file mode 100644
index fcc93e86bd659fa2a1996b3694b0e0ea8ea513c1..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-rest-number.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-rest-number.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: RestBindingInitialization creates a new object even if lhs is a Number (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [object-rest, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var rest;
-
-
-var counter = 0;
-
-async function fn() {
-  for await ({...rest} of [51]) {
-    assert.notSameValue(rest, undefined);
-    assert.notSameValue(rest, null);
-    assert(rest instanceof Object);
-
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-rest-obj-own-property.js b/test/language/statements/for-await-of/dstr-obj-rest-obj-own-property.js
deleted file mode 100644
index d6e9b175551c78f529a6330df823dee7caef37ec..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-rest-obj-own-property.js
+++ /dev/null
@@ -1,46 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-rest-obj-own-property.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Rest object contains just source object's own properties (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [object-rest, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var o = Object.create({ x: 1, y: 2 });
-o.z = 3;
-
-var x, y, z;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x, ...{y , z} } of [o]) {
-    assert.sameValue(x, 1);
-    assert.sameValue(y, undefined);
-    assert.sameValue(z, 3);
-
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-rest-same-name.js b/test/language/statements/for-await-of/dstr-obj-rest-same-name.js
deleted file mode 100644
index 63c531898d70e4e5f8c27966c6209bfdfa1ed505..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-rest-same-name.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-rest-same-name.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Proper setting in the values for rest name equal to a property name. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [object-rest, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var o = {
-    x: 42,
-    y: 39,
-    z: 'cheeseburger'
-};
-
-var x, y, z;
-
-var counter = 0;
-
-async function fn() {
-  for await ({ x, ...z } of [o]) {
-    assert.sameValue(x, 42);
-    assert.sameValue(y, undefined);
-    assert.sameValue(z.y, 39);
-    assert.sameValue(z.z, 'cheeseburger');
-
-    var keys = Object.keys(z);
-    assert.sameValue(keys.length, 2);
-    assert.sameValue(keys[0], 'y');
-    assert.sameValue(keys[1], 'z');
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-rest-skip-non-enumerable.js b/test/language/statements/for-await-of/dstr-obj-rest-skip-non-enumerable.js
deleted file mode 100644
index 70f108e0d06cea8066d70b0ef0fc3ccd9d4f5826..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-rest-skip-non-enumerable.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-rest-skip-non-enumerable.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Rest object doesn't contain non-enumerable properties (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [object-rest, destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var rest;
-var obj = {a: 3, b: 4};
-Object.defineProperty(obj, "x", { value: 4, enumerable: false });
-
-var counter = 0;
-
-async function fn() {
-  for await ({...rest} of [obj]) {
-    assert.sameValue(rest.a, 3);
-    assert.sameValue(rest.b, 4);
-    assert.sameValue(Object.getOwnPropertyDescriptor(rest, "x"), undefined);
-
-    verifyEnumerable(rest, "a");
-    verifyWritable(rest, "a");
-    verifyConfigurable(rest, "a");
-
-    verifyEnumerable(rest, "b");
-    verifyWritable(rest, "b");
-    verifyConfigurable(rest, "b");
-
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-rest-str-val.js b/test/language/statements/for-await-of/dstr-obj-rest-str-val.js
deleted file mode 100644
index be48d9b23946df64167d3c83da04af1ef5907b38..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-rest-str-val.js
+++ /dev/null
@@ -1,45 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-rest-str-val.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: RestBindingInitialization creats an object with indexes as property name (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [object-rest, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var rest;
-
-
-var counter = 0;
-
-async function fn() {
-  for await ({...rest} of ["foo"]) {
-    assert.sameValue(rest["0"], "f");
-    assert.sameValue(rest["1"], "o");
-    assert.sameValue(rest["2"], "o");
-    assert(rest instanceof Object);
-
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-rest-symbol-val.js b/test/language/statements/for-await-of/dstr-obj-rest-symbol-val.js
deleted file mode 100644
index 77b0e7fdf7547391a0fab8d6bd70602b78ded6c4..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-rest-symbol-val.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-rest-symbol-val.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: RestBindingInitialization creates a new object if lhs is a Symbol (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [object-rest, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var rest;
-
-
-var counter = 0;
-
-async function fn() {
-  for await ({...rest} of [Symbol("foo")]) {
-    assert.notSameValue(rest, undefined);
-    assert.notSameValue(rest, null);
-    assert(rest instanceof Object);
-
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-rest-to-property-with-setter.js b/test/language/statements/for-await-of/dstr-obj-rest-to-property-with-setter.js
deleted file mode 100644
index 9c28cb58050f924c225f8fed6aa3f952bc0f534c..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-rest-to-property-with-setter.js
+++ /dev/null
@@ -1,51 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-rest-to-property-with-setter.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an object property setter, its value should be binded as rest object. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [object-rest, destructuring-binding, async-iteration]
-flags: [generated, async]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var settedValue;
-var executedGetter = false;
-var src = {
-    get y() { executedGetter = true; },
-    set y(v) {
-        settedValue = v;
-    }
-}
-src.y = undefined;
-
-var counter = 0;
-
-async function fn() {
-  for await ({...src.y} of [{ x: 1, y: 2}]) {
-    assert.sameValue(settedValue.x, 1);
-    assert.sameValue(settedValue.y, 2);
-    assert(!executedGetter, "The property should not be accessed");
-
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-rest-to-property.js b/test/language/statements/for-await-of/dstr-obj-rest-to-property.js
deleted file mode 100644
index 3f8a1e9d87ebfa3c2c501b6bc2f0293dbc1fc192..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-rest-to-property.js
+++ /dev/null
@@ -1,47 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-rest-to-property.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: When DestructuringAssignmentTarget is an object property, its value should be binded as rest object. (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [object-rest, destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var src = {};
-
-var counter = 0;
-
-async function fn() {
-  for await ({...src.y} of [{ x: 1, y: 2}]) {
-    assert.sameValue(src.y.x, 1);
-    assert.sameValue(src.y.y, 2);
-
-    verifyEnumerable(src, "y");
-    verifyWritable(src, "y");
-    verifyConfigurable(src, "y");
-
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);
diff --git a/test/language/statements/for-await-of/dstr-obj-rest-valid-object.js b/test/language/statements/for-await-of/dstr-obj-rest-valid-object.js
deleted file mode 100644
index 5462f7fa22b64ba0e7be7923a20346c10cfbb1f3..0000000000000000000000000000000000000000
--- a/test/language/statements/for-await-of/dstr-obj-rest-valid-object.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// This file was procedurally generated from the following sources:
-// - src/dstr-assignment/obj-rest-valid-object.case
-// - src/dstr-assignment/default/for-await-of.template
-/*---
-description: Rest object contains just unextracted data (for-await-of statement)
-esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
-features: [object-rest, destructuring-binding, async-iteration]
-flags: [generated, async]
-includes: [propertyHelper.js]
-info: |
-    IterationStatement :
-      for await ( LeftHandSideExpression of AssignmentExpression ) Statement
-
-    1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
-       AssignmentExpression, iterate).
-    2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
-       keyResult, assignment, labelSet).
-
-    13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
-
-    [...]
-    5. If destructuring is true and if lhsKind is assignment, then
-       a. Assert: lhs is a LeftHandSideExpression.
-       b. Let assignmentPattern be the parse of the source text corresponding to
-          lhs using AssignmentPattern as the goal symbol.
-    [...]
----*/
-var rest, a, b;
-
-
-var counter = 0;
-
-async function fn() {
-  for await ({a, b, ...rest} of [{x: 1, y: 2, a: 5, b: 3}]) {
-    assert.sameValue(rest.x, 1);
-    assert.sameValue(rest.y, 2);
-    assert.sameValue(rest.a, undefined);
-    assert.sameValue(rest.b, undefined);
-
-    verifyEnumerable(rest, "x");
-    verifyWritable(rest, "x");
-    verifyConfigurable(rest, "x");
-
-    verifyEnumerable(rest, "y");
-    verifyWritable(rest, "y");
-    verifyConfigurable(rest, "y");
-
-    counter += 1;
-  }
-}
-
-fn()
-  .then(() => assert.sameValue(counter, 1, 'iteration occurred as expected'), $DONE)
-  .then($DONE, $DONE);