From 2adebecbfa493d2ddb22df7935ca6f6220aa83ca Mon Sep 17 00:00:00 2001
From: Leo Balter <leonardo.balter@gmail.com>
Date: Mon, 27 Mar 2017 11:43:27 -0400
Subject: [PATCH] Generate tests

---
 .../expressions/array/spread-err-mult-err-obj-getter-throws.js  | 1 +
 .../expressions/array/spread-err-mult-err-obj-unresolvable.js   | 1 +
 test/language/expressions/array/spread-mult-obj-base.js         | 1 +
 test/language/expressions/array/spread-mult-obj-empty.js        | 1 +
 test/language/expressions/array/spread-mult-obj-ident.js        | 1 +
 .../expressions/array/spread-mult-obj-null-empty-undefined.js   | 1 +
 test/language/expressions/array/spread-mult-obj-null.js         | 1 +
 test/language/expressions/array/spread-mult-obj-undefined.js    | 1 +
 test/language/expressions/array/spread-obj-getter-descriptor.js | 1 +
 test/language/expressions/array/spread-obj-getter-init.js       | 1 +
 .../array/spread-obj-manipulate-outter-obj-in-getter.js         | 1 +
 .../language/expressions/array/spread-obj-mult-spread-getter.js | 1 +
 test/language/expressions/array/spread-obj-mult-spread.js       | 1 +
 test/language/expressions/array/spread-obj-null.js              | 1 +
 .../language/expressions/array/spread-obj-override-immutable.js | 1 +
 .../expressions/array/spread-obj-overrides-prev-properties.js   | 1 +
 test/language/expressions/array/spread-obj-setter-redef.js      | 1 +
 .../expressions/array/spread-obj-skip-non-enumerable.js         | 1 +
 test/language/expressions/array/spread-obj-spread-order.js      | 1 +
 test/language/expressions/array/spread-obj-symbol-property.js   | 1 +
 test/language/expressions/array/spread-obj-undefined.js         | 1 +
 test/language/expressions/array/spread-obj-with-overrides.js    | 1 +
 test/language/expressions/array/spread-sngl-obj-base.js         | 1 +
 test/language/expressions/array/spread-sngl-obj-empty.js        | 1 +
 test/language/expressions/array/spread-sngl-obj-ident.js        | 1 +
 .../arrow-function/dstr-dflt-obj-ptrn-rest-getter.js            | 2 +-
 .../arrow-function/dstr-dflt-obj-ptrn-rest-nested-obj.js        | 2 +-
 .../arrow-function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js   | 2 +-
 .../arrow-function/dstr-dflt-obj-ptrn-rest-obj-own-property.js  | 2 +-
 .../dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js              | 2 +-
 .../arrow-function/dstr-dflt-obj-ptrn-rest-val-obj.js           | 2 +-
 .../expressions/arrow-function/dstr-obj-ptrn-rest-getter.js     | 2 +-
 .../expressions/arrow-function/dstr-obj-ptrn-rest-nested-obj.js | 2 +-
 .../arrow-function/dstr-obj-ptrn-rest-obj-nested-rest.js        | 2 +-
 .../arrow-function/dstr-obj-ptrn-rest-obj-own-property.js       | 2 +-
 .../arrow-function/dstr-obj-ptrn-rest-skip-non-enumerable.js    | 2 +-
 .../expressions/arrow-function/dstr-obj-ptrn-rest-val-obj.js    | 2 +-
 .../expressions/assignment/dstr-obj-rest-descriptors.js         | 2 +-
 test/language/expressions/assignment/dstr-obj-rest-empty-obj.js | 2 +-
 .../assignment/dstr-obj-rest-getter-abrupt-get-error.js         | 2 +-
 test/language/expressions/assignment/dstr-obj-rest-getter.js    | 2 +-
 .../assignment/dstr-obj-rest-nested-obj-nested-rest.js          | 2 +-
 .../language/expressions/assignment/dstr-obj-rest-nested-obj.js | 2 +-
 .../assignment/dstr-obj-rest-not-last-element-invalid.js        | 2 +-
 test/language/expressions/assignment/dstr-obj-rest-number.js    | 2 +-
 .../expressions/assignment/dstr-obj-rest-obj-own-property.js    | 2 +-
 test/language/expressions/assignment/dstr-obj-rest-put-const.js | 2 +-
 test/language/expressions/assignment/dstr-obj-rest-same-name.js | 2 +-
 .../expressions/assignment/dstr-obj-rest-skip-non-enumerable.js | 2 +-
 test/language/expressions/assignment/dstr-obj-rest-str-val.js   | 2 +-
 .../language/expressions/assignment/dstr-obj-rest-symbol-val.js | 2 +-
 .../assignment/dstr-obj-rest-to-property-with-setter.js         | 2 +-
 .../expressions/assignment/dstr-obj-rest-to-property.js         | 2 +-
 test/language/expressions/assignment/dstr-obj-rest-val-null.js  | 2 +-
 .../expressions/assignment/dstr-obj-rest-val-undefined.js       | 2 +-
 .../expressions/assignment/dstr-obj-rest-valid-object.js        | 2 +-
 .../expressions/call/spread-err-mult-err-obj-getter-throws.js   | 1 +
 .../expressions/call/spread-err-mult-err-obj-unresolvable.js    | 1 +
 test/language/expressions/call/spread-mult-obj-base.js          | 1 +
 test/language/expressions/call/spread-mult-obj-empty.js         | 1 +
 test/language/expressions/call/spread-mult-obj-ident.js         | 1 +
 .../expressions/call/spread-mult-obj-null-empty-undefined.js    | 1 +
 test/language/expressions/call/spread-mult-obj-null.js          | 1 +
 test/language/expressions/call/spread-mult-obj-undefined.js     | 1 +
 test/language/expressions/call/spread-obj-getter-descriptor.js  | 1 +
 test/language/expressions/call/spread-obj-getter-init.js        | 1 +
 .../call/spread-obj-manipulate-outter-obj-in-getter.js          | 1 +
 test/language/expressions/call/spread-obj-mult-spread-getter.js | 1 +
 test/language/expressions/call/spread-obj-mult-spread.js        | 1 +
 test/language/expressions/call/spread-obj-null.js               | 1 +
 test/language/expressions/call/spread-obj-override-immutable.js | 1 +
 .../expressions/call/spread-obj-overrides-prev-properties.js    | 1 +
 test/language/expressions/call/spread-obj-setter-redef.js       | 1 +
 .../language/expressions/call/spread-obj-skip-non-enumerable.js | 1 +
 test/language/expressions/call/spread-obj-spread-order.js       | 1 +
 test/language/expressions/call/spread-obj-symbol-property.js    | 1 +
 test/language/expressions/call/spread-obj-undefined.js          | 1 +
 test/language/expressions/call/spread-obj-with-overrides.js     | 1 +
 test/language/expressions/call/spread-sngl-obj-base.js          | 1 +
 test/language/expressions/call/spread-sngl-obj-empty.js         | 1 +
 test/language/expressions/call/spread-sngl-obj-ident.js         | 1 +
 .../class/dstr-gen-meth-dflt-obj-ptrn-rest-getter.js            | 2 +-
 .../class/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js        | 2 +-
 .../class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js   | 2 +-
 .../class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js  | 2 +-
 .../dstr-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js     | 2 +-
 .../class/dstr-gen-meth-dflt-obj-ptrn-rest-val-obj.js           | 2 +-
 .../expressions/class/dstr-gen-meth-obj-ptrn-rest-getter.js     | 2 +-
 .../expressions/class/dstr-gen-meth-obj-ptrn-rest-nested-obj.js | 2 +-
 .../class/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js        | 2 +-
 .../class/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js       | 2 +-
 .../class/dstr-gen-meth-obj-ptrn-rest-skip-non-enumerable.js    | 2 +-
 .../expressions/class/dstr-gen-meth-obj-ptrn-rest-val-obj.js    | 2 +-
 .../class/dstr-gen-meth-static-dflt-obj-ptrn-rest-getter.js     | 2 +-
 .../class/dstr-gen-meth-static-dflt-obj-ptrn-rest-nested-obj.js | 2 +-
 .../dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js  | 2 +-
 .../dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-own-property.js | 2 +-
 ...tr-gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js | 2 +-
 .../class/dstr-gen-meth-static-dflt-obj-ptrn-rest-val-obj.js    | 2 +-
 .../class/dstr-gen-meth-static-obj-ptrn-rest-getter.js          | 2 +-
 .../class/dstr-gen-meth-static-obj-ptrn-rest-nested-obj.js      | 2 +-
 .../class/dstr-gen-meth-static-obj-ptrn-rest-obj-nested-rest.js | 2 +-
 .../dstr-gen-meth-static-obj-ptrn-rest-obj-own-property.js      | 2 +-
 .../dstr-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js   | 2 +-
 .../class/dstr-gen-meth-static-obj-ptrn-rest-val-obj.js         | 2 +-
 .../expressions/class/dstr-meth-dflt-obj-ptrn-rest-getter.js    | 2 +-
 .../class/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js            | 2 +-
 .../class/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js       | 2 +-
 .../class/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js      | 2 +-
 .../class/dstr-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js   | 2 +-
 .../expressions/class/dstr-meth-dflt-obj-ptrn-rest-val-obj.js   | 2 +-
 .../expressions/class/dstr-meth-obj-ptrn-rest-getter.js         | 2 +-
 .../expressions/class/dstr-meth-obj-ptrn-rest-nested-obj.js     | 2 +-
 .../class/dstr-meth-obj-ptrn-rest-obj-nested-rest.js            | 2 +-
 .../class/dstr-meth-obj-ptrn-rest-obj-own-property.js           | 2 +-
 .../class/dstr-meth-obj-ptrn-rest-skip-non-enumerable.js        | 2 +-
 .../expressions/class/dstr-meth-obj-ptrn-rest-val-obj.js        | 2 +-
 .../class/dstr-meth-static-dflt-obj-ptrn-rest-getter.js         | 2 +-
 .../class/dstr-meth-static-dflt-obj-ptrn-rest-nested-obj.js     | 2 +-
 .../dstr-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js      | 2 +-
 .../dstr-meth-static-dflt-obj-ptrn-rest-obj-own-property.js     | 2 +-
 .../dstr-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js  | 2 +-
 .../class/dstr-meth-static-dflt-obj-ptrn-rest-val-obj.js        | 2 +-
 .../expressions/class/dstr-meth-static-obj-ptrn-rest-getter.js  | 2 +-
 .../class/dstr-meth-static-obj-ptrn-rest-nested-obj.js          | 2 +-
 .../class/dstr-meth-static-obj-ptrn-rest-obj-nested-rest.js     | 2 +-
 .../class/dstr-meth-static-obj-ptrn-rest-obj-own-property.js    | 2 +-
 .../class/dstr-meth-static-obj-ptrn-rest-skip-non-enumerable.js | 2 +-
 .../expressions/class/dstr-meth-static-obj-ptrn-rest-val-obj.js | 2 +-
 .../expressions/function/dstr-dflt-obj-ptrn-rest-getter.js      | 2 +-
 .../expressions/function/dstr-dflt-obj-ptrn-rest-nested-obj.js  | 2 +-
 .../function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js         | 2 +-
 .../function/dstr-dflt-obj-ptrn-rest-obj-own-property.js        | 2 +-
 .../function/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js     | 2 +-
 .../expressions/function/dstr-dflt-obj-ptrn-rest-val-obj.js     | 2 +-
 test/language/expressions/function/dstr-obj-ptrn-rest-getter.js | 2 +-
 .../expressions/function/dstr-obj-ptrn-rest-nested-obj.js       | 2 +-
 .../expressions/function/dstr-obj-ptrn-rest-obj-nested-rest.js  | 2 +-
 .../expressions/function/dstr-obj-ptrn-rest-obj-own-property.js | 2 +-
 .../function/dstr-obj-ptrn-rest-skip-non-enumerable.js          | 2 +-
 .../language/expressions/function/dstr-obj-ptrn-rest-val-obj.js | 2 +-
 .../expressions/generators/dstr-dflt-obj-ptrn-rest-getter.js    | 2 +-
 .../generators/dstr-dflt-obj-ptrn-rest-nested-obj.js            | 2 +-
 .../generators/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js       | 2 +-
 .../generators/dstr-dflt-obj-ptrn-rest-obj-own-property.js      | 2 +-
 .../generators/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js   | 2 +-
 .../expressions/generators/dstr-dflt-obj-ptrn-rest-val-obj.js   | 2 +-
 .../expressions/generators/dstr-obj-ptrn-rest-getter.js         | 2 +-
 .../expressions/generators/dstr-obj-ptrn-rest-nested-obj.js     | 2 +-
 .../generators/dstr-obj-ptrn-rest-obj-nested-rest.js            | 2 +-
 .../generators/dstr-obj-ptrn-rest-obj-own-property.js           | 2 +-
 .../generators/dstr-obj-ptrn-rest-skip-non-enumerable.js        | 2 +-
 .../expressions/generators/dstr-obj-ptrn-rest-val-obj.js        | 2 +-
 .../expressions/new/spread-err-mult-err-obj-getter-throws.js    | 1 +
 .../expressions/new/spread-err-mult-err-obj-unresolvable.js     | 1 +
 test/language/expressions/new/spread-mult-obj-base.js           | 1 +
 test/language/expressions/new/spread-mult-obj-empty.js          | 1 +
 test/language/expressions/new/spread-mult-obj-ident.js          | 1 +
 .../expressions/new/spread-mult-obj-null-empty-undefined.js     | 1 +
 test/language/expressions/new/spread-mult-obj-null.js           | 1 +
 test/language/expressions/new/spread-mult-obj-undefined.js      | 1 +
 test/language/expressions/new/spread-obj-getter-descriptor.js   | 1 +
 test/language/expressions/new/spread-obj-getter-init.js         | 1 +
 .../new/spread-obj-manipulate-outter-obj-in-getter.js           | 1 +
 test/language/expressions/new/spread-obj-mult-spread-getter.js  | 1 +
 test/language/expressions/new/spread-obj-mult-spread.js         | 1 +
 test/language/expressions/new/spread-obj-null.js                | 1 +
 test/language/expressions/new/spread-obj-override-immutable.js  | 1 +
 .../expressions/new/spread-obj-overrides-prev-properties.js     | 1 +
 test/language/expressions/new/spread-obj-setter-redef.js        | 1 +
 test/language/expressions/new/spread-obj-skip-non-enumerable.js | 1 +
 test/language/expressions/new/spread-obj-spread-order.js        | 1 +
 test/language/expressions/new/spread-obj-symbol-property.js     | 1 +
 test/language/expressions/new/spread-obj-undefined.js           | 1 +
 test/language/expressions/new/spread-obj-with-overrides.js      | 1 +
 test/language/expressions/new/spread-sngl-obj-base.js           | 1 +
 test/language/expressions/new/spread-sngl-obj-empty.js          | 1 +
 test/language/expressions/new/spread-sngl-obj-ident.js          | 1 +
 .../object/dstr-gen-meth-dflt-obj-ptrn-rest-getter.js           | 2 +-
 .../object/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js       | 2 +-
 .../object/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js  | 2 +-
 .../object/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js | 2 +-
 .../dstr-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js     | 2 +-
 .../object/dstr-gen-meth-dflt-obj-ptrn-rest-val-obj.js          | 2 +-
 .../expressions/object/dstr-gen-meth-obj-ptrn-rest-getter.js    | 2 +-
 .../object/dstr-gen-meth-obj-ptrn-rest-nested-obj.js            | 2 +-
 .../object/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js       | 2 +-
 .../object/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js      | 2 +-
 .../object/dstr-gen-meth-obj-ptrn-rest-skip-non-enumerable.js   | 2 +-
 .../expressions/object/dstr-gen-meth-obj-ptrn-rest-val-obj.js   | 2 +-
 .../expressions/object/dstr-meth-dflt-obj-ptrn-rest-getter.js   | 2 +-
 .../object/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js           | 2 +-
 .../object/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js      | 2 +-
 .../object/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js     | 2 +-
 .../object/dstr-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js  | 2 +-
 .../expressions/object/dstr-meth-dflt-obj-ptrn-rest-val-obj.js  | 2 +-
 .../expressions/object/dstr-meth-obj-ptrn-rest-getter.js        | 2 +-
 .../expressions/object/dstr-meth-obj-ptrn-rest-nested-obj.js    | 2 +-
 .../object/dstr-meth-obj-ptrn-rest-obj-nested-rest.js           | 2 +-
 .../object/dstr-meth-obj-ptrn-rest-obj-own-property.js          | 2 +-
 .../object/dstr-meth-obj-ptrn-rest-skip-non-enumerable.js       | 2 +-
 .../expressions/object/dstr-meth-obj-ptrn-rest-val-obj.js       | 2 +-
 .../super/call-spread-err-mult-err-obj-getter-throws.js         | 1 +
 .../super/call-spread-err-mult-err-obj-unresolvable.js          | 1 +
 test/language/expressions/super/call-spread-mult-obj-base.js    | 1 +
 test/language/expressions/super/call-spread-mult-obj-empty.js   | 1 +
 test/language/expressions/super/call-spread-mult-obj-ident.js   | 1 +
 .../super/call-spread-mult-obj-null-empty-undefined.js          | 1 +
 test/language/expressions/super/call-spread-mult-obj-null.js    | 1 +
 .../expressions/super/call-spread-mult-obj-undefined.js         | 1 +
 .../expressions/super/call-spread-obj-getter-descriptor.js      | 1 +
 test/language/expressions/super/call-spread-obj-getter-init.js  | 1 +
 .../super/call-spread-obj-manipulate-outter-obj-in-getter.js    | 1 +
 .../expressions/super/call-spread-obj-mult-spread-getter.js     | 1 +
 test/language/expressions/super/call-spread-obj-mult-spread.js  | 1 +
 test/language/expressions/super/call-spread-obj-null.js         | 1 +
 .../expressions/super/call-spread-obj-override-immutable.js     | 1 +
 .../super/call-spread-obj-overrides-prev-properties.js          | 1 +
 test/language/expressions/super/call-spread-obj-setter-redef.js | 1 +
 .../expressions/super/call-spread-obj-skip-non-enumerable.js    | 1 +
 test/language/expressions/super/call-spread-obj-spread-order.js | 1 +
 .../expressions/super/call-spread-obj-symbol-property.js        | 1 +
 test/language/expressions/super/call-spread-obj-undefined.js    | 1 +
 .../expressions/super/call-spread-obj-with-overrides.js         | 1 +
 test/language/expressions/super/call-spread-sngl-obj-base.js    | 1 +
 test/language/expressions/super/call-spread-sngl-obj-empty.js   | 1 +
 test/language/expressions/super/call-spread-sngl-obj-ident.js   | 1 +
 .../statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-getter.js | 2 +-
 .../class/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js        | 2 +-
 .../class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js   | 2 +-
 .../class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js  | 2 +-
 .../dstr-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js     | 2 +-
 .../class/dstr-gen-meth-dflt-obj-ptrn-rest-val-obj.js           | 2 +-
 .../statements/class/dstr-gen-meth-obj-ptrn-rest-getter.js      | 2 +-
 .../statements/class/dstr-gen-meth-obj-ptrn-rest-nested-obj.js  | 2 +-
 .../class/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js        | 2 +-
 .../class/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js       | 2 +-
 .../class/dstr-gen-meth-obj-ptrn-rest-skip-non-enumerable.js    | 2 +-
 .../statements/class/dstr-gen-meth-obj-ptrn-rest-val-obj.js     | 2 +-
 .../class/dstr-gen-meth-static-dflt-obj-ptrn-rest-getter.js     | 2 +-
 .../class/dstr-gen-meth-static-dflt-obj-ptrn-rest-nested-obj.js | 2 +-
 .../dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js  | 2 +-
 .../dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-own-property.js | 2 +-
 ...tr-gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js | 2 +-
 .../class/dstr-gen-meth-static-dflt-obj-ptrn-rest-val-obj.js    | 2 +-
 .../class/dstr-gen-meth-static-obj-ptrn-rest-getter.js          | 2 +-
 .../class/dstr-gen-meth-static-obj-ptrn-rest-nested-obj.js      | 2 +-
 .../class/dstr-gen-meth-static-obj-ptrn-rest-obj-nested-rest.js | 2 +-
 .../dstr-gen-meth-static-obj-ptrn-rest-obj-own-property.js      | 2 +-
 .../dstr-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js   | 2 +-
 .../class/dstr-gen-meth-static-obj-ptrn-rest-val-obj.js         | 2 +-
 .../statements/class/dstr-meth-dflt-obj-ptrn-rest-getter.js     | 2 +-
 .../statements/class/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js | 2 +-
 .../class/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js       | 2 +-
 .../class/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js      | 2 +-
 .../class/dstr-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js   | 2 +-
 .../statements/class/dstr-meth-dflt-obj-ptrn-rest-val-obj.js    | 2 +-
 .../language/statements/class/dstr-meth-obj-ptrn-rest-getter.js | 2 +-
 .../statements/class/dstr-meth-obj-ptrn-rest-nested-obj.js      | 2 +-
 .../statements/class/dstr-meth-obj-ptrn-rest-obj-nested-rest.js | 2 +-
 .../class/dstr-meth-obj-ptrn-rest-obj-own-property.js           | 2 +-
 .../class/dstr-meth-obj-ptrn-rest-skip-non-enumerable.js        | 2 +-
 .../statements/class/dstr-meth-obj-ptrn-rest-val-obj.js         | 2 +-
 .../class/dstr-meth-static-dflt-obj-ptrn-rest-getter.js         | 2 +-
 .../class/dstr-meth-static-dflt-obj-ptrn-rest-nested-obj.js     | 2 +-
 .../dstr-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js      | 2 +-
 .../dstr-meth-static-dflt-obj-ptrn-rest-obj-own-property.js     | 2 +-
 .../dstr-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js  | 2 +-
 .../class/dstr-meth-static-dflt-obj-ptrn-rest-val-obj.js        | 2 +-
 .../statements/class/dstr-meth-static-obj-ptrn-rest-getter.js   | 2 +-
 .../class/dstr-meth-static-obj-ptrn-rest-nested-obj.js          | 2 +-
 .../class/dstr-meth-static-obj-ptrn-rest-obj-nested-rest.js     | 2 +-
 .../class/dstr-meth-static-obj-ptrn-rest-obj-own-property.js    | 2 +-
 .../class/dstr-meth-static-obj-ptrn-rest-skip-non-enumerable.js | 2 +-
 .../statements/class/dstr-meth-static-obj-ptrn-rest-val-obj.js  | 2 +-
 test/language/statements/const/dstr-obj-ptrn-rest-getter.js     | 2 +-
 test/language/statements/const/dstr-obj-ptrn-rest-nested-obj.js | 2 +-
 .../statements/const/dstr-obj-ptrn-rest-obj-nested-rest.js      | 2 +-
 .../statements/const/dstr-obj-ptrn-rest-obj-own-property.js     | 2 +-
 .../statements/const/dstr-obj-ptrn-rest-skip-non-enumerable.js  | 2 +-
 test/language/statements/const/dstr-obj-ptrn-rest-val-obj.js    | 2 +-
 .../statements/for-in/dstr-obj-rest-not-last-element-invalid.js | 2 +-
 .../statements/for-of/dstr-const-obj-ptrn-rest-getter.js        | 2 +-
 .../statements/for-of/dstr-const-obj-ptrn-rest-nested-obj.js    | 2 +-
 .../for-of/dstr-const-obj-ptrn-rest-obj-nested-rest.js          | 2 +-
 .../for-of/dstr-const-obj-ptrn-rest-obj-own-property.js         | 2 +-
 .../for-of/dstr-const-obj-ptrn-rest-skip-non-enumerable.js      | 2 +-
 .../statements/for-of/dstr-const-obj-ptrn-rest-val-obj.js       | 2 +-
 .../language/statements/for-of/dstr-let-obj-ptrn-rest-getter.js | 2 +-
 .../statements/for-of/dstr-let-obj-ptrn-rest-nested-obj.js      | 2 +-
 .../statements/for-of/dstr-let-obj-ptrn-rest-obj-nested-rest.js | 2 +-
 .../for-of/dstr-let-obj-ptrn-rest-obj-own-property.js           | 2 +-
 .../for-of/dstr-let-obj-ptrn-rest-skip-non-enumerable.js        | 2 +-
 .../statements/for-of/dstr-let-obj-ptrn-rest-val-obj.js         | 2 +-
 test/language/statements/for-of/dstr-obj-rest-descriptors.js    | 2 +-
 test/language/statements/for-of/dstr-obj-rest-empty-obj.js      | 2 +-
 .../statements/for-of/dstr-obj-rest-getter-abrupt-get-error.js  | 2 +-
 test/language/statements/for-of/dstr-obj-rest-getter.js         | 2 +-
 .../statements/for-of/dstr-obj-rest-nested-obj-nested-rest.js   | 2 +-
 test/language/statements/for-of/dstr-obj-rest-nested-obj.js     | 2 +-
 .../statements/for-of/dstr-obj-rest-not-last-element-invalid.js | 2 +-
 test/language/statements/for-of/dstr-obj-rest-number.js         | 2 +-
 .../statements/for-of/dstr-obj-rest-obj-own-property.js         | 2 +-
 test/language/statements/for-of/dstr-obj-rest-put-const.js      | 2 +-
 test/language/statements/for-of/dstr-obj-rest-same-name.js      | 2 +-
 .../statements/for-of/dstr-obj-rest-skip-non-enumerable.js      | 2 +-
 test/language/statements/for-of/dstr-obj-rest-str-val.js        | 2 +-
 test/language/statements/for-of/dstr-obj-rest-symbol-val.js     | 2 +-
 .../statements/for-of/dstr-obj-rest-to-property-with-setter.js  | 2 +-
 test/language/statements/for-of/dstr-obj-rest-to-property.js    | 2 +-
 test/language/statements/for-of/dstr-obj-rest-val-null.js       | 2 +-
 test/language/statements/for-of/dstr-obj-rest-val-undefined.js  | 2 +-
 test/language/statements/for-of/dstr-obj-rest-valid-object.js   | 2 +-
 .../language/statements/for-of/dstr-var-obj-ptrn-rest-getter.js | 2 +-
 .../statements/for-of/dstr-var-obj-ptrn-rest-nested-obj.js      | 2 +-
 .../statements/for-of/dstr-var-obj-ptrn-rest-obj-nested-rest.js | 2 +-
 .../for-of/dstr-var-obj-ptrn-rest-obj-own-property.js           | 2 +-
 .../for-of/dstr-var-obj-ptrn-rest-skip-non-enumerable.js        | 2 +-
 .../statements/for-of/dstr-var-obj-ptrn-rest-val-obj.js         | 2 +-
 test/language/statements/for/dstr-const-obj-ptrn-rest-getter.js | 2 +-
 .../statements/for/dstr-const-obj-ptrn-rest-nested-obj.js       | 2 +-
 .../statements/for/dstr-const-obj-ptrn-rest-obj-nested-rest.js  | 2 +-
 .../statements/for/dstr-const-obj-ptrn-rest-obj-own-property.js | 2 +-
 .../for/dstr-const-obj-ptrn-rest-skip-non-enumerable.js         | 2 +-
 .../language/statements/for/dstr-const-obj-ptrn-rest-val-obj.js | 2 +-
 test/language/statements/for/dstr-let-obj-ptrn-rest-getter.js   | 2 +-
 .../statements/for/dstr-let-obj-ptrn-rest-nested-obj.js         | 2 +-
 .../statements/for/dstr-let-obj-ptrn-rest-obj-nested-rest.js    | 2 +-
 .../statements/for/dstr-let-obj-ptrn-rest-obj-own-property.js   | 2 +-
 .../for/dstr-let-obj-ptrn-rest-skip-non-enumerable.js           | 2 +-
 test/language/statements/for/dstr-let-obj-ptrn-rest-val-obj.js  | 2 +-
 test/language/statements/for/dstr-var-obj-ptrn-rest-getter.js   | 2 +-
 .../statements/for/dstr-var-obj-ptrn-rest-nested-obj.js         | 2 +-
 .../statements/for/dstr-var-obj-ptrn-rest-obj-nested-rest.js    | 2 +-
 .../statements/for/dstr-var-obj-ptrn-rest-obj-own-property.js   | 2 +-
 .../for/dstr-var-obj-ptrn-rest-skip-non-enumerable.js           | 2 +-
 test/language/statements/for/dstr-var-obj-ptrn-rest-val-obj.js  | 2 +-
 .../statements/function/dstr-dflt-obj-ptrn-rest-getter.js       | 2 +-
 .../statements/function/dstr-dflt-obj-ptrn-rest-nested-obj.js   | 2 +-
 .../function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js         | 2 +-
 .../function/dstr-dflt-obj-ptrn-rest-obj-own-property.js        | 2 +-
 .../function/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js     | 2 +-
 .../statements/function/dstr-dflt-obj-ptrn-rest-val-obj.js      | 2 +-
 test/language/statements/function/dstr-obj-ptrn-rest-getter.js  | 2 +-
 .../statements/function/dstr-obj-ptrn-rest-nested-obj.js        | 2 +-
 .../statements/function/dstr-obj-ptrn-rest-obj-nested-rest.js   | 2 +-
 .../statements/function/dstr-obj-ptrn-rest-obj-own-property.js  | 2 +-
 .../function/dstr-obj-ptrn-rest-skip-non-enumerable.js          | 2 +-
 test/language/statements/function/dstr-obj-ptrn-rest-val-obj.js | 2 +-
 .../statements/generators/dstr-dflt-obj-ptrn-rest-getter.js     | 2 +-
 .../statements/generators/dstr-dflt-obj-ptrn-rest-nested-obj.js | 2 +-
 .../generators/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js       | 2 +-
 .../generators/dstr-dflt-obj-ptrn-rest-obj-own-property.js      | 2 +-
 .../generators/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js   | 2 +-
 .../statements/generators/dstr-dflt-obj-ptrn-rest-val-obj.js    | 2 +-
 .../language/statements/generators/dstr-obj-ptrn-rest-getter.js | 2 +-
 .../statements/generators/dstr-obj-ptrn-rest-nested-obj.js      | 2 +-
 .../statements/generators/dstr-obj-ptrn-rest-obj-nested-rest.js | 2 +-
 .../generators/dstr-obj-ptrn-rest-obj-own-property.js           | 2 +-
 .../generators/dstr-obj-ptrn-rest-skip-non-enumerable.js        | 2 +-
 .../statements/generators/dstr-obj-ptrn-rest-val-obj.js         | 2 +-
 test/language/statements/let/dstr-obj-ptrn-rest-getter.js       | 2 +-
 test/language/statements/let/dstr-obj-ptrn-rest-nested-obj.js   | 2 +-
 .../statements/let/dstr-obj-ptrn-rest-obj-nested-rest.js        | 2 +-
 .../statements/let/dstr-obj-ptrn-rest-obj-own-property.js       | 2 +-
 .../statements/let/dstr-obj-ptrn-rest-skip-non-enumerable.js    | 2 +-
 test/language/statements/let/dstr-obj-ptrn-rest-val-obj.js      | 2 +-
 test/language/statements/try/dstr-obj-ptrn-rest-getter.js       | 2 +-
 test/language/statements/try/dstr-obj-ptrn-rest-nested-obj.js   | 2 +-
 .../statements/try/dstr-obj-ptrn-rest-obj-nested-rest.js        | 2 +-
 .../statements/try/dstr-obj-ptrn-rest-obj-own-property.js       | 2 +-
 .../statements/try/dstr-obj-ptrn-rest-skip-non-enumerable.js    | 2 +-
 test/language/statements/try/dstr-obj-ptrn-rest-val-obj.js      | 2 +-
 test/language/statements/variable/dstr-obj-ptrn-rest-getter.js  | 2 +-
 .../statements/variable/dstr-obj-ptrn-rest-nested-obj.js        | 2 +-
 .../statements/variable/dstr-obj-ptrn-rest-obj-nested-rest.js   | 2 +-
 .../statements/variable/dstr-obj-ptrn-rest-obj-own-property.js  | 2 +-
 .../variable/dstr-obj-ptrn-rest-skip-non-enumerable.js          | 2 +-
 test/language/statements/variable/dstr-obj-ptrn-rest-val-obj.js | 2 +-
 379 files changed, 379 insertions(+), 279 deletions(-)

