From 44e19a0fe6381c85cf428b08fb244eaf54bbc522 Mon Sep 17 00:00:00 2001
From: Rick Waldron <waldron.rick@gmail.com>
Date: Mon, 12 Jun 2017 17:08:59 -0400
Subject: [PATCH] Throw away tests

Signed-off-by: Rick Waldron <waldron.rick@gmail.com>
---
 .../dstr-array-elem-init-assignment.js        |  44 --------
 .../dstr-array-elem-init-evaluation.js        |  42 --------
 .../dstr-array-elem-init-fn-name-arrow.js     |  54 ----------
 .../dstr-array-elem-init-fn-name-class.js     |  57 ----------
 .../dstr-array-elem-init-fn-name-cover.js     |  56 ----------
 .../dstr-array-elem-init-fn-name-fn.js        |  56 ----------
 .../dstr-array-elem-init-fn-name-gen.js       |  56 ----------
 .../for-await-of/dstr-array-elem-init-in.js   |  40 -------
 .../dstr-array-elem-init-order.js             |  43 --------
 .../dstr-array-elem-init-simple-no-strict.js  |  41 -------
 .../dstr-array-elem-init-yield-expr.js        |  56 ----------
 .../dstr-array-elem-init-yield-ident-valid.js |  41 -------
 .../dstr-array-elem-iter-nrml-close-skip.js   |  64 -----------
 .../dstr-array-elem-iter-nrml-close.js        |  80 --------------
 .../dstr-array-elem-iter-rtrn-close-err.js    |  79 --------------
 .../dstr-array-elem-iter-rtrn-close-null.js   |  76 -------------
 .../dstr-array-elem-iter-rtrn-close.js        |  86 ---------------
 ...dstr-array-elem-nested-array-yield-expr.js |  58 ----------
 ...ray-elem-nested-array-yield-ident-valid.js |  41 -------
 .../dstr-array-elem-nested-array.js           |  40 -------
 .../dstr-array-elem-nested-obj-yield-expr.js  |  56 ----------
 ...array-elem-nested-obj-yield-ident-valid.js |  41 -------
 .../dstr-array-elem-nested-obj.js             |  40 -------
 .../dstr-array-elem-put-prop-ref-no-get.js    |  48 ---------
 .../dstr-array-elem-put-prop-ref.js           |  40 -------
 ...r-array-elem-put-unresolvable-no-strict.js |  44 --------
 .../dstr-array-elem-target-identifier.js      |  42 --------
 ...dstr-array-elem-target-simple-no-strict.js |  41 -------
 .../dstr-array-elem-target-yield-expr.js      |  58 ----------
 .../dstr-array-elem-target-yield-valid.js     |  41 -------
 ...-trlg-iter-elision-iter-nrml-close-skip.js |  72 -------------
 ...-elem-trlg-iter-elision-iter-nrml-close.js |  87 ---------------
 ...ray-elem-trlg-iter-list-nrml-close-skip.js |  73 -------------
 ...tr-array-elem-trlg-iter-list-nrml-close.js |  86 ---------------
 ...rray-elem-trlg-iter-list-rtrn-close-err.js |  86 ---------------
 ...ray-elem-trlg-iter-list-rtrn-close-null.js |  83 --------------
 ...tr-array-elem-trlg-iter-list-rtrn-close.js |  94 ----------------
 ...ray-elem-trlg-iter-rest-nrml-close-skip.js |  73 -------------
 ...rray-elem-trlg-iter-rest-rtrn-close-err.js |  95 ----------------
 ...ray-elem-trlg-iter-rest-rtrn-close-null.js |  90 ----------------
 ...tr-array-elem-trlg-iter-rest-rtrn-close.js | 101 -----------------
 ...dstr-array-elision-iter-nrml-close-skip.js |  65 -----------
 .../dstr-array-elision-iter-nrml-close.js     |  80 --------------
 .../dstr-array-elision-val-array.js           |  39 -------
 .../dstr-array-elision-val-string.js          |  39 -------
 .../dstr-array-empty-iter-close.js            |  76 -------------
 .../dstr-array-empty-val-array.js             |  39 -------
 .../dstr-array-empty-val-string.js            |  39 -------
 .../for-await-of/dstr-array-iteration.js      |  47 --------
 .../dstr-array-rest-after-element.js          |  43 --------
 .../dstr-array-rest-after-elision.js          |  42 --------
 .../for-await-of/dstr-array-rest-elision.js   |  43 --------
 .../dstr-array-rest-iter-nrml-close-skip.js   |  67 ------------
 .../dstr-array-rest-iter-rtrn-close-err.js    |  91 ----------------
 .../dstr-array-rest-iter-rtrn-close-null.js   |  90 ----------------
 .../dstr-array-rest-iter-rtrn-close.js        | 102 ------------------
 .../for-await-of/dstr-array-rest-iteration.js |  48 ---------
 .../for-await-of/dstr-array-rest-lref.js      |  76 -------------
 .../dstr-array-rest-nested-array-null.js      |  41 -------
 ...-array-rest-nested-array-undefined-hole.js |  40 -------
 ...r-array-rest-nested-array-undefined-own.js |  40 -------
 .../dstr-array-rest-nested-array-undefined.js |  40 -------
 ...dstr-array-rest-nested-array-yield-expr.js |  58 ----------
 ...ray-rest-nested-array-yield-ident-valid.js |  41 -------
 .../dstr-array-rest-nested-array.js           |  40 -------
 .../dstr-array-rest-nested-obj-null.js        |  41 -------
 ...tr-array-rest-nested-obj-undefined-hole.js |  44 --------
 ...str-array-rest-nested-obj-undefined-own.js |  44 --------
 .../dstr-array-rest-nested-obj-undefined.js   |  44 --------
 .../dstr-array-rest-nested-obj-yield-expr.js  |  56 ----------
 ...array-rest-nested-obj-yield-ident-valid.js |  41 -------
 .../dstr-array-rest-nested-obj.js             |  40 -------
 .../dstr-array-rest-put-prop-ref-no-get.js    |  51 ---------
 .../dstr-array-rest-put-prop-ref.js           |  43 --------
 ...r-array-rest-put-unresolvable-no-strict.js |  44 --------
 .../dstr-array-rest-yield-expr.js             |  60 -----------
 .../dstr-array-rest-yield-ident-valid.js      |  44 --------
 .../for-await-of/dstr-obj-empty-bool.js       |  39 -------
 .../for-await-of/dstr-obj-empty-num.js        |  39 -------
 .../for-await-of/dstr-obj-empty-obj.js        |  39 -------
 .../for-await-of/dstr-obj-empty-string.js     |  39 -------
 .../for-await-of/dstr-obj-empty-symbol.js     |  40 -------
 ...dstr-obj-id-identifier-resolution-first.js |  41 -------
 .../dstr-obj-id-identifier-resolution-last.js |  41 -------
 .../dstr-obj-id-identifier-resolution-lone.js |  40 -------
 ...str-obj-id-identifier-resolution-middle.js |  41 -------
 ...dstr-obj-id-identifier-resolution-trlng.js |  40 -------
 ...str-obj-id-identifier-yield-ident-valid.js |  40 -------
 .../dstr-obj-id-init-assignment-missing.js    |  40 -------
 .../dstr-obj-id-init-assignment-null.js       |  40 -------
 .../dstr-obj-id-init-assignment-truthy.js     |  40 -------
 .../dstr-obj-id-init-assignment-undef.js      |  40 -------
 .../dstr-obj-id-init-evaluation.js            |  43 --------
 .../dstr-obj-id-init-fn-name-arrow.js         |  53 ---------
 .../dstr-obj-id-init-fn-name-class.js         |  56 ----------
 .../dstr-obj-id-init-fn-name-cover.js         |  55 ----------
 .../dstr-obj-id-init-fn-name-fn.js            |  55 ----------
 .../dstr-obj-id-init-fn-name-gen.js           |  55 ----------
 .../for-await-of/dstr-obj-id-init-in.js       |  40 -------
 .../for-await-of/dstr-obj-id-init-order.js    |  43 --------
 .../dstr-obj-id-init-simple-no-strict.js      |  41 -------
 .../dstr-obj-id-init-yield-expr.js            |  56 ----------
 .../dstr-obj-id-init-yield-ident-valid.js     |  41 -------
 .../dstr-obj-id-put-unresolvable-no-strict.js |  44 --------
 .../dstr-obj-id-simple-no-strict.js           |  43 --------
 ...r-obj-prop-elem-init-assignment-missing.js |  40 -------
 ...dstr-obj-prop-elem-init-assignment-null.js |  40 -------
 ...tr-obj-prop-elem-init-assignment-truthy.js |  40 -------
 ...str-obj-prop-elem-init-assignment-undef.js |  40 -------
 .../dstr-obj-prop-elem-init-evaluation.js     |  45 --------
 .../dstr-obj-prop-elem-init-fn-name-arrow.js  |  54 ----------
 .../dstr-obj-prop-elem-init-fn-name-class.js  |  57 ----------
 .../dstr-obj-prop-elem-init-fn-name-cover.js  |  56 ----------
 .../dstr-obj-prop-elem-init-fn-name-fn.js     |  56 ----------
 .../dstr-obj-prop-elem-init-fn-name-gen.js    |  56 ----------
 .../dstr-obj-prop-elem-init-in.js             |  40 -------
 .../dstr-obj-prop-elem-init-yield-expr.js     |  55 ----------
 ...tr-obj-prop-elem-init-yield-ident-valid.js |  41 -------
 .../dstr-obj-prop-elem-target-yield-expr.js   |  57 ----------
 ...-obj-prop-elem-target-yield-ident-valid.js |  41 -------
 ...tr-obj-prop-identifier-resolution-first.js |  41 -------
 ...str-obj-prop-identifier-resolution-last.js |  41 -------
 ...str-obj-prop-identifier-resolution-lone.js |  40 -------
 ...r-obj-prop-identifier-resolution-middle.js |  41 -------
 ...tr-obj-prop-identifier-resolution-trlng.js |  40 -------
 .../dstr-obj-prop-name-evaluation.js          |  42 --------
 .../dstr-obj-prop-nested-array-yield-expr.js  |  56 ----------
 ...obj-prop-nested-array-yield-ident-valid.js |  41 -------
 .../dstr-obj-prop-nested-array.js             |  40 -------
 .../dstr-obj-prop-nested-obj-yield-expr.js    |  56 ----------
 ...r-obj-prop-nested-obj-yield-ident-valid.js |  41 -------
 .../for-await-of/dstr-obj-prop-nested-obj.js  |  40 -------
 .../for-await-of/dstr-obj-prop-put-order.js   |  40 -------
 .../dstr-obj-prop-put-prop-ref-no-get.js      |  48 ---------
 .../dstr-obj-prop-put-prop-ref.js             |  40 -------
 ...str-obj-prop-put-unresolvable-no-strict.js |  44 --------
 .../for-await-of/dstr-obj-rest-descriptors.js |  54 ----------
 .../for-await-of/dstr-obj-rest-empty-obj.js   |  44 --------
 .../for-await-of/dstr-obj-rest-getter.js      |  48 ---------
 .../dstr-obj-rest-nested-obj-nested-rest.js   |  55 ----------
 .../for-await-of/dstr-obj-rest-nested-obj.js  |  45 --------
 .../for-await-of/dstr-obj-rest-number.js      |  44 --------
 .../dstr-obj-rest-obj-own-property.js         |  46 --------
 .../for-await-of/dstr-obj-rest-same-name.js   |  54 ----------
 .../dstr-obj-rest-skip-non-enumerable.js      |  54 ----------
 .../for-await-of/dstr-obj-rest-str-val.js     |  45 --------
 .../for-await-of/dstr-obj-rest-symbol-val.js  |  44 --------
 .../dstr-obj-rest-to-property-with-setter.js  |  51 ---------
 .../for-await-of/dstr-obj-rest-to-property.js |  47 --------
 .../dstr-obj-rest-valid-object.js             |  54 ----------
 150 files changed, 7697 deletions(-)
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-init-assignment.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-init-evaluation.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-init-fn-name-arrow.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-init-fn-name-class.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-init-fn-name-cover.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-init-fn-name-fn.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-init-fn-name-gen.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-init-in.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-init-order.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-init-simple-no-strict.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-init-yield-expr.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-init-yield-ident-valid.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-iter-nrml-close-skip.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-iter-nrml-close.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-iter-rtrn-close-err.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-iter-rtrn-close-null.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-iter-rtrn-close.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-nested-array-yield-expr.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-nested-array-yield-ident-valid.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-nested-array.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-nested-obj-yield-expr.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-nested-obj-yield-ident-valid.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-nested-obj.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-put-prop-ref-no-get.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-put-prop-ref.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-put-unresolvable-no-strict.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-target-identifier.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-target-simple-no-strict.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-target-yield-expr.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-target-yield-valid.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-trlg-iter-elision-iter-nrml-close-skip.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-trlg-iter-elision-iter-nrml-close.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-nrml-close-skip.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-nrml-close.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-rtrn-close-err.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-rtrn-close-null.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-trlg-iter-list-rtrn-close.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-nrml-close-skip.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-rtrn-close-err.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-rtrn-close-null.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elem-trlg-iter-rest-rtrn-close.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elision-iter-nrml-close-skip.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elision-iter-nrml-close.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elision-val-array.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-elision-val-string.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-empty-iter-close.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-empty-val-array.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-empty-val-string.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-iteration.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-after-element.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-after-elision.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-elision.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-iter-nrml-close-skip.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-iter-rtrn-close-err.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-iter-rtrn-close-null.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-iter-rtrn-close.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-iteration.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-lref.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-nested-array-null.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-nested-array-undefined-hole.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-nested-array-undefined-own.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-nested-array-undefined.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-nested-array-yield-expr.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-nested-array-yield-ident-valid.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-nested-array.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-nested-obj-null.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-nested-obj-undefined-hole.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-nested-obj-undefined-own.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-nested-obj-undefined.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-nested-obj-yield-expr.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-nested-obj-yield-ident-valid.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-nested-obj.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-put-prop-ref-no-get.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-put-prop-ref.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-put-unresolvable-no-strict.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-yield-expr.js
 delete mode 100644 test/language/statements/for-await-of/dstr-array-rest-yield-ident-valid.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-empty-bool.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-empty-num.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-empty-obj.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-empty-string.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-empty-symbol.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-first.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-last.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-lone.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-middle.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-identifier-resolution-trlng.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-identifier-yield-ident-valid.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-init-assignment-missing.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-init-assignment-null.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-init-assignment-truthy.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-init-assignment-undef.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-init-evaluation.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-init-fn-name-arrow.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-init-fn-name-class.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-init-fn-name-cover.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-init-fn-name-fn.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-init-fn-name-gen.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-init-in.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-init-order.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-init-simple-no-strict.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-init-yield-expr.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-init-yield-ident-valid.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-put-unresolvable-no-strict.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-id-simple-no-strict.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-missing.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-null.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-truthy.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-elem-init-assignment-undef.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-elem-init-evaluation.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-arrow.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-class.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-cover.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-fn.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-elem-init-fn-name-gen.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-elem-init-in.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-elem-init-yield-expr.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-elem-init-yield-ident-valid.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-elem-target-yield-expr.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-elem-target-yield-ident-valid.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-first.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-last.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-lone.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-middle.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-identifier-resolution-trlng.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-name-evaluation.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-nested-array-yield-expr.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-nested-array-yield-ident-valid.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-nested-array.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-nested-obj-yield-expr.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-nested-obj-yield-ident-valid.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-nested-obj.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-put-order.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-put-prop-ref-no-get.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-put-prop-ref.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-prop-put-unresolvable-no-strict.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-rest-descriptors.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-rest-empty-obj.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-rest-getter.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-rest-nested-obj-nested-rest.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-rest-nested-obj.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-rest-number.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-rest-obj-own-property.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-rest-same-name.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-rest-skip-non-enumerable.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-rest-str-val.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-rest-symbol-val.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-rest-to-property-with-setter.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-rest-to-property.js
 delete mode 100644 test/language/statements/for-await-of/dstr-obj-rest-valid-object.js

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 4ec79f5c34..0000000000
--- 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 1b76dff98d..0000000000
--- 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 fea2d852e2..0000000000
--- 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 37525edcd4..0000000000
--- 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 fa0fa636c8..0000000000
--- 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 429355375d..0000000000
--- 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 4bfd111465..0000000000
--- 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 2c35d84b24..0000000000
--- 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 e145fda73d..0000000000
--- 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 91d88807a2..0000000000
--- 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 0b96787339..0000000000
--- 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 cccf1aec0a..0000000000
--- 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 b891fef4f6..0000000000
--- 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 b73afb2079..0000000000
--- 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 18efa99076..0000000000
--- 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 ef43fceeee..0000000000
--- 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 303d64a37f..0000000000
--- 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 9ad3e282be..0000000000
--- 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 e11b2b4c6c..0000000000
--- 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 d6b92ee479..0000000000
--- 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 2c33ed58e3..0000000000
--- 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 d503e10ee1..0000000000
--- 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 bd47dba4fd..0000000000
--- 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 6d1aad896f..0000000000
--- 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 aa72ff286b..0000000000
--- 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 256dcb8869..0000000000
--- 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 f95b06dd55..0000000000
--- 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 8a9990e0a3..0000000000
--- 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 f21bf7f7cb..0000000000
--- 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 a9b16fdff3..0000000000
--- 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 dc73b88d05..0000000000
--- 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 9170bb3200..0000000000
--- 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 be57dfb781..0000000000
--- 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 9d98bc1758..0000000000
--- 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 f7b14a4299..0000000000
--- 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 bbabb3d867..0000000000
--- 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 1cab9a05b4..0000000000
--- 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 c49c8b063a..0000000000
--- 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 566e1a75ce..0000000000
--- 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 073175cf13..0000000000
--- 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 188453533c..0000000000
--- 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 a2d2ec0139..0000000000
--- 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 509a6001c2..0000000000
--- 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 9d55d53877..0000000000
--- 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 ec09b914e5..0000000000
--- 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 c6bf46b8ca..0000000000
--- 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 897d5c7e25..0000000000
--- 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 265d0f8984..0000000000
--- 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 4552d7a751..0000000000
--- 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 d796a4d1d5..0000000000
--- 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 c87534c5e8..0000000000
--- 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 af6b841347..0000000000
--- 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 c0f24a7fd9..0000000000
--- 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 cfa8e8f4d2..0000000000
--- 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 becc03c060..0000000000
--- 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 fa4c16d68d..0000000000
--- 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 76dd8bd842..0000000000
--- 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 774372e2dd..0000000000
--- 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 7e77f8f08d..0000000000
--- 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 64475acd69..0000000000
--- 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 0f7d3daad2..0000000000
--- 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 7b9e140806..0000000000
--- 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 80e9734a7b..0000000000
--- 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 877c2b34eb..0000000000
--- 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 08e0a64144..0000000000
--- 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 353c891c70..0000000000
--- 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 fe597fa823..0000000000
--- 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 e75832cde0..0000000000
--- 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 470a0ac3cd..0000000000
--- 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 2be57590b4..0000000000
--- 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 f2b21cfab5..0000000000
--- 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 4294b8c84f..0000000000
--- 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 c705eae15e..0000000000
--- 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 4fe4659dc6..0000000000
--- 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 8e6ff5b606..0000000000
--- 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 c437829959..0000000000
--- 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 1cb9d4ebed..0000000000
--- 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 ad785f1954..0000000000
--- 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 bcf4e95a44..0000000000
--- 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 4c0db8e5fc..0000000000
--- 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 b4e26d6474..0000000000
--- 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 a09130983c..0000000000
--- 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 7830d74f61..0000000000
--- 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 46abcb9371..0000000000
--- 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 dcce9d28d9..0000000000
--- 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 02ff3f7f5f..0000000000
--- 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 dc1dfdb3f0..0000000000
--- 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 cbbad6d534..0000000000
--- 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 27be57883e..0000000000
--- 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 fce306b29f..0000000000
--- 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 4d64159d02..0000000000
--- 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 3d414449c1..0000000000
--- 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 1f1c5dfbf4..0000000000
--- 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 0905a9d9f9..0000000000
--- 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 ac2b9629b6..0000000000
--- 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 a8b5ffefbf..0000000000
--- 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 52d6f587ae..0000000000
--- 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 95ffac652f..0000000000
--- 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 5ccf0a6183..0000000000
--- 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 67b87e0f6d..0000000000
--- 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 159a1dc274..0000000000
--- 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 bbe38946b1..0000000000
--- 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 b367dcca14..0000000000
--- 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 d385aa8367..0000000000
--- 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 8f0f992cfa..0000000000
--- 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 6a87653fc7..0000000000
--- 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 c67bac5676..0000000000
--- 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 66c39eb535..0000000000
--- 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 0042c030a8..0000000000
--- 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 1d70028902..0000000000
--- 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 ad7a8b4545..0000000000
--- 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 d37d7ec7ce..0000000000
--- 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 5b3e3105f5..0000000000
--- 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 933a1146d5..0000000000
--- 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 e9ad13e072..0000000000
--- 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 119402efa1..0000000000
--- 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 614793f468..0000000000
--- 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 7b559b44b2..0000000000
--- 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 c281b74ed6..0000000000
--- 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 5670e4b7da..0000000000
--- 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 75fd082377..0000000000
--- 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 31e0e54ccc..0000000000
--- 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 5a5b775121..0000000000
--- 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 827c0081f2..0000000000
--- 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 34c9ed03a1..0000000000
--- 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 2ddb1000eb..0000000000
--- 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 497cc6c313..0000000000
--- 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 fb7d3f4132..0000000000
--- 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 f1a26cb1a5..0000000000
--- 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 9219d743c5..0000000000
--- 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 f7e0f63873..0000000000
--- 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 55e6e14b43..0000000000
--- 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 0a48ac6b61..0000000000
--- 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 04b04ad028..0000000000
--- 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 730e40577b..0000000000
--- 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 d374794b4b..0000000000
--- 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 5dcfe88c61..0000000000
--- 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 fb8351c3b9..0000000000
--- 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 6c20d66a60..0000000000
--- 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 eb5fbd358a..0000000000
--- 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 54b86c9406..0000000000
--- 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 fcc93e86bd..0000000000
--- 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 d6e9b17555..0000000000
--- 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 63c531898d..0000000000
--- 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 70f108e0d0..0000000000
--- 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 be48d9b239..0000000000
--- 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 77b0e7fdf7..0000000000
--- 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 9c28cb5805..0000000000
--- 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 3f8a1e9d87..0000000000
--- 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 5462f7fa22..0000000000
--- 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);
-- 
GitLab