Implement rest parameter support for destructuring object patterns. (#4318)

JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
Zoltan Herczeg
2020-10-29 10:49:08 +01:00
committed by GitHub
parent 484e999dec
commit c7986fd2c5
22 changed files with 632 additions and 528 deletions
+1 -1
View File
@@ -63,6 +63,6 @@ var sym = Symbol('Any')
s = [ { [sym]:5, a:6 } ]
o = { ...((s))[0] }
assert(o[sym] === undefined)
assert(o[sym] === 5)
assert(o.a === 6)
checkOwnProperties(o, ["a"])
-3
View File
@@ -32,9 +32,6 @@ function mustThrow (str) {
checkSyntax ("var {a}");
checkSyntax ("var {a, o.a}");
checkSyntax ("var {a, ...b}");
checkSyntax ("var {a, ...b} = 4");
checkSyntax ("var {a, ...[b] = 4}");
checkSyntax ("var {a,,} = 4");
checkSyntax ("var {a :} = 4");
checkSyntax ("var {a : ,} = 4");
+137
View File
@@ -0,0 +1,137 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
function checkSyntax (str) {
try {
eval (str);
assert (false);
} catch (e) {
assert (e instanceof SyntaxError);
}
}
checkSyntax ("var {a, ...b, a} = {}")
checkSyntax ("var {a, ...b = 6} = {}")
checkSyntax ("var {a, ...[b]} = {}")
checkSyntax ("function f({a, ...a}) {}")
checkSyntax ("let {a, ...a} = {}")
checkSyntax ("let {a, ...(b)} = {}")
checkSyntax ("({a, ...{b}} = {})")
checkSyntax ("({a, ...([b])} = {})")
checkSyntax ("({a, ...b().a = 6} = {})")
checkSyntax ("try {} catch ({ ...a } = {}) {}")
checkSyntax ("for ({ ...a } = {} of []) {}")
var sym1 = Symbol("sym1")
var sym2 = Symbol("sym2")
function rest_compare(rest, values)
{
var keys = Reflect.ownKeys(rest);
assert(keys.length * 2 === values.length)
for (var i = 0; i < keys.length; i++) {
key = keys[i]
assert(key === values[i * 2])
assert(rest[key] === values[i * 2 + 1])
}
}
function f1() {
var { bb, ...rest } = { a:true, bb:6.25, [sym1]:"X" }
assert(bb === 6.25)
rest_compare(rest, ["a", true, sym1, "X"])
}
f1()
function f2() {
var a, b, rest = {};
({ a, "+": b, ...rest.c } = { "+": -3.75, [sym1]:6.25, [sym2]: sym2 })
assert(a === undefined)
assert(b === -3.75)
rest_compare(rest.c, [sym1, 6.25, sym2, sym2])
}
f2()
function f3() {
var a, rest1, rest2;
({ A:{ [sym2]: a, ...rest1 }, B:{ ...rest2 } = { X:null, 7:"A" } } = { A:{ [sym1]: 7.5, [sym2]: 3.5, S:-5.5 } })
assert(a === 3.5)
rest_compare(rest1, ["S", -5.5, sym1, 7.5])
rest_compare(rest2, ["7", "A", "X", null])
}
f3()
function f4() {
try {
throw { A:5, [sym1]:6, [sym2]:7, b:8 }
assert(false)
} catch({ b, c, ...rest }) {
assert(b === 8)
assert(c === undefined)
rest_compare(rest, ["A", 5, sym1, 6, sym2, 7])
}
}
f4()
function f5() {
var a = {}, b = {}, c = {}, d = () => c
for ({ A:a.x, B:b.y, ...d().z } of [ { B:"AA", C:6.25, [sym1]:-4.5 } ]) {
assert(a.x === undefined)
assert(typeof Object.getOwnPropertyDescriptor(a, "x") === "object")
assert(b.y === "AA")
rest_compare(c.z, ["C", 6.25, sym1, -4.5])
}
}
f5()
function f6({ [(() => "A")() + "A"]:a, ...b },
{ A:c, [sym1]:d, [sym2]:e, ...f } = { A:"X", [sym2]: 5.5 }) {
assert(a === 6)
rest_compare(b, ["B", 7, sym1, 8.25])
assert(c === "X")
assert(d === undefined)
assert(e === 5.5)
rest_compare(f, [])
}
f6({ [sym1]:8.25, B:7, AA:6 })
function f7() {
var b, o = {}, rest
({ ["A" + "A"]:b, ...{o}.o.rest } = { [sym1]:5.5, A:"X", AA:-0.25 })
assert(b === -0.25)
rest_compare(o.rest, [ "A", "X", sym1, 5.5])
}
f7()
function f8() {
var a, b;
({ ...(b) } = { })
rest_compare(b, []);
[a,a,...{ ...b }] = ["A", "B", "C", "D"]
rest_compare(b, ["0", "C", "1", "D"])
}
f8()
-363
View File
@@ -436,9 +436,6 @@
<test id="language/expressions/assignment/dstr/array-elem-iter-rtrn-close.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-elem-iter-thrw-close-err.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-elem-iter-thrw-close.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-elem-put-obj-literal-prop-ref-init-active.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-elem-put-obj-literal-prop-ref-init.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-elem-put-obj-literal-prop-ref.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-elem-trlg-iter-elision-iter-nrml-close-skip.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-elem-trlg-iter-list-nrml-close-skip.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-elem-trlg-iter-list-rtrn-close-err.js"><reason></reason></test>
@@ -461,10 +458,6 @@
<test id="language/expressions/assignment/dstr/array-rest-iter-thrw-close.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-rest-lref-err.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-rest-lref.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-rest-nested-array-iter-thrw-close-skip.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-prop-elem-target-obj-literal-prop-ref-init-active.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-prop-elem-target-obj-literal-prop-ref-init.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-prop-elem-target-obj-literal-prop-ref.js"><reason></reason></test>
<test id="language/expressions/assignment/fn-name-lhs-cover.js"><reason></reason></test>
<test id="language/expressions/assignment/fn-name-lhs-member.js"><reason></reason></test>
<test id="language/expressions/async-arrow-function/await-as-param-nested-arrow-body-position.js"><reason></reason></test>
@@ -783,9 +776,6 @@
<test id="language/statements/for-of/dstr/array-elem-iter-rtrn-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-iter-thrw-close-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-iter-thrw-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-put-obj-literal-prop-ref-init-active.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-put-obj-literal-prop-ref-init.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-put-obj-literal-prop-ref.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-elision-iter-nrml-close-skip.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-list-nrml-close-skip.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-list-rtrn-close-err.js"><reason></reason></test>
@@ -808,12 +798,8 @@
<test id="language/statements/for-of/dstr/array-rest-iter-thrw-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-lref-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-lref.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-nested-array-iter-thrw-close-skip.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/const-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/let-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-target-obj-literal-prop-ref-init-active.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-target-obj-literal-prop-ref-init.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-target-obj-literal-prop-ref.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/var-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/for-of/head-const-init.js"><reason></reason></test>
<test id="language/statements/for-of/head-decl-no-expr.js"><reason></reason></test>
@@ -7434,60 +7420,6 @@
features: [object-rest, object-spread]
https://github.com/tc39/proposal-object-rest-spread
-->
<test id="language/expressions/array/spread-obj-spread-order.js"><reason></reason></test>
<test id="language/expressions/array/spread-obj-symbol-property.js"><reason></reason></test>
<test id="language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/arrow-function/dstr/obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/arrow-function/dstr/obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/arrow-function/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-computed-property-no-strict.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-computed-property.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-descriptors.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-empty-obj.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-getter-abrupt-get-error.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-getter.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-number.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-order.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-put-const.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-same-name.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-str-val.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-symbol-val.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-to-property-with-setter.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-to-property.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-val-null.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-val-undefined.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/obj-rest-valid-object.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-identifier-spread-non-strict.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-identifier-spread-non-strict.js"><reason></reason></test>
<test id="language/expressions/call/spread-obj-spread-order.js"><reason></reason></test>
<test id="language/expressions/call/spread-obj-symbol-property.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-private-gen-meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-private-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-private-gen-meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
@@ -7500,30 +7432,6 @@
<test id="language/expressions/class/dstr/async-private-gen-meth-static-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-private-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-private-gen-meth-static-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-static-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-static-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-static-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-static-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-static-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-static-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-static-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-static-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-static-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/private-gen-meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/private-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/private-gen-meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
@@ -7552,65 +7460,6 @@
<test id="language/expressions/class/elements/async-gen-private-method/yield-spread-obj.js"><reason></reason></test>
<test id="language/expressions/class/elements/gen-private-method-static/yield-spread-obj.js"><reason></reason></test>
<test id="language/expressions/class/elements/gen-private-method/yield-spread-obj.js"><reason></reason></test>
<test id="language/expressions/function/dstr/dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/function/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/function/dstr/dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/function/dstr/obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/function/dstr/obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/function/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/generators/dstr/dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/generators/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/generators/dstr/dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/generators/dstr/obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/generators/dstr/obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/generators/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/generators/named-yield-identifier-spread-non-strict.js"><reason></reason></test>
<test id="language/expressions/generators/yield-identifier-spread-non-strict.js"><reason></reason></test>
<test id="language/expressions/new/spread-obj-spread-order.js"><reason></reason></test>
<test id="language/expressions/new/spread-obj-symbol-property.js"><reason></reason></test>
<test id="language/expressions/object/dstr/async-gen-meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/object/dstr/async-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/object/dstr/async-gen-meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/object/dstr/async-gen-meth-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/object/dstr/async-gen-meth-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/object/dstr/async-gen-meth-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/object/dstr/gen-meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/object/dstr/gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/object/dstr/gen-meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/object/dstr/gen-meth-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/object/dstr/gen-meth-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/object/dstr/gen-meth-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/object/dstr/meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/object/dstr/meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/object/dstr/meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/object/dstr/meth-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/object/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/object/dstr/meth-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/object/dstr/object-rest-proxy-ownkeys-returned-keys-order.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/gen-yield-identifier-spread-non-strict.js"><reason></reason></test>
<test id="language/expressions/object/object-spread-proxy-ownkeys-returned-keys-order.js"><reason></reason></test>
<test id="language/expressions/super/call-spread-obj-spread-order.js"><reason></reason></test>
<test id="language/expressions/super/call-spread-obj-symbol-property.js"><reason></reason></test>
<test id="language/statements/async-generator/dstr/dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/async-generator/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/async-generator/dstr/dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/async-generator/dstr/obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/async-generator/dstr/obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/async-generator/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-identifier-spread-non-strict.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-private-gen-meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-private-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-private-gen-meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
@@ -7623,30 +7472,6 @@
<test id="language/statements/class/dstr/async-private-gen-meth-static-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-private-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-private-gen-meth-static-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-static-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-static-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-static-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-static-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-static-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-static-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-static-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-static-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-static-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/private-gen-meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/private-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/private-gen-meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
@@ -7675,49 +7500,10 @@
<test id="language/statements/class/elements/async-gen-private-method/yield-spread-obj.js"><reason></reason></test>
<test id="language/statements/class/elements/gen-private-method-static/yield-spread-obj.js"><reason></reason></test>
<test id="language/statements/class/elements/gen-private-method/yield-spread-obj.js"><reason></reason></test>
<test id="language/statements/const/dstr/obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/const/dstr/obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/const/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-descriptors.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-empty-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-number.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-same-name.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-str-val.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-symbol-val.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-to-property-with-setter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-to-property.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-valid-object.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-descriptors.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-empty-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-number.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-same-name.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-str-val.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-symbol-val.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-to-property-with-setter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-to-property.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-valid-object.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
@@ -7730,70 +7516,15 @@
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/const-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/const-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/const-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/let-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/let-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/let-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-computed-property-no-strict.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-computed-property.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-descriptors.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-empty-obj.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-getter-abrupt-get-error.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-number.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-order.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-put-const.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-same-name.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-str-val.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-symbol-val.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-to-property-with-setter.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-to-property.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-val-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-val-undefined.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-rest-valid-object.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/var-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/var-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/var-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for/dstr/const-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for/dstr/const-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for/dstr/const-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for/dstr/let-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for/dstr/let-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for/dstr/let-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for/dstr/var-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for/dstr/var-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for/dstr/var-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/function/dstr/dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/function/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/function/dstr/dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/function/dstr/obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/function/dstr/obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/function/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/generators/dstr/dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/generators/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/generators/dstr/dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/generators/dstr/obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/generators/dstr/obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/generators/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/generators/yield-identifier-spread-non-strict.js"><reason></reason></test>
<test id="language/statements/let/dstr/obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/let/dstr/obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/let/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/try/dstr/obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/try/dstr/obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/try/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/variable/dstr/obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/variable/dstr/obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/variable/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
<!-- END - ES2018: Rest/Spread Properties -->
<!-- ES2020: Dynamic Import
@@ -8317,9 +8048,6 @@
<test id="language/expressions/async-generator/dstr/dflt-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/dflt-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/dflt-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-ary-ptrn-rest-init-ary.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-ary-ptrn-rest-init-id.js"><reason></reason></test>
@@ -8334,19 +8062,9 @@
<test id="language/expressions/async-generator/dstr/named-dflt-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-dflt-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-dflt-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/named-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/async-generator/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/async-generator/eval-body-proto-realm.js"><reason></reason></test>
<test id="language/expressions/async-generator/eval-var-scope-syntax-err.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-eval-var-scope-syntax-err.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-identifier-spread-non-strict.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-promise-reject-next-catch.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
@@ -8359,7 +8077,6 @@
<test id="language/expressions/async-generator/named-yield-star-sync-next.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-star-sync-return.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-star-sync-throw.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-identifier-spread-non-strict.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-promise-reject-next-catch.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
@@ -8415,12 +8132,6 @@
<test id="language/expressions/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-ary-ptrn-rest-init-ary.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-ary-ptrn-rest-init-id.js"><reason></reason></test>
@@ -8435,12 +8146,6 @@
<test id="language/expressions/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-gen-meth-static-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-private-gen-meth-ary-init-iter-close.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-private-gen-meth-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-private-gen-meth-ary-name-iter-val.js"><reason></reason></test>
@@ -8944,14 +8649,7 @@
<test id="language/expressions/object/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
<test id="language/expressions/object/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
<test id="language/expressions/object/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
<test id="language/expressions/object/dstr/async-gen-meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/object/dstr/async-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/object/dstr/async-gen-meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/object/dstr/async-gen-meth-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/expressions/object/dstr/async-gen-meth-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/expressions/object/dstr/async-gen-meth-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-meth-eval-var-scope-syntax-err.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-promise-reject-next-catch.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
@@ -8990,15 +8688,8 @@
<test id="language/statements/async-generator/dstr/dflt-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
<test id="language/statements/async-generator/dstr/dflt-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
<test id="language/statements/async-generator/dstr/dflt-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
<test id="language/statements/async-generator/dstr/dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/async-generator/dstr/dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/async-generator/dstr/dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/async-generator/dstr/obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/async-generator/dstr/obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/async-generator/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/async-generator/eval-var-scope-syntax-err.js"><reason></reason></test>
<test id="language/statements/async-generator/return-undefined-implicit-and-explicit.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-identifier-spread-non-strict.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-promise-reject-next-catch.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
@@ -9052,12 +8743,6 @@
<test id="language/statements/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-ary-ptrn-rest-init-ary.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-ary-ptrn-rest-init-id.js"><reason></reason></test>
@@ -9072,12 +8757,6 @@
<test id="language/statements/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-dflt-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-dflt-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-dflt-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-dflt-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-gen-meth-static-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-private-gen-meth-ary-init-iter-close.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-private-gen-meth-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-private-gen-meth-ary-name-iter-val.js"><reason></reason></test>
@@ -9551,17 +9230,6 @@
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-trlg-iter-elision-iter-nrml-close-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-init-simple-no-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-simple-no-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-descriptors.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-empty-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-number.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-same-name.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-str-val.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-symbol-val.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-to-property-with-setter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-to-property.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-rest-valid-object.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-ary-init-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-unresolvable.js"><reason></reason></test>
@@ -9585,7 +9253,6 @@
<test id="language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-get-value-err.js"><reason></reason></test>
@@ -9596,9 +9263,6 @@
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-ary-init-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-unresolvable.js"><reason></reason></test>
@@ -9622,7 +9286,6 @@
<test id="language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-get-value-err.js"><reason></reason></test>
@@ -9633,9 +9296,6 @@
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-ary-init-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-unresolvable.js"><reason></reason></test>
@@ -9659,9 +9319,6 @@
<test id="language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-async-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-unresolvable.js"><reason></reason></test>
@@ -9670,9 +9327,6 @@
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-init-simple-no-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-init-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-get-err.js"><reason></reason></test>
@@ -9702,17 +9356,6 @@
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-elem-target-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-nested-array-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-nested-obj-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-descriptors.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-empty-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-number.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-same-name.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-str-val.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-symbol-val.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-to-property-with-setter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-to-property.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-rest-valid-object.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-ary-init-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-unresolvable.js"><reason></reason></test>
@@ -9810,9 +9453,6 @@
<test id="language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-async-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-unresolvable.js"><reason></reason></test>
@@ -9821,9 +9461,6 @@
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-getter.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-val-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/head-const-init.js"><reason></reason></test>
<test id="language/statements/for-await-of/head-let-init.js"><reason></reason></test>
<test id="language/statements/for-await-of/head-var-init.js"><reason></reason></test>