diff --git a/test/language/expressions/array/spread-err-mult-err-obj-getter-throws.js b/test/language/expressions/array/spread-err-mult-err-obj-getter-throws.js
index e104172023..7dfdd191dc 100644
--- a/test/language/expressions/array/spread-err-mult-err-obj-getter-throws.js
+++ b/test/language/expressions/array/spread-err-mult-err-obj-getter-throws.js
@@ -5,6 +5,7 @@
 description: Object Spread operator results in error when there is an getter that throws an exception (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-err-mult-err-obj-unresolvable.js b/test/language/expressions/array/spread-err-mult-err-obj-unresolvable.js
index 765ba4b4e8..11819a6b35 100644
--- a/test/language/expressions/array/spread-err-mult-err-obj-unresolvable.js
+++ b/test/language/expressions/array/spread-err-mult-err-obj-unresolvable.js
@@ -5,6 +5,7 @@
 description: Object Spread operator results in error when using an unresolvable reference (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-mult-obj-base.js b/test/language/expressions/array/spread-mult-obj-base.js
index 87ed6babb5..37cbe1c462 100644
--- a/test/language/expressions/array/spread-mult-obj-base.js
+++ b/test/language/expressions/array/spread-mult-obj-base.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/array/spread-mult-obj-empty.js b/test/language/expressions/array/spread-mult-obj-empty.js
index 934cdc83ba..7b7c42682a 100644
--- a/test/language/expressions/array/spread-mult-obj-empty.js
+++ b/test/language/expressions/array/spread-mult-obj-empty.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with empty object (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-mult-obj-ident.js b/test/language/expressions/array/spread-mult-obj-ident.js
index 0802f029d7..db0ca9ae97 100644
--- a/test/language/expressions/array/spread-mult-obj-ident.js
+++ b/test/language/expressions/array/spread-mult-obj-ident.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other properties (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/array/spread-mult-obj-null-empty-undefined.js b/test/language/expressions/array/spread-mult-obj-null-empty-undefined.js
index b43c6dd306..ec2cc9e48e 100644
--- a/test/language/expressions/array/spread-mult-obj-null-empty-undefined.js
+++ b/test/language/expressions/array/spread-mult-obj-null-empty-undefined.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with null, undefined and empty object (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 includes: [compareArray.js]
 info: |
diff --git a/test/language/expressions/array/spread-mult-obj-null.js b/test/language/expressions/array/spread-mult-obj-null.js
index 380144d555..9ca1501eb8 100644
--- a/test/language/expressions/array/spread-mult-obj-null.js
+++ b/test/language/expressions/array/spread-mult-obj-null.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with null value (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-mult-obj-undefined.js b/test/language/expressions/array/spread-mult-obj-undefined.js
index 0503740bd6..7fc2f4e0d0 100644
--- a/test/language/expressions/array/spread-mult-obj-undefined.js
+++ b/test/language/expressions/array/spread-mult-obj-undefined.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with undefined (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-obj-getter-descriptor.js b/test/language/expressions/array/spread-obj-getter-descriptor.js
index fd4b97b6c4..cc4da71bd3 100644
--- a/test/language/expressions/array/spread-obj-getter-descriptor.js
+++ b/test/language/expressions/array/spread-obj-getter-descriptor.js
@@ -5,6 +5,7 @@
 description: Spread operation with getter results in data property descriptor (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/array/spread-obj-getter-init.js b/test/language/expressions/array/spread-obj-getter-init.js
index 6e35346864..4431356f6c 100644
--- a/test/language/expressions/array/spread-obj-getter-init.js
+++ b/test/language/expressions/array/spread-obj-getter-init.js
@@ -5,6 +5,7 @@
 description: Getter in object literal is not evaluated (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-obj-manipulate-outter-obj-in-getter.js b/test/language/expressions/array/spread-obj-manipulate-outter-obj-in-getter.js
index 6d60bf08d3..37d653b912 100644
--- a/test/language/expressions/array/spread-obj-manipulate-outter-obj-in-getter.js
+++ b/test/language/expressions/array/spread-obj-manipulate-outter-obj-in-getter.js
@@ -5,6 +5,7 @@
 description: Getter manipulates outter object before it's spread operation (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-obj-mult-spread-getter.js b/test/language/expressions/array/spread-obj-mult-spread-getter.js
index 150075e543..d9f57a011a 100644
--- a/test/language/expressions/array/spread-obj-mult-spread-getter.js
+++ b/test/language/expressions/array/spread-obj-mult-spread-getter.js
@@ -5,6 +5,7 @@
 description: Multiple Object Spread usage calls getter multiple times (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-obj-mult-spread.js b/test/language/expressions/array/spread-obj-mult-spread.js
index 197bc6fa36..45fed7f921 100644
--- a/test/language/expressions/array/spread-obj-mult-spread.js
+++ b/test/language/expressions/array/spread-obj-mult-spread.js
@@ -5,6 +5,7 @@
 description: Multiple Object Spread operation (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-obj-null.js b/test/language/expressions/array/spread-obj-null.js
index acc60db0d0..5b81663ebc 100644
--- a/test/language/expressions/array/spread-obj-null.js
+++ b/test/language/expressions/array/spread-obj-null.js
@@ -5,6 +5,7 @@
 description: Null Object Spread is ignored (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-obj-override-immutable.js b/test/language/expressions/array/spread-obj-override-immutable.js
index ca47b8e2da..b03695a23e 100644
--- a/test/language/expressions/array/spread-obj-override-immutable.js
+++ b/test/language/expressions/array/spread-obj-override-immutable.js
@@ -5,6 +5,7 @@
 description: Object Spread overriding immutable properties (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/array/spread-obj-overrides-prev-properties.js b/test/language/expressions/array/spread-obj-overrides-prev-properties.js
index 87df02b346..42c736ace7 100644
--- a/test/language/expressions/array/spread-obj-overrides-prev-properties.js
+++ b/test/language/expressions/array/spread-obj-overrides-prev-properties.js
@@ -5,6 +5,7 @@
 description: Object Spread properties overrides previous definitions (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-obj-setter-redef.js b/test/language/expressions/array/spread-obj-setter-redef.js
index 7fadcad29a..8bb804dd80 100644
--- a/test/language/expressions/array/spread-obj-setter-redef.js
+++ b/test/language/expressions/array/spread-obj-setter-redef.js
@@ -5,6 +5,7 @@
 description: Setter are not executed when redefined in Object Spread (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-obj-skip-non-enumerable.js b/test/language/expressions/array/spread-obj-skip-non-enumerable.js
index b2b21a3e64..ac841eb7ef 100644
--- a/test/language/expressions/array/spread-obj-skip-non-enumerable.js
+++ b/test/language/expressions/array/spread-obj-skip-non-enumerable.js
@@ -5,6 +5,7 @@
 description: Object Spread doesn't copy non-enumerable properties (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-obj-spread-order.js b/test/language/expressions/array/spread-obj-spread-order.js
index eb873319b0..99e2558527 100644
--- a/test/language/expressions/array/spread-obj-spread-order.js
+++ b/test/language/expressions/array/spread-obj-spread-order.js
@@ -5,6 +5,7 @@
 description: Spread operation follows [[OwnPropertyKeys]] order (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 includes: [compareArray.js]
 info: |
diff --git a/test/language/expressions/array/spread-obj-symbol-property.js b/test/language/expressions/array/spread-obj-symbol-property.js
index 7965be9715..b40fbceffb 100644
--- a/test/language/expressions/array/spread-obj-symbol-property.js
+++ b/test/language/expressions/array/spread-obj-symbol-property.js
@@ -5,6 +5,7 @@
 description: Spread operation where source object contains Symbol properties (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-obj-undefined.js b/test/language/expressions/array/spread-obj-undefined.js
index e77b0f28bb..9c42fbaaa0 100644
--- a/test/language/expressions/array/spread-obj-undefined.js
+++ b/test/language/expressions/array/spread-obj-undefined.js
@@ -5,6 +5,7 @@
 description: Undefined Object Spread is ignored (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-obj-with-overrides.js b/test/language/expressions/array/spread-obj-with-overrides.js
index 9b668c1877..f1789ba88a 100644
--- a/test/language/expressions/array/spread-obj-with-overrides.js
+++ b/test/language/expressions/array/spread-obj-with-overrides.js
@@ -5,6 +5,7 @@
 description: Object Spread properties being overriden (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-sngl-obj-base.js b/test/language/expressions/array/spread-sngl-obj-base.js
index c52a2bdccd..c71094aa2d 100644
--- a/test/language/expressions/array/spread-sngl-obj-base.js
+++ b/test/language/expressions/array/spread-sngl-obj-base.js
@@ -5,6 +5,7 @@
 description: Object Spread operator without other arguments (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/array/spread-sngl-obj-empty.js b/test/language/expressions/array/spread-sngl-obj-empty.js
index 7f10f7fba6..f44cb8cfbb 100644
--- a/test/language/expressions/array/spread-sngl-obj-empty.js
+++ b/test/language/expressions/array/spread-sngl-obj-empty.js
@@ -5,6 +5,7 @@
 description: Object Spread operator on a single empty object (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 info: |
     SpreadElement : ...AssignmentExpression
diff --git a/test/language/expressions/array/spread-sngl-obj-ident.js b/test/language/expressions/array/spread-sngl-obj-ident.js
index 95dfa3d529..453bf2ff1b 100644
--- a/test/language/expressions/array/spread-sngl-obj-ident.js
+++ b/test/language/expressions/array/spread-sngl-obj-ident.js
@@ -5,6 +5,7 @@
 description: Object Spread operator without other arguments (Array initializer)
 esid: sec-runtime-semantics-arrayaccumulation
 es6id: 12.2.5.2
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-getter.js b/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-getter.js
index 9a53bc062c..097d99a91a 100644
--- a/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (arrow function expression (default parameter))
 esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-nested-obj.js b/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-nested-obj.js
index 5310725ac7..c2cf817892 100644
--- a/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (arrow function expression (default parameter))
 esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
diff --git a/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
index c498e46b91..f0c2c8b2a6 100644
--- a/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (arrow function expression (default parameter))
 esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-obj-own-property.js
index 85bb47d8aa..a94440a4c3 100644
--- a/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (arrow function expression (default parameter))
 esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js
index 748c399a8c..e043646443 100644
--- a/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (arrow function expression (default parameter))
 esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-val-obj.js b/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-val-obj.js
index cb533a4cbc..b77e9644b8 100644
--- a/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (arrow function expression (default parameter))
 esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-getter.js b/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-getter.js
index fa313a74ac..8cffd061fc 100644
--- a/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (arrow function expression)
 esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-nested-obj.js b/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-nested-obj.js
index 42771a7345..854083b15f 100644
--- a/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (arrow function expression)
 esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
diff --git a/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-obj-nested-rest.js
index bb885d5399..b7556529aa 100644
--- a/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (arrow function expression)
 esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-obj-own-property.js
index 861211423f..9342b9db2a 100644
--- a/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (arrow function expression)
 esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-skip-non-enumerable.js
index afba4548de..b196810dff 100644
--- a/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (arrow function expression)
 esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-val-obj.js b/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-val-obj.js
index 80b7d6dec9..19e12d6db5 100644
--- a/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/arrow-function/dstr-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (arrow function expression)
 esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/assignment/dstr-obj-rest-descriptors.js b/test/language/expressions/assignment/dstr-obj-rest-descriptors.js
index 8dd277a194..6ade3441fd 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-descriptors.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-descriptors.js
@@ -5,7 +5,7 @@
 description: Object created from rest deconstruction doesn't copy source object property descriptors. (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/assignment/dstr-obj-rest-empty-obj.js b/test/language/expressions/assignment/dstr-obj-rest-empty-obj.js
index ad0f175300..25b5d36a72 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-empty-obj.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-empty-obj.js
@@ -5,7 +5,7 @@
 description: RestBindingInitialization creates a new object even if lhs is an empty object (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     VariableDeclaration : BindingPattern Initializer
diff --git a/test/language/expressions/assignment/dstr-obj-rest-getter-abrupt-get-error.js b/test/language/expressions/assignment/dstr-obj-rest-getter-abrupt-get-error.js
index 62c42b8f8d..d63c77b265 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-getter-abrupt-get-error.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-getter-abrupt-get-error.js
@@ -5,7 +5,7 @@
 description: Rest deconstruction doesn't happen if getter return is abrupt (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     VariableDeclaration : BindingPattern Initializer
diff --git a/test/language/expressions/assignment/dstr-obj-rest-getter.js b/test/language/expressions/assignment/dstr-obj-rest-getter.js
index d8b270b46f..f8127311a2 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-getter.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/assignment/dstr-obj-rest-nested-obj-nested-rest.js b/test/language/expressions/assignment/dstr-obj-rest-nested-obj-nested-rest.js
index f8f75ebd9a..af5973000e 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-nested-obj-nested-rest.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-nested-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/assignment/dstr-obj-rest-nested-obj.js b/test/language/expressions/assignment/dstr-obj-rest-nested-obj.js
index 0b3fd4d040..13ab79c17b 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-nested-obj.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     VariableDeclaration : BindingPattern Initializer
diff --git a/test/language/expressions/assignment/dstr-obj-rest-not-last-element-invalid.js b/test/language/expressions/assignment/dstr-obj-rest-not-last-element-invalid.js
index 91a927d3ae..c9bee46e92 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-not-last-element-invalid.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-not-last-element-invalid.js
@@ -5,7 +5,7 @@
 description: Object rest element needs to be the last AssignmenProperty in ObjectAssignmentPattern. (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 negative:
   phase: early
diff --git a/test/language/expressions/assignment/dstr-obj-rest-number.js b/test/language/expressions/assignment/dstr-obj-rest-number.js
index b2c5aa9d02..037c915516 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-number.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-number.js
@@ -5,7 +5,7 @@
 description: RestBindingInitialization creates a new object even if lhs is a Number (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     VariableDeclaration : BindingPattern Initializer
diff --git a/test/language/expressions/assignment/dstr-obj-rest-obj-own-property.js b/test/language/expressions/assignment/dstr-obj-rest-obj-own-property.js
index 403cb8f2b8..07bc12b48e 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-obj-own-property.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just source object's own properties (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     VariableDeclaration : BindingPattern Initializer
diff --git a/test/language/expressions/assignment/dstr-obj-rest-put-const.js b/test/language/expressions/assignment/dstr-obj-rest-put-const.js
index 132032d03e..c458417dc0 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-put-const.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-put-const.js
@@ -5,7 +5,7 @@
 description: The object rest deconstruction assignment target should obey `const` semantics. (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [const, destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     VariableDeclaration : BindingPattern Initializer
diff --git a/test/language/expressions/assignment/dstr-obj-rest-same-name.js b/test/language/expressions/assignment/dstr-obj-rest-same-name.js
index 5035c58b4a..29ee789bef 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-same-name.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-same-name.js
@@ -5,7 +5,7 @@
 description: Proper setting in the values for rest name equal to a property name. (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     VariableDeclaration : BindingPattern Initializer
diff --git a/test/language/expressions/assignment/dstr-obj-rest-skip-non-enumerable.js b/test/language/expressions/assignment/dstr-obj-rest-skip-non-enumerable.js
index 535501b4a1..750d34ce98 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-skip-non-enumerable.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/assignment/dstr-obj-rest-str-val.js b/test/language/expressions/assignment/dstr-obj-rest-str-val.js
index a89f0658f6..c8d2e1d43b 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-str-val.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-str-val.js
@@ -5,7 +5,7 @@
 description: RestBindingInitialization creats an object with indexes as property name (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     VariableDeclaration : BindingPattern Initializer
diff --git a/test/language/expressions/assignment/dstr-obj-rest-symbol-val.js b/test/language/expressions/assignment/dstr-obj-rest-symbol-val.js
index f3a50754ab..5afce16730 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-symbol-val.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-symbol-val.js
@@ -5,7 +5,7 @@
 description: RestBindingInitialization creates a new object if lhs is a Symbol (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     VariableDeclaration : BindingPattern Initializer
diff --git a/test/language/expressions/assignment/dstr-obj-rest-to-property-with-setter.js b/test/language/expressions/assignment/dstr-obj-rest-to-property-with-setter.js
index 1f30664bd3..0f3ccc6200 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-to-property-with-setter.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-to-property-with-setter.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object property setter, its value should be binded as rest object. (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     VariableDeclaration : BindingPattern Initializer
diff --git a/test/language/expressions/assignment/dstr-obj-rest-to-property.js b/test/language/expressions/assignment/dstr-obj-rest-to-property.js
index 1788d589ec..8c98d2868c 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-to-property.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-to-property.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object property, its value should be binded as rest object. (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/assignment/dstr-obj-rest-val-null.js b/test/language/expressions/assignment/dstr-obj-rest-val-null.js
index db5bf6046e..97da15bb84 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-val-null.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-val-null.js
@@ -5,7 +5,7 @@
 description: TypeError is thrown when rhs is null because of 7.1.13 ToObject ( argument ) used by CopyDataProperties (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     VariableDeclaration : BindingPattern Initializer
diff --git a/test/language/expressions/assignment/dstr-obj-rest-val-undefined.js b/test/language/expressions/assignment/dstr-obj-rest-val-undefined.js
index f7a4904831..e72623f23a 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-val-undefined.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-val-undefined.js
@@ -5,7 +5,7 @@
 description: TypeError is thrown when rhs is ```undefined``` because of 7.1.13 ToObject ( argument ) used by CopyDataProperties (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     VariableDeclaration : BindingPattern Initializer
diff --git a/test/language/expressions/assignment/dstr-obj-rest-valid-object.js b/test/language/expressions/assignment/dstr-obj-rest-valid-object.js
index c2850b0cfc..95052ccc83 100644
--- a/test/language/expressions/assignment/dstr-obj-rest-valid-object.js
+++ b/test/language/expressions/assignment/dstr-obj-rest-valid-object.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (AssignmentExpression)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/call/spread-err-mult-err-obj-getter-throws.js b/test/language/expressions/call/spread-err-mult-err-obj-getter-throws.js
index 748fee288c..82e14673ff 100644
--- a/test/language/expressions/call/spread-err-mult-err-obj-getter-throws.js
+++ b/test/language/expressions/call/spread-err-mult-err-obj-getter-throws.js
@@ -5,6 +5,7 @@
 description: Object Spread operator results in error when there is an getter that throws an exception (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-err-mult-err-obj-unresolvable.js b/test/language/expressions/call/spread-err-mult-err-obj-unresolvable.js
index 68ad324e9c..8ed3064b21 100644
--- a/test/language/expressions/call/spread-err-mult-err-obj-unresolvable.js
+++ b/test/language/expressions/call/spread-err-mult-err-obj-unresolvable.js
@@ -5,6 +5,7 @@
 description: Object Spread operator results in error when using an unresolvable reference (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-mult-obj-base.js b/test/language/expressions/call/spread-mult-obj-base.js
index b62eeca875..cb411cb9cf 100644
--- a/test/language/expressions/call/spread-mult-obj-base.js
+++ b/test/language/expressions/call/spread-mult-obj-base.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/call/spread-mult-obj-empty.js b/test/language/expressions/call/spread-mult-obj-empty.js
index f2318e12a9..7a3f959896 100644
--- a/test/language/expressions/call/spread-mult-obj-empty.js
+++ b/test/language/expressions/call/spread-mult-obj-empty.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with empty object (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-mult-obj-ident.js b/test/language/expressions/call/spread-mult-obj-ident.js
index 5e3b30bef6..4222e37adc 100644
--- a/test/language/expressions/call/spread-mult-obj-ident.js
+++ b/test/language/expressions/call/spread-mult-obj-ident.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other properties (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/call/spread-mult-obj-null-empty-undefined.js b/test/language/expressions/call/spread-mult-obj-null-empty-undefined.js
index d54b4ecbdf..e7b18e18eb 100644
--- a/test/language/expressions/call/spread-mult-obj-null-empty-undefined.js
+++ b/test/language/expressions/call/spread-mult-obj-null-empty-undefined.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with null, undefined and empty object (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 includes: [compareArray.js]
 info: |
diff --git a/test/language/expressions/call/spread-mult-obj-null.js b/test/language/expressions/call/spread-mult-obj-null.js
index b51d799c7b..5b58fb659d 100644
--- a/test/language/expressions/call/spread-mult-obj-null.js
+++ b/test/language/expressions/call/spread-mult-obj-null.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with null value (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-mult-obj-undefined.js b/test/language/expressions/call/spread-mult-obj-undefined.js
index f0b835fd50..e19c00628d 100644
--- a/test/language/expressions/call/spread-mult-obj-undefined.js
+++ b/test/language/expressions/call/spread-mult-obj-undefined.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with undefined (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-obj-getter-descriptor.js b/test/language/expressions/call/spread-obj-getter-descriptor.js
index f5419982e3..2f6524d5b7 100644
--- a/test/language/expressions/call/spread-obj-getter-descriptor.js
+++ b/test/language/expressions/call/spread-obj-getter-descriptor.js
@@ -5,6 +5,7 @@
 description: Spread operation with getter results in data property descriptor (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/call/spread-obj-getter-init.js b/test/language/expressions/call/spread-obj-getter-init.js
index 9c4941bafb..964eed06b8 100644
--- a/test/language/expressions/call/spread-obj-getter-init.js
+++ b/test/language/expressions/call/spread-obj-getter-init.js
@@ -5,6 +5,7 @@
 description: Getter in object literal is not evaluated (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-obj-manipulate-outter-obj-in-getter.js b/test/language/expressions/call/spread-obj-manipulate-outter-obj-in-getter.js
index d16478264b..d849447be8 100644
--- a/test/language/expressions/call/spread-obj-manipulate-outter-obj-in-getter.js
+++ b/test/language/expressions/call/spread-obj-manipulate-outter-obj-in-getter.js
@@ -5,6 +5,7 @@
 description: Getter manipulates outter object before it's spread operation (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-obj-mult-spread-getter.js b/test/language/expressions/call/spread-obj-mult-spread-getter.js
index c41381978a..bc0a4a6d00 100644
--- a/test/language/expressions/call/spread-obj-mult-spread-getter.js
+++ b/test/language/expressions/call/spread-obj-mult-spread-getter.js
@@ -5,6 +5,7 @@
 description: Multiple Object Spread usage calls getter multiple times (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-obj-mult-spread.js b/test/language/expressions/call/spread-obj-mult-spread.js
index e933c1b981..129a8746e8 100644
--- a/test/language/expressions/call/spread-obj-mult-spread.js
+++ b/test/language/expressions/call/spread-obj-mult-spread.js
@@ -5,6 +5,7 @@
 description: Multiple Object Spread operation (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-obj-null.js b/test/language/expressions/call/spread-obj-null.js
index 73e9d19140..33ce394065 100644
--- a/test/language/expressions/call/spread-obj-null.js
+++ b/test/language/expressions/call/spread-obj-null.js
@@ -5,6 +5,7 @@
 description: Null Object Spread is ignored (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-obj-override-immutable.js b/test/language/expressions/call/spread-obj-override-immutable.js
index 51553ff041..6453311aff 100644
--- a/test/language/expressions/call/spread-obj-override-immutable.js
+++ b/test/language/expressions/call/spread-obj-override-immutable.js
@@ -5,6 +5,7 @@
 description: Object Spread overriding immutable properties (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/call/spread-obj-overrides-prev-properties.js b/test/language/expressions/call/spread-obj-overrides-prev-properties.js
index eac8ab50f0..4815c7e0f3 100644
--- a/test/language/expressions/call/spread-obj-overrides-prev-properties.js
+++ b/test/language/expressions/call/spread-obj-overrides-prev-properties.js
@@ -5,6 +5,7 @@
 description: Object Spread properties overrides previous definitions (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-obj-setter-redef.js b/test/language/expressions/call/spread-obj-setter-redef.js
index b14a129ef5..a2d37aef4d 100644
--- a/test/language/expressions/call/spread-obj-setter-redef.js
+++ b/test/language/expressions/call/spread-obj-setter-redef.js
@@ -5,6 +5,7 @@
 description: Setter are not executed when redefined in Object Spread (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-obj-skip-non-enumerable.js b/test/language/expressions/call/spread-obj-skip-non-enumerable.js
index dafc8a5a27..4b1bc71197 100644
--- a/test/language/expressions/call/spread-obj-skip-non-enumerable.js
+++ b/test/language/expressions/call/spread-obj-skip-non-enumerable.js
@@ -5,6 +5,7 @@
 description: Object Spread doesn't copy non-enumerable properties (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-obj-spread-order.js b/test/language/expressions/call/spread-obj-spread-order.js
index f59c095261..1345f6304c 100644
--- a/test/language/expressions/call/spread-obj-spread-order.js
+++ b/test/language/expressions/call/spread-obj-spread-order.js
@@ -5,6 +5,7 @@
 description: Spread operation follows [[OwnPropertyKeys]] order (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 includes: [compareArray.js]
 info: |
diff --git a/test/language/expressions/call/spread-obj-symbol-property.js b/test/language/expressions/call/spread-obj-symbol-property.js
index 456ccb8207..35b0427159 100644
--- a/test/language/expressions/call/spread-obj-symbol-property.js
+++ b/test/language/expressions/call/spread-obj-symbol-property.js
@@ -5,6 +5,7 @@
 description: Spread operation where source object contains Symbol properties (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-obj-undefined.js b/test/language/expressions/call/spread-obj-undefined.js
index cbd4ab4011..c5ecd083a1 100644
--- a/test/language/expressions/call/spread-obj-undefined.js
+++ b/test/language/expressions/call/spread-obj-undefined.js
@@ -5,6 +5,7 @@
 description: Undefined Object Spread is ignored (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-obj-with-overrides.js b/test/language/expressions/call/spread-obj-with-overrides.js
index 8666ca3118..97d2585d05 100644
--- a/test/language/expressions/call/spread-obj-with-overrides.js
+++ b/test/language/expressions/call/spread-obj-with-overrides.js
@@ -5,6 +5,7 @@
 description: Object Spread properties being overriden (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-sngl-obj-base.js b/test/language/expressions/call/spread-sngl-obj-base.js
index 39b8e68092..df3f2a5b38 100644
--- a/test/language/expressions/call/spread-sngl-obj-base.js
+++ b/test/language/expressions/call/spread-sngl-obj-base.js
@@ -5,6 +5,7 @@
 description: Object Spread operator without other arguments (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/call/spread-sngl-obj-empty.js b/test/language/expressions/call/spread-sngl-obj-empty.js
index 15a17d8b70..976d2d990d 100644
--- a/test/language/expressions/call/spread-sngl-obj-empty.js
+++ b/test/language/expressions/call/spread-sngl-obj-empty.js
@@ -5,6 +5,7 @@
 description: Object Spread operator on a single empty object (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 info: |
     CallExpression : MemberExpression Arguments
diff --git a/test/language/expressions/call/spread-sngl-obj-ident.js b/test/language/expressions/call/spread-sngl-obj-ident.js
index d4d471d903..754ba9d565 100644
--- a/test/language/expressions/call/spread-sngl-obj-ident.js
+++ b/test/language/expressions/call/spread-sngl-obj-ident.js
@@ -5,6 +5,7 @@
 description: Object Spread operator without other arguments (CallExpression)
 esid: sec-function-calls-runtime-semantics-evaluation
 es6id: 12.3.4.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-getter.js b/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-getter.js
index 04ae8cd435..97cafc5822 100644
--- a/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js b/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js
index 2c6e850ed2..7e100f7446 100644
--- a/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
diff --git a/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
index 3cc4d3f5eb..6d9eac0eb2 100644
--- a/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js
index 2b95e4c6e9..747ec146b7 100644
--- a/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
index 4be1a2a5b3..520235c42e 100644
--- a/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-val-obj.js b/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-val-obj.js
index c897cabd23..2b1aff736d 100644
--- a/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-getter.js b/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-getter.js
index 9957e8aa83..213fa9d196 100644
--- a/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-nested-obj.js b/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-nested-obj.js
index 4f77207e0d..ace72fb235 100644
--- a/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
diff --git a/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js
index a3256342e3..e607e28e91 100644
--- a/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js
index 25fb833e34..e894845bb1 100644
--- a/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-skip-non-enumerable.js
index 5884e4f80f..05b576705c 100644
--- a/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-val-obj.js b/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-val-obj.js
index 1885fa9336..4adc9cdcd0 100644
--- a/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-getter.js b/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-getter.js
index 7e86b6a831..d731f65009 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (static class expression generator method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-nested-obj.js b/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-nested-obj.js
index c84f67b6f4..0bb971a6b1 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (static class expression generator method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
diff --git a/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
index 7a2d95e338..299e230983 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (static class expression generator method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
index 27d58ce4aa..e34ca1f0ee 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (static class expression generator method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js
index e909b8dbdc..1fecf9c645 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (static class expression generator method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-val-obj.js b/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-val-obj.js
index 7976abf4d8..24ac97c2b9 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (static class expression generator method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-getter.js b/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-getter.js
index 6daadb963b..282d377b2b 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (static class expression generator method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-nested-obj.js b/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-nested-obj.js
index 71b85cc644..2ddd8e2b8a 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (static class expression generator method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
diff --git a/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-obj-nested-rest.js
index 7190f9ca41..e330af9afc 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (static class expression generator method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-obj-own-property.js
index 72391664a3..66797f7bb2 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (static class expression generator method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js
index 1438d4fda0..a1557f6e53 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (static class expression generator method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-val-obj.js b/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-val-obj.js
index 41ff3fb90e..d6ad7d7628 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (static class expression generator method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-getter.js b/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-getter.js
index 6d6c6402ab..a4f0dcb856 100644
--- a/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js b/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js
index f86f87d244..86cf01270a 100644
--- a/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
diff --git a/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
index 27036c6010..ae805f6512 100644
--- a/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js
index 0d3d32f0aa..a3fcf5edc2 100644
--- a/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
index f4afbe1678..3d740e4e16 100644
--- a/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-val-obj.js b/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-val-obj.js
index 6ac34262cc..67a3a5a1f1 100644
--- a/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-obj-ptrn-rest-getter.js b/test/language/expressions/class/dstr-meth-obj-ptrn-rest-getter.js
index 7434286f3c..b30e2d01bd 100644
--- a/test/language/expressions/class/dstr-meth-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/class/dstr-meth-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-obj-ptrn-rest-nested-obj.js b/test/language/expressions/class/dstr-meth-obj-ptrn-rest-nested-obj.js
index 54eab9ccd3..c1348f7a4e 100644
--- a/test/language/expressions/class/dstr-meth-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/class/dstr-meth-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
diff --git a/test/language/expressions/class/dstr-meth-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/class/dstr-meth-obj-ptrn-rest-obj-nested-rest.js
index c6b31883af..e744762837 100644
--- a/test/language/expressions/class/dstr-meth-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/class/dstr-meth-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/class/dstr-meth-obj-ptrn-rest-obj-own-property.js
index ccbee2c5e3..8689f02437 100644
--- a/test/language/expressions/class/dstr-meth-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/class/dstr-meth-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/class/dstr-meth-obj-ptrn-rest-skip-non-enumerable.js
index a94647a03f..ba6fe17c81 100644
--- a/test/language/expressions/class/dstr-meth-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/class/dstr-meth-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-obj-ptrn-rest-val-obj.js b/test/language/expressions/class/dstr-meth-obj-ptrn-rest-val-obj.js
index ed96fd7759..0231c198ec 100644
--- a/test/language/expressions/class/dstr-meth-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/class/dstr-meth-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-getter.js b/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-getter.js
index 2708eceadd..6e594dcbd2 100644
--- a/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (static class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-nested-obj.js b/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-nested-obj.js
index 0e498d0531..44dd524299 100644
--- a/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (static class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
diff --git a/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
index 698377a34d..4d1c0c24cf 100644
--- a/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (static class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
index 60ebd7ba23..2fbe57ff5c 100644
--- a/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (static class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js
index 58d7513538..939633bff8 100644
--- a/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (static class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-val-obj.js b/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-val-obj.js
index 0e42c80fb5..c03eade41a 100644
--- a/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (static class expression method (default parameter))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-getter.js b/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-getter.js
index 11d1a10cd1..c2347a2574 100644
--- a/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (static class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-nested-obj.js b/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-nested-obj.js
index 8a490143b2..8883be6039 100644
--- a/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (static class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
diff --git a/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-obj-nested-rest.js
index 68e7c80084..fef91321de 100644
--- a/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (static class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-obj-own-property.js
index c75394c447..e79dc5ddd6 100644
--- a/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (static class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-skip-non-enumerable.js
index 511d564b12..f15350e515 100644
--- a/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (static class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-val-obj.js b/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-val-obj.js
index 3fef914e86..76bc36bd40 100644
--- a/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/class/dstr-meth-static-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (static class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-getter.js b/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-getter.js
index b2be1ab97e..dc447331da 100644
--- a/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (function expression (default parameter))
 esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-nested-obj.js b/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-nested-obj.js
index 27e7c059c2..508f447de4 100644
--- a/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (function expression (default parameter))
 esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
diff --git a/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
index dabfec8e63..b7a47a37af 100644
--- a/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (function expression (default parameter))
 esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-obj-own-property.js
index 28248dde62..614e4c5f90 100644
--- a/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (function expression (default parameter))
 esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js
index 3c73dc14a1..8623d4f5f4 100644
--- a/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (function expression (default parameter))
 esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-val-obj.js b/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-val-obj.js
index cf8e4bc177..a580a565ae 100644
--- a/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/function/dstr-dflt-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (function expression (default parameter))
 esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/function/dstr-obj-ptrn-rest-getter.js b/test/language/expressions/function/dstr-obj-ptrn-rest-getter.js
index 0dc81a76a9..433bcbfaa7 100644
--- a/test/language/expressions/function/dstr-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/function/dstr-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (function expression)
 esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/function/dstr-obj-ptrn-rest-nested-obj.js b/test/language/expressions/function/dstr-obj-ptrn-rest-nested-obj.js
index 4af893c7cd..fb437e20a0 100644
--- a/test/language/expressions/function/dstr-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/function/dstr-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (function expression)
 esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
diff --git a/test/language/expressions/function/dstr-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/function/dstr-obj-ptrn-rest-obj-nested-rest.js
index 64618bf8dc..f8d7d97d6e 100644
--- a/test/language/expressions/function/dstr-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/function/dstr-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (function expression)
 esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/function/dstr-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/function/dstr-obj-ptrn-rest-obj-own-property.js
index 02f25da760..a9573adb8a 100644
--- a/test/language/expressions/function/dstr-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/function/dstr-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (function expression)
 esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/function/dstr-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/function/dstr-obj-ptrn-rest-skip-non-enumerable.js
index 924073974a..989cedf661 100644
--- a/test/language/expressions/function/dstr-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/function/dstr-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (function expression)
 esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/function/dstr-obj-ptrn-rest-val-obj.js b/test/language/expressions/function/dstr-obj-ptrn-rest-val-obj.js
index 6c1bb53e51..0f77c11c8d 100644
--- a/test/language/expressions/function/dstr-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/function/dstr-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (function expression)
 esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-getter.js b/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-getter.js
index 8b70a8cae4..8ebfd2c355 100644
--- a/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (generator function expression (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-nested-obj.js b/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-nested-obj.js
index ef96c0efe5..be05596c7e 100644
--- a/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (generator function expression (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
index 75553e26ca..dd455868b1 100644
--- a/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (generator function expression (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-obj-own-property.js
index 9d0060b2c0..76b609c3dc 100644
--- a/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (generator function expression (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js
index 1e4b19b6f3..79be9ff7af 100644
--- a/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (generator function expression (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-val-obj.js b/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-val-obj.js
index e05aa830d9..890142f083 100644
--- a/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/generators/dstr-dflt-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (generator function expression (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/generators/dstr-obj-ptrn-rest-getter.js b/test/language/expressions/generators/dstr-obj-ptrn-rest-getter.js
index 03289aee38..426af12caf 100644
--- a/test/language/expressions/generators/dstr-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/generators/dstr-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (generator function expression)
 esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/generators/dstr-obj-ptrn-rest-nested-obj.js b/test/language/expressions/generators/dstr-obj-ptrn-rest-nested-obj.js
index 19e826e83c..c10fcd34db 100644
--- a/test/language/expressions/generators/dstr-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/generators/dstr-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (generator function expression)
 esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/generators/dstr-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/generators/dstr-obj-ptrn-rest-obj-nested-rest.js
index e90f20d099..9061739e0f 100644
--- a/test/language/expressions/generators/dstr-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/generators/dstr-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (generator function expression)
 esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/generators/dstr-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/generators/dstr-obj-ptrn-rest-obj-own-property.js
index 35a691d140..9c8b1a92c7 100644
--- a/test/language/expressions/generators/dstr-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/generators/dstr-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (generator function expression)
 esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/generators/dstr-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/generators/dstr-obj-ptrn-rest-skip-non-enumerable.js
index fd293ce9a3..2fa4830ec1 100644
--- a/test/language/expressions/generators/dstr-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/generators/dstr-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (generator function expression)
 esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/generators/dstr-obj-ptrn-rest-val-obj.js b/test/language/expressions/generators/dstr-obj-ptrn-rest-val-obj.js
index 8005c8039b..7f84d50eb6 100644
--- a/test/language/expressions/generators/dstr-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/generators/dstr-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (generator function expression)
 esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/new/spread-err-mult-err-obj-getter-throws.js b/test/language/expressions/new/spread-err-mult-err-obj-getter-throws.js
index 8f57ab8a2e..08d7fcf705 100644
--- a/test/language/expressions/new/spread-err-mult-err-obj-getter-throws.js
+++ b/test/language/expressions/new/spread-err-mult-err-obj-getter-throws.js
@@ -5,6 +5,7 @@
 description: Object Spread operator results in error when there is an getter that throws an exception (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-err-mult-err-obj-unresolvable.js b/test/language/expressions/new/spread-err-mult-err-obj-unresolvable.js
index 6a6a52f89a..f5585acee1 100644
--- a/test/language/expressions/new/spread-err-mult-err-obj-unresolvable.js
+++ b/test/language/expressions/new/spread-err-mult-err-obj-unresolvable.js
@@ -5,6 +5,7 @@
 description: Object Spread operator results in error when using an unresolvable reference (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-mult-obj-base.js b/test/language/expressions/new/spread-mult-obj-base.js
index 05778b29f3..c3418a9025 100644
--- a/test/language/expressions/new/spread-mult-obj-base.js
+++ b/test/language/expressions/new/spread-mult-obj-base.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/new/spread-mult-obj-empty.js b/test/language/expressions/new/spread-mult-obj-empty.js
index 4ef1166f33..08a544960f 100644
--- a/test/language/expressions/new/spread-mult-obj-empty.js
+++ b/test/language/expressions/new/spread-mult-obj-empty.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with empty object (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-mult-obj-ident.js b/test/language/expressions/new/spread-mult-obj-ident.js
index af240b4d50..1387567b0a 100644
--- a/test/language/expressions/new/spread-mult-obj-ident.js
+++ b/test/language/expressions/new/spread-mult-obj-ident.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other properties (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/new/spread-mult-obj-null-empty-undefined.js b/test/language/expressions/new/spread-mult-obj-null-empty-undefined.js
index 7973599b31..1be7f5b158 100644
--- a/test/language/expressions/new/spread-mult-obj-null-empty-undefined.js
+++ b/test/language/expressions/new/spread-mult-obj-null-empty-undefined.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with null, undefined and empty object (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 includes: [compareArray.js]
 info: |
diff --git a/test/language/expressions/new/spread-mult-obj-null.js b/test/language/expressions/new/spread-mult-obj-null.js
index 65513d1704..f299896866 100644
--- a/test/language/expressions/new/spread-mult-obj-null.js
+++ b/test/language/expressions/new/spread-mult-obj-null.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with null value (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-mult-obj-undefined.js b/test/language/expressions/new/spread-mult-obj-undefined.js
index e0607b791c..ca6f5bbb64 100644
--- a/test/language/expressions/new/spread-mult-obj-undefined.js
+++ b/test/language/expressions/new/spread-mult-obj-undefined.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with undefined (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-obj-getter-descriptor.js b/test/language/expressions/new/spread-obj-getter-descriptor.js
index 851fccd23e..2ed552d92a 100644
--- a/test/language/expressions/new/spread-obj-getter-descriptor.js
+++ b/test/language/expressions/new/spread-obj-getter-descriptor.js
@@ -5,6 +5,7 @@
 description: Spread operation with getter results in data property descriptor (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/new/spread-obj-getter-init.js b/test/language/expressions/new/spread-obj-getter-init.js
index 90e6c169be..2d3c63285f 100644
--- a/test/language/expressions/new/spread-obj-getter-init.js
+++ b/test/language/expressions/new/spread-obj-getter-init.js
@@ -5,6 +5,7 @@
 description: Getter in object literal is not evaluated (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-obj-manipulate-outter-obj-in-getter.js b/test/language/expressions/new/spread-obj-manipulate-outter-obj-in-getter.js
index f2f0c59c99..75240120fb 100644
--- a/test/language/expressions/new/spread-obj-manipulate-outter-obj-in-getter.js
+++ b/test/language/expressions/new/spread-obj-manipulate-outter-obj-in-getter.js
@@ -5,6 +5,7 @@
 description: Getter manipulates outter object before it's spread operation (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-obj-mult-spread-getter.js b/test/language/expressions/new/spread-obj-mult-spread-getter.js
index 9b883d4fc3..5c3508c049 100644
--- a/test/language/expressions/new/spread-obj-mult-spread-getter.js
+++ b/test/language/expressions/new/spread-obj-mult-spread-getter.js
@@ -5,6 +5,7 @@
 description: Multiple Object Spread usage calls getter multiple times (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-obj-mult-spread.js b/test/language/expressions/new/spread-obj-mult-spread.js
index 1db6e76e27..8589b2d7f3 100644
--- a/test/language/expressions/new/spread-obj-mult-spread.js
+++ b/test/language/expressions/new/spread-obj-mult-spread.js
@@ -5,6 +5,7 @@
 description: Multiple Object Spread operation (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-obj-null.js b/test/language/expressions/new/spread-obj-null.js
index 56bb19d8ca..fea94cdac1 100644
--- a/test/language/expressions/new/spread-obj-null.js
+++ b/test/language/expressions/new/spread-obj-null.js
@@ -5,6 +5,7 @@
 description: Null Object Spread is ignored (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-obj-override-immutable.js b/test/language/expressions/new/spread-obj-override-immutable.js
index 8499b07fcd..3462cf0c11 100644
--- a/test/language/expressions/new/spread-obj-override-immutable.js
+++ b/test/language/expressions/new/spread-obj-override-immutable.js
@@ -5,6 +5,7 @@
 description: Object Spread overriding immutable properties (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/new/spread-obj-overrides-prev-properties.js b/test/language/expressions/new/spread-obj-overrides-prev-properties.js
index 66db35815f..f3c38a66fd 100644
--- a/test/language/expressions/new/spread-obj-overrides-prev-properties.js
+++ b/test/language/expressions/new/spread-obj-overrides-prev-properties.js
@@ -5,6 +5,7 @@
 description: Object Spread properties overrides previous definitions (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-obj-setter-redef.js b/test/language/expressions/new/spread-obj-setter-redef.js
index 8fcc64fe41..105b48ed40 100644
--- a/test/language/expressions/new/spread-obj-setter-redef.js
+++ b/test/language/expressions/new/spread-obj-setter-redef.js
@@ -5,6 +5,7 @@
 description: Setter are not executed when redefined in Object Spread (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-obj-skip-non-enumerable.js b/test/language/expressions/new/spread-obj-skip-non-enumerable.js
index 41df184690..360475a9d2 100644
--- a/test/language/expressions/new/spread-obj-skip-non-enumerable.js
+++ b/test/language/expressions/new/spread-obj-skip-non-enumerable.js
@@ -5,6 +5,7 @@
 description: Object Spread doesn't copy non-enumerable properties (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-obj-spread-order.js b/test/language/expressions/new/spread-obj-spread-order.js
index 5c00d7c285..153f2f22f9 100644
--- a/test/language/expressions/new/spread-obj-spread-order.js
+++ b/test/language/expressions/new/spread-obj-spread-order.js
@@ -5,6 +5,7 @@
 description: Spread operation follows [[OwnPropertyKeys]] order (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 includes: [compareArray.js]
 info: |
diff --git a/test/language/expressions/new/spread-obj-symbol-property.js b/test/language/expressions/new/spread-obj-symbol-property.js
index ada48fd50f..6901373cff 100644
--- a/test/language/expressions/new/spread-obj-symbol-property.js
+++ b/test/language/expressions/new/spread-obj-symbol-property.js
@@ -5,6 +5,7 @@
 description: Spread operation where source object contains Symbol properties (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-obj-undefined.js b/test/language/expressions/new/spread-obj-undefined.js
index 713310e689..fa1c1260e4 100644
--- a/test/language/expressions/new/spread-obj-undefined.js
+++ b/test/language/expressions/new/spread-obj-undefined.js
@@ -5,6 +5,7 @@
 description: Undefined Object Spread is ignored (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-obj-with-overrides.js b/test/language/expressions/new/spread-obj-with-overrides.js
index 16674f9f33..85c6036425 100644
--- a/test/language/expressions/new/spread-obj-with-overrides.js
+++ b/test/language/expressions/new/spread-obj-with-overrides.js
@@ -5,6 +5,7 @@
 description: Object Spread properties being overriden (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-sngl-obj-base.js b/test/language/expressions/new/spread-sngl-obj-base.js
index d03aa6e60d..af890534d7 100644
--- a/test/language/expressions/new/spread-sngl-obj-base.js
+++ b/test/language/expressions/new/spread-sngl-obj-base.js
@@ -5,6 +5,7 @@
 description: Object Spread operator without other arguments (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/new/spread-sngl-obj-empty.js b/test/language/expressions/new/spread-sngl-obj-empty.js
index 1dac2b4ad7..abdde8ffc5 100644
--- a/test/language/expressions/new/spread-sngl-obj-empty.js
+++ b/test/language/expressions/new/spread-sngl-obj-empty.js
@@ -5,6 +5,7 @@
 description: Object Spread operator on a single empty object (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 info: |
     MemberExpression : new MemberExpression Arguments
diff --git a/test/language/expressions/new/spread-sngl-obj-ident.js b/test/language/expressions/new/spread-sngl-obj-ident.js
index f9594ceee6..5db69a0325 100644
--- a/test/language/expressions/new/spread-sngl-obj-ident.js
+++ b/test/language/expressions/new/spread-sngl-obj-ident.js
@@ -5,6 +5,7 @@
 description: Object Spread operator without other arguments (`new` operator)
 esid: sec-new-operator-runtime-semantics-evaluation
 es6id: 12.3.3.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-getter.js b/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-getter.js
index 742574e4ac..259a29f00a 100644
--- a/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (generator method (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
 es6id: 14.4.13
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js b/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js
index 131b34ab35..2ea4d3f5a7 100644
--- a/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (generator method (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
 es6id: 14.4.13
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 info: |
     GeneratorMethod :
diff --git a/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
index eeafea25de..d2afe92b21 100644
--- a/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (generator method (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
 es6id: 14.4.13
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js
index 2307b82b6e..4cf32a108c 100644
--- a/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (generator method (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
 es6id: 14.4.13
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
index fa2721731b..a4f94da936 100644
--- a/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (generator method (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
 es6id: 14.4.13
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-val-obj.js b/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-val-obj.js
index 079090dbbb..34b870fc66 100644
--- a/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (generator method (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
 es6id: 14.4.13
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-getter.js b/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-getter.js
index 658b10be97..c3b88af845 100644
--- a/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (generator method)
 esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
 es6id: 14.4.13
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-nested-obj.js b/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-nested-obj.js
index 23554c821b..1577f96955 100644
--- a/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (generator method)
 esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
 es6id: 14.4.13
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     GeneratorMethod :
diff --git a/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js
index 56047880a7..4919ab8d42 100644
--- a/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (generator method)
 esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
 es6id: 14.4.13
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js
index 64ab1563e4..88f145379b 100644
--- a/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (generator method)
 esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
 es6id: 14.4.13
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-skip-non-enumerable.js
index 9f3c5ec9ab..1f19e09127 100644
--- a/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (generator method)
 esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
 es6id: 14.4.13
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-val-obj.js b/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-val-obj.js
index 441d78cd19..b5cbb319b1 100644
--- a/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (generator method)
 esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
 es6id: 14.4.13
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-getter.js b/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-getter.js
index ff36f59aa8..7832ada7c4 100644
--- a/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (method (default parameter))
 esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js b/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js
index 28efd59d50..19d43fd07a 100644
--- a/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (method (default parameter))
 esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
diff --git a/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
index c40aa665ce..05a82c44b2 100644
--- a/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (method (default parameter))
 esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js
index 63f10c9c16..3bf80fa595 100644
--- a/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (method (default parameter))
 esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
index 919fa26f7d..71d257f44b 100644
--- a/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (method (default parameter))
 esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-val-obj.js b/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-val-obj.js
index 8b93f4b5cd..d99390f730 100644
--- a/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (method (default parameter))
 esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-meth-obj-ptrn-rest-getter.js b/test/language/expressions/object/dstr-meth-obj-ptrn-rest-getter.js
index b2e3850e5f..e797c36534 100644
--- a/test/language/expressions/object/dstr-meth-obj-ptrn-rest-getter.js
+++ b/test/language/expressions/object/dstr-meth-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (method)
 esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-meth-obj-ptrn-rest-nested-obj.js b/test/language/expressions/object/dstr-meth-obj-ptrn-rest-nested-obj.js
index c11317fc76..97c0ad2b3a 100644
--- a/test/language/expressions/object/dstr-meth-obj-ptrn-rest-nested-obj.js
+++ b/test/language/expressions/object/dstr-meth-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (method)
 esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
diff --git a/test/language/expressions/object/dstr-meth-obj-ptrn-rest-obj-nested-rest.js b/test/language/expressions/object/dstr-meth-obj-ptrn-rest-obj-nested-rest.js
index 1d42f3be2d..b94801cc58 100644
--- a/test/language/expressions/object/dstr-meth-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/expressions/object/dstr-meth-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (method)
 esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-meth-obj-ptrn-rest-obj-own-property.js b/test/language/expressions/object/dstr-meth-obj-ptrn-rest-obj-own-property.js
index 64cd288b7a..2be6eb8006 100644
--- a/test/language/expressions/object/dstr-meth-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/expressions/object/dstr-meth-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (method)
 esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-meth-obj-ptrn-rest-skip-non-enumerable.js b/test/language/expressions/object/dstr-meth-obj-ptrn-rest-skip-non-enumerable.js
index badc2b45ba..c5af6b3c83 100644
--- a/test/language/expressions/object/dstr-meth-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/expressions/object/dstr-meth-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (method)
 esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/object/dstr-meth-obj-ptrn-rest-val-obj.js b/test/language/expressions/object/dstr-meth-obj-ptrn-rest-val-obj.js
index 79bddb9982..965f0ac1a1 100644
--- a/test/language/expressions/object/dstr-meth-obj-ptrn-rest-val-obj.js
+++ b/test/language/expressions/object/dstr-meth-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (method)
 esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/super/call-spread-err-mult-err-obj-getter-throws.js b/test/language/expressions/super/call-spread-err-mult-err-obj-getter-throws.js
index c3adf93df3..4939371f36 100644
--- a/test/language/expressions/super/call-spread-err-mult-err-obj-getter-throws.js
+++ b/test/language/expressions/super/call-spread-err-mult-err-obj-getter-throws.js
@@ -5,6 +5,7 @@
 description: Object Spread operator results in error when there is an getter that throws an exception (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-err-mult-err-obj-unresolvable.js b/test/language/expressions/super/call-spread-err-mult-err-obj-unresolvable.js
index 5625eb86cf..2a5c43db6e 100644
--- a/test/language/expressions/super/call-spread-err-mult-err-obj-unresolvable.js
+++ b/test/language/expressions/super/call-spread-err-mult-err-obj-unresolvable.js
@@ -5,6 +5,7 @@
 description: Object Spread operator results in error when using an unresolvable reference (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-mult-obj-base.js b/test/language/expressions/super/call-spread-mult-obj-base.js
index 745e58c2fd..f55057eb0b 100644
--- a/test/language/expressions/super/call-spread-mult-obj-base.js
+++ b/test/language/expressions/super/call-spread-mult-obj-base.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/super/call-spread-mult-obj-empty.js b/test/language/expressions/super/call-spread-mult-obj-empty.js
index 65464644e7..43ccc678d1 100644
--- a/test/language/expressions/super/call-spread-mult-obj-empty.js
+++ b/test/language/expressions/super/call-spread-mult-obj-empty.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with empty object (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-mult-obj-ident.js b/test/language/expressions/super/call-spread-mult-obj-ident.js
index 97d96d73e6..28dd553495 100644
--- a/test/language/expressions/super/call-spread-mult-obj-ident.js
+++ b/test/language/expressions/super/call-spread-mult-obj-ident.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other properties (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/super/call-spread-mult-obj-null-empty-undefined.js b/test/language/expressions/super/call-spread-mult-obj-null-empty-undefined.js
index ce2fc69a5c..34e4866a36 100644
--- a/test/language/expressions/super/call-spread-mult-obj-null-empty-undefined.js
+++ b/test/language/expressions/super/call-spread-mult-obj-null-empty-undefined.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with null, undefined and empty object (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 includes: [compareArray.js]
 info: |
diff --git a/test/language/expressions/super/call-spread-mult-obj-null.js b/test/language/expressions/super/call-spread-mult-obj-null.js
index b0faabad26..b749b75a6b 100644
--- a/test/language/expressions/super/call-spread-mult-obj-null.js
+++ b/test/language/expressions/super/call-spread-mult-obj-null.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with null value (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-mult-obj-undefined.js b/test/language/expressions/super/call-spread-mult-obj-undefined.js
index 9c94343c8c..71ade662bd 100644
--- a/test/language/expressions/super/call-spread-mult-obj-undefined.js
+++ b/test/language/expressions/super/call-spread-mult-obj-undefined.js
@@ -5,6 +5,7 @@
 description: Object Spread operator following other arguments with undefined (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-obj-getter-descriptor.js b/test/language/expressions/super/call-spread-obj-getter-descriptor.js
index 75c356e7af..4653231053 100644
--- a/test/language/expressions/super/call-spread-obj-getter-descriptor.js
+++ b/test/language/expressions/super/call-spread-obj-getter-descriptor.js
@@ -5,6 +5,7 @@
 description: Spread operation with getter results in data property descriptor (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/super/call-spread-obj-getter-init.js b/test/language/expressions/super/call-spread-obj-getter-init.js
index a0caeec012..f49e8dddff 100644
--- a/test/language/expressions/super/call-spread-obj-getter-init.js
+++ b/test/language/expressions/super/call-spread-obj-getter-init.js
@@ -5,6 +5,7 @@
 description: Getter in object literal is not evaluated (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-obj-manipulate-outter-obj-in-getter.js b/test/language/expressions/super/call-spread-obj-manipulate-outter-obj-in-getter.js
index d67c268b1e..2fbc10f084 100644
--- a/test/language/expressions/super/call-spread-obj-manipulate-outter-obj-in-getter.js
+++ b/test/language/expressions/super/call-spread-obj-manipulate-outter-obj-in-getter.js
@@ -5,6 +5,7 @@
 description: Getter manipulates outter object before it's spread operation (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-obj-mult-spread-getter.js b/test/language/expressions/super/call-spread-obj-mult-spread-getter.js
index 9e8fbe5132..3df09f1d17 100644
--- a/test/language/expressions/super/call-spread-obj-mult-spread-getter.js
+++ b/test/language/expressions/super/call-spread-obj-mult-spread-getter.js
@@ -5,6 +5,7 @@
 description: Multiple Object Spread usage calls getter multiple times (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-obj-mult-spread.js b/test/language/expressions/super/call-spread-obj-mult-spread.js
index 2bac42d56b..f5340a645f 100644
--- a/test/language/expressions/super/call-spread-obj-mult-spread.js
+++ b/test/language/expressions/super/call-spread-obj-mult-spread.js
@@ -5,6 +5,7 @@
 description: Multiple Object Spread operation (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-obj-null.js b/test/language/expressions/super/call-spread-obj-null.js
index 69e79d4b50..2bb2158777 100644
--- a/test/language/expressions/super/call-spread-obj-null.js
+++ b/test/language/expressions/super/call-spread-obj-null.js
@@ -5,6 +5,7 @@
 description: Null Object Spread is ignored (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-obj-override-immutable.js b/test/language/expressions/super/call-spread-obj-override-immutable.js
index da4ec6dcd7..18df6b85da 100644
--- a/test/language/expressions/super/call-spread-obj-override-immutable.js
+++ b/test/language/expressions/super/call-spread-obj-override-immutable.js
@@ -5,6 +5,7 @@
 description: Object Spread overriding immutable properties (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/super/call-spread-obj-overrides-prev-properties.js b/test/language/expressions/super/call-spread-obj-overrides-prev-properties.js
index 66383f82be..ecd656a741 100644
--- a/test/language/expressions/super/call-spread-obj-overrides-prev-properties.js
+++ b/test/language/expressions/super/call-spread-obj-overrides-prev-properties.js
@@ -5,6 +5,7 @@
 description: Object Spread properties overrides previous definitions (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-obj-setter-redef.js b/test/language/expressions/super/call-spread-obj-setter-redef.js
index a5299f3e8a..69f340129f 100644
--- a/test/language/expressions/super/call-spread-obj-setter-redef.js
+++ b/test/language/expressions/super/call-spread-obj-setter-redef.js
@@ -5,6 +5,7 @@
 description: Setter are not executed when redefined in Object Spread (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-obj-skip-non-enumerable.js b/test/language/expressions/super/call-spread-obj-skip-non-enumerable.js
index fdc4e4ba4e..d3847afaef 100644
--- a/test/language/expressions/super/call-spread-obj-skip-non-enumerable.js
+++ b/test/language/expressions/super/call-spread-obj-skip-non-enumerable.js
@@ -5,6 +5,7 @@
 description: Object Spread doesn't copy non-enumerable properties (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-obj-spread-order.js b/test/language/expressions/super/call-spread-obj-spread-order.js
index 311d3f9af3..6dcb189308 100644
--- a/test/language/expressions/super/call-spread-obj-spread-order.js
+++ b/test/language/expressions/super/call-spread-obj-spread-order.js
@@ -5,6 +5,7 @@
 description: Spread operation follows [[OwnPropertyKeys]] order (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 includes: [compareArray.js]
 info: |
diff --git a/test/language/expressions/super/call-spread-obj-symbol-property.js b/test/language/expressions/super/call-spread-obj-symbol-property.js
index 94ba4324f0..bfbb4842d2 100644
--- a/test/language/expressions/super/call-spread-obj-symbol-property.js
+++ b/test/language/expressions/super/call-spread-obj-symbol-property.js
@@ -5,6 +5,7 @@
 description: Spread operation where source object contains Symbol properties (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-obj-undefined.js b/test/language/expressions/super/call-spread-obj-undefined.js
index e36f01396c..b128e49e16 100644
--- a/test/language/expressions/super/call-spread-obj-undefined.js
+++ b/test/language/expressions/super/call-spread-obj-undefined.js
@@ -5,6 +5,7 @@
 description: Undefined Object Spread is ignored (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-obj-with-overrides.js b/test/language/expressions/super/call-spread-obj-with-overrides.js
index 81bb19f74c..30f290d487 100644
--- a/test/language/expressions/super/call-spread-obj-with-overrides.js
+++ b/test/language/expressions/super/call-spread-obj-with-overrides.js
@@ -5,6 +5,7 @@
 description: Object Spread properties being overriden (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-sngl-obj-base.js b/test/language/expressions/super/call-spread-sngl-obj-base.js
index d83cf3594d..f389215420 100644
--- a/test/language/expressions/super/call-spread-sngl-obj-base.js
+++ b/test/language/expressions/super/call-spread-sngl-obj-base.js
@@ -5,6 +5,7 @@
 description: Object Spread operator without other arguments (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/expressions/super/call-spread-sngl-obj-empty.js b/test/language/expressions/super/call-spread-sngl-obj-empty.js
index 6fd1a5237e..ab8162c92e 100644
--- a/test/language/expressions/super/call-spread-sngl-obj-empty.js
+++ b/test/language/expressions/super/call-spread-sngl-obj-empty.js
@@ -5,6 +5,7 @@
 description: Object Spread operator on a single empty object (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 info: |
     SuperCall : super Arguments
diff --git a/test/language/expressions/super/call-spread-sngl-obj-ident.js b/test/language/expressions/super/call-spread-sngl-obj-ident.js
index 4271aa395b..c680387dab 100644
--- a/test/language/expressions/super/call-spread-sngl-obj-ident.js
+++ b/test/language/expressions/super/call-spread-sngl-obj-ident.js
@@ -5,6 +5,7 @@
 description: Object Spread operator without other arguments (SuperCall)
 esid: sec-super-keyword-runtime-semantics-evaluation
 es6id: 12.3.5.1
+features: [object-spread]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-getter.js b/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-getter.js
index fd2674f6cb..b4019f0a2c 100644
--- a/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-getter.js
+++ b/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (class expression method (default parameters))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js b/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js
index ce6aa32ee4..1831722fbe 100644
--- a/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (class expression method (default parameters))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
diff --git a/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
index fe49e5e307..a851729828 100644
--- a/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (class expression method (default parameters))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js b/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js
index 1eebc51701..e54ee8a0a1 100644
--- a/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (class expression method (default parameters))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
index 6bcd358133..527b34281d 100644
--- a/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (class expression method (default parameters))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-val-obj.js b/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-val-obj.js
index 1c82a76cd3..1eff40a88c 100644
--- a/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (class expression method (default parameters))
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-getter.js b/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-getter.js
index 8c68a132da..26f7651d0f 100644
--- a/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-getter.js
+++ b/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-nested-obj.js b/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-nested-obj.js
index 8b3ff26221..a68a95be01 100644
--- a/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
diff --git a/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js
index 805f3a87ec..150a082c7e 100644
--- a/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js b/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js
index da44dcfd70..5907387347 100644
--- a/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-skip-non-enumerable.js
index b2577e29f9..fb5637901f 100644
--- a/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-val-obj.js b/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-val-obj.js
index 5bcdb10623..dd7ef5ad5b 100644
--- a/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (class expression method)
 esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-getter.js b/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-getter.js
index b8bc9470b7..bfa3b86ccc 100644
--- a/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-getter.js
+++ b/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (static class expression generator method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-nested-obj.js b/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-nested-obj.js
index 368c3be447..7a0d3358ce 100644
--- a/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (static class expression generator method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
diff --git a/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
index 8ad9c4af15..fbf6726f5a 100644
--- a/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (static class expression generator method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-own-property.js b/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
index 1e08d9557b..b13529fb2f 100644
--- a/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (static class expression generator method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js
index eb78bf371b..86df8646a1 100644
--- a/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (static class expression generator method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-val-obj.js b/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-val-obj.js
index 60310abf05..b4aa6e53c3 100644
--- a/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (static class expression generator method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-getter.js b/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-getter.js
index 259bc65045..0a824a510c 100644
--- a/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-getter.js
+++ b/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (static class expression generator method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-nested-obj.js b/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-nested-obj.js
index 34fe198d2d..24658ee660 100644
--- a/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (static class expression generator method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
diff --git a/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-obj-nested-rest.js
index 36f9452037..c07515a7e9 100644
--- a/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (static class expression generator method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-obj-own-property.js b/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-obj-own-property.js
index c1a7cfde09..014f9c12d6 100644
--- a/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (static class expression generator method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js
index e00e39fc6e..35a5263ede 100644
--- a/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (static class expression generator method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-val-obj.js b/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-val-obj.js
index abfc9b0cc4..d7291a0ccd 100644
--- a/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (static class expression generator method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-getter.js b/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-getter.js
index 7eb836e4da..b4ea9760d1 100644
--- a/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-getter.js
+++ b/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (class expression method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js b/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js
index 373cc926a0..343eb175b6 100644
--- a/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (class expression method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
diff --git a/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
index 9870591a2a..925c6828c5 100644
--- a/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (class expression method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js b/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js
index 678892e1e1..c97657d407 100644
--- a/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (class expression method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
index 5346fae5d9..fb1e288b5d 100644
--- a/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (class expression method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-val-obj.js b/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-val-obj.js
index fb17c4c057..3ea3797feb 100644
--- a/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (class expression method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-obj-ptrn-rest-getter.js b/test/language/statements/class/dstr-meth-obj-ptrn-rest-getter.js
index c48666e231..57392a6708 100644
--- a/test/language/statements/class/dstr-meth-obj-ptrn-rest-getter.js
+++ b/test/language/statements/class/dstr-meth-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (class expression method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-obj-ptrn-rest-nested-obj.js b/test/language/statements/class/dstr-meth-obj-ptrn-rest-nested-obj.js
index 6df72e67c9..1828a98eda 100644
--- a/test/language/statements/class/dstr-meth-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/class/dstr-meth-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (class expression method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
diff --git a/test/language/statements/class/dstr-meth-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/class/dstr-meth-obj-ptrn-rest-obj-nested-rest.js
index d4df883036..3226bed18e 100644
--- a/test/language/statements/class/dstr-meth-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/class/dstr-meth-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (class expression method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-obj-ptrn-rest-obj-own-property.js b/test/language/statements/class/dstr-meth-obj-ptrn-rest-obj-own-property.js
index 789e2b3e9c..1e6927b0e0 100644
--- a/test/language/statements/class/dstr-meth-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/class/dstr-meth-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (class expression method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/class/dstr-meth-obj-ptrn-rest-skip-non-enumerable.js
index 7ae8e75d29..3a54e20a5b 100644
--- a/test/language/statements/class/dstr-meth-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/class/dstr-meth-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (class expression method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-obj-ptrn-rest-val-obj.js b/test/language/statements/class/dstr-meth-obj-ptrn-rest-val-obj.js
index 1e99b44b13..996409e385 100644
--- a/test/language/statements/class/dstr-meth-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/class/dstr-meth-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (class expression method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-getter.js b/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-getter.js
index 758c1bb34a..60e3ad5a66 100644
--- a/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-getter.js
+++ b/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (static class expression method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-nested-obj.js b/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-nested-obj.js
index 2fe4e482be..6ef602932a 100644
--- a/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (static class expression method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
diff --git a/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
index 01f87367f5..22aafbfed3 100644
--- a/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (static class expression method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-own-property.js b/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
index 6a543ba403..6bde3ee862 100644
--- a/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (static class expression method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js
index ec4849fd7a..402e4c1462 100644
--- a/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (static class expression method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-val-obj.js b/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-val-obj.js
index 22dd70fd37..787934bfc1 100644
--- a/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (static class expression method (default parameter))
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-getter.js b/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-getter.js
index 42386408d8..b8b09f789c 100644
--- a/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-getter.js
+++ b/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (static class expression method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-nested-obj.js b/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-nested-obj.js
index dc7cc2852c..f76ee9e499 100644
--- a/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (static class expression method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
diff --git a/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-obj-nested-rest.js
index 46c38effc8..c1b27b9b59 100644
--- a/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (static class expression method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-obj-own-property.js b/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-obj-own-property.js
index 6ec8d40a0d..6027e9741b 100644
--- a/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (static class expression method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-skip-non-enumerable.js
index f69c7c43c6..80926ce49a 100644
--- a/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (static class expression method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-val-obj.js b/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-val-obj.js
index 00dd2bcbc1..4bc850d83b 100644
--- a/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/class/dstr-meth-static-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (static class expression method)
 esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/const/dstr-obj-ptrn-rest-getter.js b/test/language/statements/const/dstr-obj-ptrn-rest-getter.js
index e53000e345..49f2c783e0 100644
--- a/test/language/statements/const/dstr-obj-ptrn-rest-getter.js
+++ b/test/language/statements/const/dstr-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (`const` statement)
 esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/const/dstr-obj-ptrn-rest-nested-obj.js b/test/language/statements/const/dstr-obj-ptrn-rest-nested-obj.js
index d407984af2..2df1947662 100644
--- a/test/language/statements/const/dstr-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/const/dstr-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (`const` statement)
 esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     LexicalBinding : BindingPattern Initializer
diff --git a/test/language/statements/const/dstr-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/const/dstr-obj-ptrn-rest-obj-nested-rest.js
index 561f7caf3c..51c96a7436 100644
--- a/test/language/statements/const/dstr-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/const/dstr-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (`const` statement)
 esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/const/dstr-obj-ptrn-rest-obj-own-property.js b/test/language/statements/const/dstr-obj-ptrn-rest-obj-own-property.js
index e6716fff69..3ee01ddf6c 100644
--- a/test/language/statements/const/dstr-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/const/dstr-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (`const` statement)
 esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/const/dstr-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/const/dstr-obj-ptrn-rest-skip-non-enumerable.js
index e89a2c00e1..00728d2727 100644
--- a/test/language/statements/const/dstr-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/const/dstr-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (`const` statement)
 esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/const/dstr-obj-ptrn-rest-val-obj.js b/test/language/statements/const/dstr-obj-ptrn-rest-val-obj.js
index e6ee096aa9..dd6ebdf75f 100644
--- a/test/language/statements/const/dstr-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/const/dstr-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (`const` statement)
 esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-in/dstr-obj-rest-not-last-element-invalid.js b/test/language/statements/for-in/dstr-obj-rest-not-last-element-invalid.js
index bb25066136..7d102105e0 100644
--- a/test/language/statements/for-in/dstr-obj-rest-not-last-element-invalid.js
+++ b/test/language/statements/for-in/dstr-obj-rest-not-last-element-invalid.js
@@ -5,7 +5,7 @@
 description: Object rest element needs to be the last AssignmenProperty in ObjectAssignmentPattern. (For..in statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 negative:
   phase: early
diff --git a/test/language/statements/for-of/dstr-const-obj-ptrn-rest-getter.js b/test/language/statements/for-of/dstr-const-obj-ptrn-rest-getter.js
index 04545462a6..40fcdd00e3 100644
--- a/test/language/statements/for-of/dstr-const-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for-of/dstr-const-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (for-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-const-obj-ptrn-rest-nested-obj.js b/test/language/statements/for-of/dstr-const-obj-ptrn-rest-nested-obj.js
index d49377932a..4f92797bf6 100644
--- a/test/language/statements/for-of/dstr-const-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for-of/dstr-const-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for-of/dstr-const-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for-of/dstr-const-obj-ptrn-rest-obj-nested-rest.js
index fd2bdf4f57..61b50a6bad 100644
--- a/test/language/statements/for-of/dstr-const-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for-of/dstr-const-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-const-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for-of/dstr-const-obj-ptrn-rest-obj-own-property.js
index 2f99501a2f..7c950ba328 100644
--- a/test/language/statements/for-of/dstr-const-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for-of/dstr-const-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (for-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-const-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for-of/dstr-const-obj-ptrn-rest-skip-non-enumerable.js
index f7800bd3e3..b20191bda2 100644
--- a/test/language/statements/for-of/dstr-const-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-of/dstr-const-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (for-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-const-obj-ptrn-rest-val-obj.js b/test/language/statements/for-of/dstr-const-obj-ptrn-rest-val-obj.js
index 1d78fc2136..6981d0c35f 100644
--- a/test/language/statements/for-of/dstr-const-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for-of/dstr-const-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (for-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-let-obj-ptrn-rest-getter.js b/test/language/statements/for-of/dstr-let-obj-ptrn-rest-getter.js
index 981239c7e9..1eab31fc96 100644
--- a/test/language/statements/for-of/dstr-let-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for-of/dstr-let-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (for-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-let-obj-ptrn-rest-nested-obj.js b/test/language/statements/for-of/dstr-let-obj-ptrn-rest-nested-obj.js
index cea3bb198b..2de089a289 100644
--- a/test/language/statements/for-of/dstr-let-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for-of/dstr-let-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for-of/dstr-let-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for-of/dstr-let-obj-ptrn-rest-obj-nested-rest.js
index fea88c0aca..de64a87ba2 100644
--- a/test/language/statements/for-of/dstr-let-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for-of/dstr-let-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-let-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for-of/dstr-let-obj-ptrn-rest-obj-own-property.js
index da1c9dcfe0..25eb38e713 100644
--- a/test/language/statements/for-of/dstr-let-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for-of/dstr-let-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (for-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-let-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for-of/dstr-let-obj-ptrn-rest-skip-non-enumerable.js
index 41ade66ae5..e40ba926c7 100644
--- a/test/language/statements/for-of/dstr-let-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-of/dstr-let-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (for-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-let-obj-ptrn-rest-val-obj.js b/test/language/statements/for-of/dstr-let-obj-ptrn-rest-val-obj.js
index e4e8393886..8ccf6302ec 100644
--- a/test/language/statements/for-of/dstr-let-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for-of/dstr-let-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (for-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-obj-rest-descriptors.js b/test/language/statements/for-of/dstr-obj-rest-descriptors.js
index 9277ceb6e5..828fc97e60 100644
--- a/test/language/statements/for-of/dstr-obj-rest-descriptors.js
+++ b/test/language/statements/for-of/dstr-obj-rest-descriptors.js
@@ -5,7 +5,7 @@
 description: Object created from rest deconstruction doesn't copy source object property descriptors. (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-obj-rest-empty-obj.js b/test/language/statements/for-of/dstr-obj-rest-empty-obj.js
index 82d68a66e8..fe40bb874f 100644
--- a/test/language/statements/for-of/dstr-obj-rest-empty-obj.js
+++ b/test/language/statements/for-of/dstr-obj-rest-empty-obj.js
@@ -5,7 +5,7 @@
 description: RestBindingInitialization creates a new object even if lhs is an empty object (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for-of/dstr-obj-rest-getter-abrupt-get-error.js b/test/language/statements/for-of/dstr-obj-rest-getter-abrupt-get-error.js
index 1490cc2187..81d883baad 100644
--- a/test/language/statements/for-of/dstr-obj-rest-getter-abrupt-get-error.js
+++ b/test/language/statements/for-of/dstr-obj-rest-getter-abrupt-get-error.js
@@ -5,7 +5,7 @@
 description: Rest deconstruction doesn't happen if getter return is abrupt (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for-of/dstr-obj-rest-getter.js b/test/language/statements/for-of/dstr-obj-rest-getter.js
index 82d3bcd1f3..d5f8d466bd 100644
--- a/test/language/statements/for-of/dstr-obj-rest-getter.js
+++ b/test/language/statements/for-of/dstr-obj-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-obj-rest-nested-obj-nested-rest.js b/test/language/statements/for-of/dstr-obj-rest-nested-obj-nested-rest.js
index 32be98f68f..5870af017f 100644
--- a/test/language/statements/for-of/dstr-obj-rest-nested-obj-nested-rest.js
+++ b/test/language/statements/for-of/dstr-obj-rest-nested-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-obj-rest-nested-obj.js b/test/language/statements/for-of/dstr-obj-rest-nested-obj.js
index 6b81ad479b..0eba170b8b 100644
--- a/test/language/statements/for-of/dstr-obj-rest-nested-obj.js
+++ b/test/language/statements/for-of/dstr-obj-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for-of/dstr-obj-rest-not-last-element-invalid.js b/test/language/statements/for-of/dstr-obj-rest-not-last-element-invalid.js
index bd9a2b9326..6adb0dae2b 100644
--- a/test/language/statements/for-of/dstr-obj-rest-not-last-element-invalid.js
+++ b/test/language/statements/for-of/dstr-obj-rest-not-last-element-invalid.js
@@ -5,7 +5,7 @@
 description: Object rest element needs to be the last AssignmenProperty in ObjectAssignmentPattern. (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 negative:
   phase: early
diff --git a/test/language/statements/for-of/dstr-obj-rest-number.js b/test/language/statements/for-of/dstr-obj-rest-number.js
index 2737e1a4be..373b520842 100644
--- a/test/language/statements/for-of/dstr-obj-rest-number.js
+++ b/test/language/statements/for-of/dstr-obj-rest-number.js
@@ -5,7 +5,7 @@
 description: RestBindingInitialization creates a new object even if lhs is a Number (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for-of/dstr-obj-rest-obj-own-property.js b/test/language/statements/for-of/dstr-obj-rest-obj-own-property.js
index 561dfe916d..4c8c76257a 100644
--- a/test/language/statements/for-of/dstr-obj-rest-obj-own-property.js
+++ b/test/language/statements/for-of/dstr-obj-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just source object's own properties (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for-of/dstr-obj-rest-put-const.js b/test/language/statements/for-of/dstr-obj-rest-put-const.js
index 77ff18c7b5..843196e5e5 100644
--- a/test/language/statements/for-of/dstr-obj-rest-put-const.js
+++ b/test/language/statements/for-of/dstr-obj-rest-put-const.js
@@ -5,7 +5,7 @@
 description: The object rest deconstruction assignment target should obey `const` semantics. (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [const, destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for-of/dstr-obj-rest-same-name.js b/test/language/statements/for-of/dstr-obj-rest-same-name.js
index 4432a6fed0..68502eccd2 100644
--- a/test/language/statements/for-of/dstr-obj-rest-same-name.js
+++ b/test/language/statements/for-of/dstr-obj-rest-same-name.js
@@ -5,7 +5,7 @@
 description: Proper setting in the values for rest name equal to a property name. (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for-of/dstr-obj-rest-skip-non-enumerable.js b/test/language/statements/for-of/dstr-obj-rest-skip-non-enumerable.js
index 5d3b3e3347..f60e24ad3f 100644
--- a/test/language/statements/for-of/dstr-obj-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-of/dstr-obj-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-obj-rest-str-val.js b/test/language/statements/for-of/dstr-obj-rest-str-val.js
index 55f0b4c9c6..c3e26d9ac9 100644
--- a/test/language/statements/for-of/dstr-obj-rest-str-val.js
+++ b/test/language/statements/for-of/dstr-obj-rest-str-val.js
@@ -5,7 +5,7 @@
 description: RestBindingInitialization creats an object with indexes as property name (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for-of/dstr-obj-rest-symbol-val.js b/test/language/statements/for-of/dstr-obj-rest-symbol-val.js
index 51a994b998..e624d0de87 100644
--- a/test/language/statements/for-of/dstr-obj-rest-symbol-val.js
+++ b/test/language/statements/for-of/dstr-obj-rest-symbol-val.js
@@ -5,7 +5,7 @@
 description: RestBindingInitialization creates a new object if lhs is a Symbol (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for-of/dstr-obj-rest-to-property-with-setter.js b/test/language/statements/for-of/dstr-obj-rest-to-property-with-setter.js
index ea50631436..4c315aed6e 100644
--- a/test/language/statements/for-of/dstr-obj-rest-to-property-with-setter.js
+++ b/test/language/statements/for-of/dstr-obj-rest-to-property-with-setter.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object property setter, its value should be binded as rest object. (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for-of/dstr-obj-rest-to-property.js b/test/language/statements/for-of/dstr-obj-rest-to-property.js
index 85fe869e89..1822f656ee 100644
--- a/test/language/statements/for-of/dstr-obj-rest-to-property.js
+++ b/test/language/statements/for-of/dstr-obj-rest-to-property.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object property, its value should be binded as rest object. (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-obj-rest-val-null.js b/test/language/statements/for-of/dstr-obj-rest-val-null.js
index 21ec1d7b4c..c366ab6efc 100644
--- a/test/language/statements/for-of/dstr-obj-rest-val-null.js
+++ b/test/language/statements/for-of/dstr-obj-rest-val-null.js
@@ -5,7 +5,7 @@
 description: TypeError is thrown when rhs is null because of 7.1.13 ToObject ( argument ) used by CopyDataProperties (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for-of/dstr-obj-rest-val-undefined.js b/test/language/statements/for-of/dstr-obj-rest-val-undefined.js
index 1e518f34fd..6e24479f00 100644
--- a/test/language/statements/for-of/dstr-obj-rest-val-undefined.js
+++ b/test/language/statements/for-of/dstr-obj-rest-val-undefined.js
@@ -5,7 +5,7 @@
 description: TypeError is thrown when rhs is ```undefined``` because of 7.1.13 ToObject ( argument ) used by CopyDataProperties (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for-of/dstr-obj-rest-valid-object.js b/test/language/statements/for-of/dstr-obj-rest-valid-object.js
index b0631cfd50..3a514ed891 100644
--- a/test/language/statements/for-of/dstr-obj-rest-valid-object.js
+++ b/test/language/statements/for-of/dstr-obj-rest-valid-object.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (For..of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-var-obj-ptrn-rest-getter.js b/test/language/statements/for-of/dstr-var-obj-ptrn-rest-getter.js
index caf9b4cd18..6f21879bcd 100644
--- a/test/language/statements/for-of/dstr-var-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for-of/dstr-var-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (for-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-var-obj-ptrn-rest-nested-obj.js b/test/language/statements/for-of/dstr-var-obj-ptrn-rest-nested-obj.js
index 64b3fcaceb..df23fb9b55 100644
--- a/test/language/statements/for-of/dstr-var-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for-of/dstr-var-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for-of/dstr-var-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for-of/dstr-var-obj-ptrn-rest-obj-nested-rest.js
index ab14b42f76..fe437ed4b5 100644
--- a/test/language/statements/for-of/dstr-var-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for-of/dstr-var-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-var-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for-of/dstr-var-obj-ptrn-rest-obj-own-property.js
index be11792933..6a0925d9da 100644
--- a/test/language/statements/for-of/dstr-var-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for-of/dstr-var-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (for-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-var-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for-of/dstr-var-obj-ptrn-rest-skip-non-enumerable.js
index 646372547b..fa061c8b12 100644
--- a/test/language/statements/for-of/dstr-var-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for-of/dstr-var-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (for-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for-of/dstr-var-obj-ptrn-rest-val-obj.js b/test/language/statements/for-of/dstr-var-obj-ptrn-rest-val-obj.js
index decbfd2c14..13e28b10cc 100644
--- a/test/language/statements/for-of/dstr-var-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for-of/dstr-var-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (for-of statement)
 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for/dstr-const-obj-ptrn-rest-getter.js b/test/language/statements/for/dstr-const-obj-ptrn-rest-getter.js
index d9e53dfaf0..772adad6c8 100644
--- a/test/language/statements/for/dstr-const-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for/dstr-const-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (for statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for/dstr-const-obj-ptrn-rest-nested-obj.js b/test/language/statements/for/dstr-const-obj-ptrn-rest-nested-obj.js
index 4939b13f79..401f3ba31c 100644
--- a/test/language/statements/for/dstr-const-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for/dstr-const-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for/dstr-const-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for/dstr-const-obj-ptrn-rest-obj-nested-rest.js
index 010d482446..354f87415b 100644
--- a/test/language/statements/for/dstr-const-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for/dstr-const-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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 statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for/dstr-const-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for/dstr-const-obj-ptrn-rest-obj-own-property.js
index 90c4fae5a2..c706b63fa5 100644
--- a/test/language/statements/for/dstr-const-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for/dstr-const-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (for statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for/dstr-const-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for/dstr-const-obj-ptrn-rest-skip-non-enumerable.js
index c0dbe7705e..1b92c8d955 100644
--- a/test/language/statements/for/dstr-const-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for/dstr-const-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (for statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for/dstr-const-obj-ptrn-rest-val-obj.js b/test/language/statements/for/dstr-const-obj-ptrn-rest-val-obj.js
index 53f8c1d645..cf5bef0767 100644
--- a/test/language/statements/for/dstr-const-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for/dstr-const-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (for statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for/dstr-let-obj-ptrn-rest-getter.js b/test/language/statements/for/dstr-let-obj-ptrn-rest-getter.js
index 9abc9af7d6..cc8b692f03 100644
--- a/test/language/statements/for/dstr-let-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for/dstr-let-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (for statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for/dstr-let-obj-ptrn-rest-nested-obj.js b/test/language/statements/for/dstr-let-obj-ptrn-rest-nested-obj.js
index d4cf047575..9b890eb08a 100644
--- a/test/language/statements/for/dstr-let-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for/dstr-let-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for/dstr-let-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for/dstr-let-obj-ptrn-rest-obj-nested-rest.js
index 67a645421f..3ad2dadaea 100644
--- a/test/language/statements/for/dstr-let-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for/dstr-let-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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 statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for/dstr-let-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for/dstr-let-obj-ptrn-rest-obj-own-property.js
index ca1ccba4df..dd2ea4ac4c 100644
--- a/test/language/statements/for/dstr-let-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for/dstr-let-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (for statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for/dstr-let-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for/dstr-let-obj-ptrn-rest-skip-non-enumerable.js
index b1f13f4af8..cc18a05a1b 100644
--- a/test/language/statements/for/dstr-let-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for/dstr-let-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (for statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for/dstr-let-obj-ptrn-rest-val-obj.js b/test/language/statements/for/dstr-let-obj-ptrn-rest-val-obj.js
index 26a6d34987..a28a1a3483 100644
--- a/test/language/statements/for/dstr-let-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for/dstr-let-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (for statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for/dstr-var-obj-ptrn-rest-getter.js b/test/language/statements/for/dstr-var-obj-ptrn-rest-getter.js
index a116708584..74cf8d83b8 100644
--- a/test/language/statements/for/dstr-var-obj-ptrn-rest-getter.js
+++ b/test/language/statements/for/dstr-var-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (for statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for/dstr-var-obj-ptrn-rest-nested-obj.js b/test/language/statements/for/dstr-var-obj-ptrn-rest-nested-obj.js
index 4aa17de51c..5f54bce9f6 100644
--- a/test/language/statements/for/dstr-var-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/for/dstr-var-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (for statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     IterationStatement :
diff --git a/test/language/statements/for/dstr-var-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/for/dstr-var-obj-ptrn-rest-obj-nested-rest.js
index 7a6e442492..3d2cccc5bc 100644
--- a/test/language/statements/for/dstr-var-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/for/dstr-var-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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 statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for/dstr-var-obj-ptrn-rest-obj-own-property.js b/test/language/statements/for/dstr-var-obj-ptrn-rest-obj-own-property.js
index e34b8437eb..f7fcdcd6b9 100644
--- a/test/language/statements/for/dstr-var-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/for/dstr-var-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (for statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for/dstr-var-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/for/dstr-var-obj-ptrn-rest-skip-non-enumerable.js
index f187ba4158..c687bd9b6c 100644
--- a/test/language/statements/for/dstr-var-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/for/dstr-var-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (for statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/for/dstr-var-obj-ptrn-rest-val-obj.js b/test/language/statements/for/dstr-var-obj-ptrn-rest-val-obj.js
index 65b74f2d2e..d66e8665e1 100644
--- a/test/language/statements/for/dstr-var-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/for/dstr-var-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (for statement)
 esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/function/dstr-dflt-obj-ptrn-rest-getter.js b/test/language/statements/function/dstr-dflt-obj-ptrn-rest-getter.js
index 64ef539825..8d6c96e553 100644
--- a/test/language/statements/function/dstr-dflt-obj-ptrn-rest-getter.js
+++ b/test/language/statements/function/dstr-dflt-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (function declaration (default parameter))
 esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/function/dstr-dflt-obj-ptrn-rest-nested-obj.js b/test/language/statements/function/dstr-dflt-obj-ptrn-rest-nested-obj.js
index 4fef8c9796..8994226557 100644
--- a/test/language/statements/function/dstr-dflt-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/function/dstr-dflt-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (function declaration (default parameter))
 esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 info: |
     FunctionDeclaration :
diff --git a/test/language/statements/function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
index 5e608fb046..414d9284da 100644
--- a/test/language/statements/function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (function declaration (default parameter))
 esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/function/dstr-dflt-obj-ptrn-rest-obj-own-property.js b/test/language/statements/function/dstr-dflt-obj-ptrn-rest-obj-own-property.js
index ee8d0e316e..ecac13db1a 100644
--- a/test/language/statements/function/dstr-dflt-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/function/dstr-dflt-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (function declaration (default parameter))
 esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/function/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/function/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js
index 0f203e5bdd..491f010d2c 100644
--- a/test/language/statements/function/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/function/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (function declaration (default parameter))
 esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/function/dstr-dflt-obj-ptrn-rest-val-obj.js b/test/language/statements/function/dstr-dflt-obj-ptrn-rest-val-obj.js
index 30d635ca08..6f86889196 100644
--- a/test/language/statements/function/dstr-dflt-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/function/dstr-dflt-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (function declaration (default parameter))
 esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/function/dstr-obj-ptrn-rest-getter.js b/test/language/statements/function/dstr-obj-ptrn-rest-getter.js
index 75750caa5f..49c25f0b7b 100644
--- a/test/language/statements/function/dstr-obj-ptrn-rest-getter.js
+++ b/test/language/statements/function/dstr-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (function declaration)
 esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/function/dstr-obj-ptrn-rest-nested-obj.js b/test/language/statements/function/dstr-obj-ptrn-rest-nested-obj.js
index 5eb4a4c31a..ad76397039 100644
--- a/test/language/statements/function/dstr-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/function/dstr-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (function declaration)
 esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     FunctionDeclaration :
diff --git a/test/language/statements/function/dstr-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/function/dstr-obj-ptrn-rest-obj-nested-rest.js
index d3898c1e14..16c835fdb6 100644
--- a/test/language/statements/function/dstr-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/function/dstr-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (function declaration)
 esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/function/dstr-obj-ptrn-rest-obj-own-property.js b/test/language/statements/function/dstr-obj-ptrn-rest-obj-own-property.js
index eba7a0e171..97b7ab6620 100644
--- a/test/language/statements/function/dstr-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/function/dstr-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (function declaration)
 esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/function/dstr-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/function/dstr-obj-ptrn-rest-skip-non-enumerable.js
index edd7590a7c..8545878691 100644
--- a/test/language/statements/function/dstr-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/function/dstr-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (function declaration)
 esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/function/dstr-obj-ptrn-rest-val-obj.js b/test/language/statements/function/dstr-obj-ptrn-rest-val-obj.js
index 2606e2955a..d24af41d1f 100644
--- a/test/language/statements/function/dstr-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/function/dstr-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (function declaration)
 esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-getter.js b/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-getter.js
index a518c1ccba..e27753ad34 100644
--- a/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-getter.js
+++ b/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (generator function declaration (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.4.12
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-nested-obj.js b/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-nested-obj.js
index 74f9502d20..688994b764 100644
--- a/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (generator function declaration (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.4.12
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
diff --git a/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
index d236580171..4e2b543b43 100644
--- a/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (generator function declaration (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.4.12
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-obj-own-property.js b/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-obj-own-property.js
index 1d81fa0cf8..8edb8b1274 100644
--- a/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (generator function declaration (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.4.12
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js
index 8349e44b4d..1c82e246b8 100644
--- a/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (generator function declaration (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.4.12
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-val-obj.js b/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-val-obj.js
index 1ca04900fb..00f4167c22 100644
--- a/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/generators/dstr-dflt-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (generator function declaration (default parameter))
 esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.4.12
-features: [destructuring-binding, default-parameters]
+features: [object-rest, destructuring-binding, default-parameters]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/generators/dstr-obj-ptrn-rest-getter.js b/test/language/statements/generators/dstr-obj-ptrn-rest-getter.js
index 53c1a539ff..907b7a56a7 100644
--- a/test/language/statements/generators/dstr-obj-ptrn-rest-getter.js
+++ b/test/language/statements/generators/dstr-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (generator function declaration)
 esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.4.12
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/generators/dstr-obj-ptrn-rest-nested-obj.js b/test/language/statements/generators/dstr-obj-ptrn-rest-nested-obj.js
index 31305ce34c..06103c8a3f 100644
--- a/test/language/statements/generators/dstr-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/generators/dstr-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (generator function declaration)
 esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.4.12
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
diff --git a/test/language/statements/generators/dstr-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/generators/dstr-obj-ptrn-rest-obj-nested-rest.js
index ddc5e6d321..64e27e04c1 100644
--- a/test/language/statements/generators/dstr-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/generators/dstr-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (generator function declaration)
 esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.4.12
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/generators/dstr-obj-ptrn-rest-obj-own-property.js b/test/language/statements/generators/dstr-obj-ptrn-rest-obj-own-property.js
index b4099d7913..2e87e402df 100644
--- a/test/language/statements/generators/dstr-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/generators/dstr-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (generator function declaration)
 esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.4.12
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/generators/dstr-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/generators/dstr-obj-ptrn-rest-skip-non-enumerable.js
index 23edac9ce6..6ddc40bba4 100644
--- a/test/language/statements/generators/dstr-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/generators/dstr-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (generator function declaration)
 esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.4.12
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/generators/dstr-obj-ptrn-rest-val-obj.js b/test/language/statements/generators/dstr-obj-ptrn-rest-val-obj.js
index 289d9e2178..45772b1ca8 100644
--- a/test/language/statements/generators/dstr-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/generators/dstr-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (generator function declaration)
 esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.4.12
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/let/dstr-obj-ptrn-rest-getter.js b/test/language/statements/let/dstr-obj-ptrn-rest-getter.js
index f47cc4b8a2..7938a06346 100644
--- a/test/language/statements/let/dstr-obj-ptrn-rest-getter.js
+++ b/test/language/statements/let/dstr-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (`let` statement)
 esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/let/dstr-obj-ptrn-rest-nested-obj.js b/test/language/statements/let/dstr-obj-ptrn-rest-nested-obj.js
index cdaa97c641..fdd95a7b8a 100644
--- a/test/language/statements/let/dstr-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/let/dstr-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (`let` statement)
 esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     LexicalBinding : BindingPattern Initializer
diff --git a/test/language/statements/let/dstr-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/let/dstr-obj-ptrn-rest-obj-nested-rest.js
index f3f5993028..699a53a0a7 100644
--- a/test/language/statements/let/dstr-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/let/dstr-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (`let` statement)
 esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/let/dstr-obj-ptrn-rest-obj-own-property.js b/test/language/statements/let/dstr-obj-ptrn-rest-obj-own-property.js
index 935ba10870..da2ffb9d72 100644
--- a/test/language/statements/let/dstr-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/let/dstr-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (`let` statement)
 esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/let/dstr-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/let/dstr-obj-ptrn-rest-skip-non-enumerable.js
index 2e40529977..19b2ef998d 100644
--- a/test/language/statements/let/dstr-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/let/dstr-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (`let` statement)
 esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/let/dstr-obj-ptrn-rest-val-obj.js b/test/language/statements/let/dstr-obj-ptrn-rest-val-obj.js
index 1e83d04e43..d9c8bddba1 100644
--- a/test/language/statements/let/dstr-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/let/dstr-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (`let` statement)
 esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/try/dstr-obj-ptrn-rest-getter.js b/test/language/statements/try/dstr-obj-ptrn-rest-getter.js
index 389128907c..2afa0311c0 100644
--- a/test/language/statements/try/dstr-obj-ptrn-rest-getter.js
+++ b/test/language/statements/try/dstr-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (try statement)
 esid: sec-runtime-semantics-catchclauseevaluation
 es6id: 13.15.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/try/dstr-obj-ptrn-rest-nested-obj.js b/test/language/statements/try/dstr-obj-ptrn-rest-nested-obj.js
index 7bb80e185c..d4842f310f 100644
--- a/test/language/statements/try/dstr-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/try/dstr-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (try statement)
 esid: sec-runtime-semantics-catchclauseevaluation
 es6id: 13.15.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     Catch : catch ( CatchParameter ) Block
diff --git a/test/language/statements/try/dstr-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/try/dstr-obj-ptrn-rest-obj-nested-rest.js
index cd77b7877c..ec7481ee49 100644
--- a/test/language/statements/try/dstr-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/try/dstr-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (try statement)
 esid: sec-runtime-semantics-catchclauseevaluation
 es6id: 13.15.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/try/dstr-obj-ptrn-rest-obj-own-property.js b/test/language/statements/try/dstr-obj-ptrn-rest-obj-own-property.js
index 92de9235ce..37d7731e14 100644
--- a/test/language/statements/try/dstr-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/try/dstr-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (try statement)
 esid: sec-runtime-semantics-catchclauseevaluation
 es6id: 13.15.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/try/dstr-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/try/dstr-obj-ptrn-rest-skip-non-enumerable.js
index 35658e2fdc..e264f0ef59 100644
--- a/test/language/statements/try/dstr-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/try/dstr-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (try statement)
 esid: sec-runtime-semantics-catchclauseevaluation
 es6id: 13.15.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/try/dstr-obj-ptrn-rest-val-obj.js b/test/language/statements/try/dstr-obj-ptrn-rest-val-obj.js
index 4fd16e02cf..ed34d844b2 100644
--- a/test/language/statements/try/dstr-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/try/dstr-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (try statement)
 esid: sec-runtime-semantics-catchclauseevaluation
 es6id: 13.15.7
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/variable/dstr-obj-ptrn-rest-getter.js b/test/language/statements/variable/dstr-obj-ptrn-rest-getter.js
index 3b655b41a5..7785ff8a1e 100644
--- a/test/language/statements/variable/dstr-obj-ptrn-rest-getter.js
+++ b/test/language/statements/variable/dstr-obj-ptrn-rest-getter.js
@@ -5,7 +5,7 @@
 description: Getter is called when obj is being deconstructed to a rest Object (`var` statement)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/variable/dstr-obj-ptrn-rest-nested-obj.js b/test/language/statements/variable/dstr-obj-ptrn-rest-nested-obj.js
index 2716949006..33c6b4293e 100644
--- a/test/language/statements/variable/dstr-obj-ptrn-rest-nested-obj.js
+++ b/test/language/statements/variable/dstr-obj-ptrn-rest-nested-obj.js
@@ -5,7 +5,7 @@
 description: When DestructuringAssignmentTarget is an object literal, it should be parsed parsed as a DestructuringAssignmentPattern and evaluated as a destructuring assignment. (`var` statement)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 info: |
     VariableDeclaration : BindingPattern Initializer
diff --git a/test/language/statements/variable/dstr-obj-ptrn-rest-obj-nested-rest.js b/test/language/statements/variable/dstr-obj-ptrn-rest-obj-nested-rest.js
index fe3654eb9c..988b1094c2 100644
--- a/test/language/statements/variable/dstr-obj-ptrn-rest-obj-nested-rest.js
+++ b/test/language/statements/variable/dstr-obj-ptrn-rest-obj-nested-rest.js
@@ -5,7 +5,7 @@
 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. (`var` statement)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/variable/dstr-obj-ptrn-rest-obj-own-property.js b/test/language/statements/variable/dstr-obj-ptrn-rest-obj-own-property.js
index b0e678cd94..53d6bb9d90 100644
--- a/test/language/statements/variable/dstr-obj-ptrn-rest-obj-own-property.js
+++ b/test/language/statements/variable/dstr-obj-ptrn-rest-obj-own-property.js
@@ -5,7 +5,7 @@
 description: Rest object contains just soruce object's own properties (`var` statement)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/variable/dstr-obj-ptrn-rest-skip-non-enumerable.js b/test/language/statements/variable/dstr-obj-ptrn-rest-skip-non-enumerable.js
index 0e75a3d229..50f7af0e15 100644
--- a/test/language/statements/variable/dstr-obj-ptrn-rest-skip-non-enumerable.js
+++ b/test/language/statements/variable/dstr-obj-ptrn-rest-skip-non-enumerable.js
@@ -5,7 +5,7 @@
 description: Rest object doesn't contain non-enumerable properties (`var` statement)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
diff --git a/test/language/statements/variable/dstr-obj-ptrn-rest-val-obj.js b/test/language/statements/variable/dstr-obj-ptrn-rest-val-obj.js
index 77f49b131e..8a52a9f2bb 100644
--- a/test/language/statements/variable/dstr-obj-ptrn-rest-val-obj.js
+++ b/test/language/statements/variable/dstr-obj-ptrn-rest-val-obj.js
@@ -5,7 +5,7 @@
 description: Rest object contains just unextracted data (`var` statement)
 esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
-features: [destructuring-binding]
+features: [object-rest, destructuring-binding]
 flags: [generated]
 includes: [propertyHelper.js]
 info: |
-- 
GitLab