Detect assignment pattern for for-in/of (#4140)

Furthermore do not allow default value for rest parameter

JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
Zoltan Herczeg 2020-08-24 14:47:10 +02:00 committed by GitHub
parent 5b3f01af9d
commit 84bc1e03fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 123 additions and 446 deletions

View File

@ -3091,10 +3091,7 @@ parser_pattern_get_target (parser_context_t *context_p, /**< context */
}
else
{
if (context_p->next_scanner_info_p->type != SCANNER_TYPE_INITIALIZER)
{
parser_raise_error (context_p, PARSER_ERR_INVALID_DESTRUCTURING_PATTERN);
}
JERRY_ASSERT (context_p->next_scanner_info_p->type == SCANNER_TYPE_INITIALIZER);
scanner_get_location (&start_location, context_p);
scanner_set_location (context_p, &((scanner_location_info_t *) context_p->next_scanner_info_p)->location);
@ -3205,7 +3202,7 @@ parser_pattern_form_assignment (parser_context_t *context_p, /**< context */
parser_pattern_emit_rhs (context_p, rhs_opcode, literal_index);
if (context_p->token.type == LEXER_ASSIGN)
if (context_p->token.type == LEXER_ASSIGN && !(flags & PARSER_PATTERN_REST_ELEMENT))
{
parser_branch_t skip_init;
lexer_next_token (context_p);
@ -3273,12 +3270,23 @@ parser_pattern_process_nested_pattern (parser_context_t *context_p, /**< context
| PARSER_PATTERN_LET
| PARSER_PATTERN_CONST
| PARSER_PATTERN_LOCAL
| PARSER_PATTERN_REST_ELEMENT
| PARSER_PATTERN_ARGUMENTS)));
if (context_p->next_scanner_info_p->source_p == context_p->source_p)
JERRY_ASSERT (context_p->next_scanner_info_p->source_p != context_p->source_p
|| context_p->next_scanner_info_p->type == SCANNER_TYPE_INITIALIZER
|| context_p->next_scanner_info_p->type == SCANNER_TYPE_OBJECT_LITERAL_WITH_SUPER);
if (context_p->next_scanner_info_p->source_p == context_p->source_p
&& context_p->next_scanner_info_p->type == SCANNER_TYPE_INITIALIZER)
{
options |= PARSER_PATTERN_TARGET_DEFAULT;
if (!(flags & PARSER_PATTERN_REST_ELEMENT))
{
options |= PARSER_PATTERN_TARGET_DEFAULT;
}
else
{
scanner_release_next (context_p, sizeof (scanner_location_info_t));
}
}
parser_pattern_emit_rhs (context_p, rhs_opcode, literal_index);

View File

@ -1324,6 +1324,11 @@ parser_parse_for_statement_start (parser_context_t *context_p) /**< context */
if (token_type == LEXER_EOS)
{
lexer_next_token (context_p);
if (context_p->token.type == LEXER_LEFT_SQUARE || context_p->token.type == LEXER_LEFT_BRACE)
{
token_type = context_p->token.type;
}
}
#else /* !ENABLED (JERRY_ESNEXT) */
lexer_next_token (context_p);
@ -1411,6 +1416,25 @@ parser_parse_for_statement_start (parser_context_t *context_p) /**< context */
#endif /* ENABLED (JERRY_ESNEXT) */
break;
}
#if ENABLED (JERRY_ESNEXT)
case LEXER_LEFT_BRACE:
case LEXER_LEFT_SQUARE:
{
if (context_p->next_scanner_info_p->source_p == context_p->source_p
&& context_p->next_scanner_info_p->type == SCANNER_TYPE_FOR_PATTERN)
{
parser_emit_cbc_ext (context_p, is_for_in ? CBC_EXT_FOR_IN_GET_NEXT
: CBC_EXT_FOR_OF_GET_NEXT);
scanner_release_next (context_p, sizeof (scanner_info_t));
parser_parse_initializer (context_p, PARSER_PATTERN_TARGET_ON_STACK);
/* Pop the value returned by GET_NEXT. */
parser_emit_cbc (context_p, CBC_POP);
break;
}
/* FALLTHRU */
}
#endif /* ENABLED (JERRY_ESNEXT) */
default:
{
uint16_t opcode;

View File

@ -114,6 +114,7 @@ typedef enum
SCAN_STACK_CLASS_EXPRESSION, /**< class expression */
SCAN_STACK_CLASS_EXTENDS, /**< class extends expression */
SCAN_STACK_FUNCTION_PARAMETERS, /**< function parameter initializer */
SCAN_STACK_FOR_START_PATTERN, /**< possible assignment pattern for "for" iterator */
SCAN_STACK_USE_ASYNC, /**< an "async" identifier is used */
SCAN_STACK_OBJECT_LITERAL_WITH_SUPER, /**< object literal with inner super reference */
#endif /* ENABLED (JERRY_ESNEXT) */

View File

@ -1679,6 +1679,7 @@ scanner_cleanup (parser_context_t *context_p) /**< context */
#if ENABLED (JERRY_ESNEXT)
JERRY_ASSERT (scanner_info_p->type == SCANNER_TYPE_END_ARGUMENTS
|| scanner_info_p->type == SCANNER_TYPE_LET_EXPRESSION
|| scanner_info_p->type == SCANNER_TYPE_FOR_PATTERN
|| scanner_info_p->type == SCANNER_TYPE_CLASS_CONSTRUCTOR
|| scanner_info_p->type == SCANNER_TYPE_OBJECT_LITERAL_WITH_SUPER
|| scanner_info_p->type == SCANNER_TYPE_ERR_REDECLARED

View File

@ -873,6 +873,20 @@ scanner_scan_primary_expression_end (parser_context_t *context_p, /**< context *
return SCAN_NEXT_TOKEN;
}
if (context_p->stack_top_uint8 == SCAN_STACK_FOR_START_PATTERN)
{
JERRY_ASSERT (binding_type == SCANNER_BINDING_NONE);
parser_stack_change_last_uint8 (context_p, SCAN_STACK_FOR_START);
if (context_p->token.type == LEXER_KEYW_IN || SCANNER_IDENTIFIER_IS_OF ())
{
scanner_info_t *info_p = scanner_insert_info (context_p, source_start.source_p, sizeof (scanner_info_t));
info_p->type = SCANNER_TYPE_FOR_PATTERN;
return SCAN_KEEP_TOKEN;
}
}
if (context_p->token.type != LEXER_ASSIGN)
{
if (SCANNER_NEEDS_BINDING_LIST (binding_type))
@ -1243,6 +1257,12 @@ scanner_scan_statement (parser_context_t *context_p, /**< context */
break;
}
#if ENABLED (JERRY_ESNEXT)
case LEXER_LEFT_BRACE:
case LEXER_LEFT_SQUARE:
{
stack_mode = SCAN_STACK_FOR_START_PATTERN;
break;
}
case LEXER_LITERAL:
{
if (!lexer_token_is_let (context_p))
@ -3515,16 +3535,16 @@ scan_completed:
print_location = true;
break;
}
case SCANNER_TYPE_OBJECT_LITERAL_WITH_SUPER:
case SCANNER_TYPE_FOR_PATTERN:
{
JERRY_DEBUG_MSG (" OBJECT-LITERAL-WITH-SUPER: source:%d\n",
JERRY_DEBUG_MSG (" SCANNER_TYPE_FOR_PATTERN: source:%d\n",
(int) (info_p->source_p - source_start_p));
print_location = false;
break;
}
case SCANNER_TYPE_CLASS_CONSTRUCTOR:
{
JERRY_DEBUG_MSG (" CLASS-CONSTRUCTOR: source:%d\n",
JERRY_DEBUG_MSG (" CLASS_CONSTRUCTOR: source:%d\n",
(int) (info_p->source_p - source_start_p));
print_location = false;
break;
@ -3547,6 +3567,13 @@ scan_completed:
(int) (info_p->source_p - source_start_p));
break;
}
case SCANNER_TYPE_OBJECT_LITERAL_WITH_SUPER:
{
JERRY_DEBUG_MSG (" OBJECT_LITERAL_WITH_SUPER: source:%d\n",
(int) (info_p->source_p - source_start_p));
print_location = false;
break;
}
#endif /* ENABLED (JERRY_ESNEXT) */
}

View File

@ -46,6 +46,7 @@ typedef enum
SCANNER_TYPE_CASE, /**< case statement */
#if ENABLED (JERRY_ESNEXT)
SCANNER_TYPE_INITIALIZER, /**< destructuring binding or assignment pattern with initializer */
SCANNER_TYPE_FOR_PATTERN, /**< assignment pattern for for-in or for-of interators */
SCANNER_TYPE_CLASS_CONSTRUCTOR, /**< class constructor */
SCANNER_TYPE_LET_EXPRESSION, /**< let expression */
SCANNER_TYPE_ERR_REDECLARED, /**< syntax error: a variable is redeclared */

View File

@ -60,6 +60,9 @@ checkSyntax ("[()] = []");
checkSyntax ("try { let [$] = $;");
checkSyntax ("let a, [ b.c ] = [6];");
checkSyntax ("let [(a)] = [1]");
checkSyntax ("[...a = []] = [1]");
checkSyntax ("[...[a] = []] = [1]");
checkSyntax ("[...[a, [...b] = []] = []] = [1]");
mustThrow ("var [a] = 4");
mustThrow ("var [a] = 5");

View File

@ -12,6 +12,16 @@
// See the License for the specific language governing permissions and
// limitations under the License.
function check_syntax_error (code)
{
try {
eval (code)
assert (false)
} catch (e) {
assert (e instanceof SyntaxError)
}
}
var idx = 0;
for (var [a,b] of [[1,2], [3,4]])
{
@ -69,9 +79,41 @@ for (let [a,b] of [[11,12], [13,14]])
assert(a === 3);
assert(b === 4);
try {
eval("for (let [a,b] = [1,2] of [[3,4]]) {}");
assert(false);
} catch (e) {
assert(e instanceof SyntaxError);
check_syntax_error("for (let [a,b] = [1,2] of [[3,4]]) {}")
idx = 0;
for ([a,b] of [[10,true], ["x",null]])
{
if (idx == 0)
{
assert(a === 10);
assert(b === true);
idx = 1;
}
else
{
assert(a === "x");
assert(b === null);
}
}
assert(a === "x");
assert(b === null);
check_syntax_error("for ([a,b] = [1,2] of [[3,4]]) {}")
var o = {}
for ([a, b] = [o,false]; false; )
{
assert(false);
}
assert(a === o);
assert(b === false);
for ([a, b] + [a, b]; false; )
{
assert(false);
}
check_syntax_error("for ([a,b] + 1 of [[3,4]]) {}")

View File

@ -256,7 +256,6 @@
<test id="language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-function-declaration-with-function-declaration.js"><reason>No longer a SyntaxError in ES11</reason></test>
<test id="language/default-parameters/function-length.js"><reason></reason></test>
<test id="language/expressions/arrow-function/lexical-super-call-from-within-constructor.js"><reason></reason></test>
<test id="language/expressions/assignment/destructuring/array-rest-init.js"><reason></reason></test>
<test id="language/expressions/assignment/destructuring/obj-prop-elem-target-yield-expr.js"><reason></reason></test>
<test id="language/expressions/assignment/destructuring/obj-prop-elem-target-yield-ident-valid.js"><reason></reason></test>
<test id="language/expressions/assignment/destructuring/obj-prop-put-prop-ref.js"><reason></reason></test>
@ -330,8 +329,6 @@
<test id="language/statements/continue/labeled-continue.js"><reason></reason></test>
<test id="language/statements/continue/nested-let-bound-for-loops-labeled-continue.js"><reason></reason></test>
<test id="language/statements/continue/simple-and-labeled.js"><reason></reason></test>
<test id="language/statements/for-of/body-dstr-assign-error.js"><reason></reason></test>
<test id="language/statements/for-of/body-dstr-assign.js"><reason></reason></test>
<test id="language/statements/for-of/iterator-next-reference.js"><reason>ES2018 change: next method must be cached</reason></test>
<test id="language/statements/for/S12.6.3_A9.1.js"><reason></reason></test>
<test id="language/statements/for/S12.6.3_A9.js"><reason></reason></test>

View File

@ -3980,9 +3980,7 @@
<test id="language/expressions/array/spread-obj-symbol-property.js"><reason></reason></test>
<test id="language/expressions/arrow-function/dflt-params-trailing-comma.js"><reason></reason></test>
<test id="language/expressions/arrow-function/dstr/ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/arrow-function/dstr/ary-ptrn-rest-init-id.js"><reason></reason></test>
<test id="language/expressions/arrow-function/dstr/dflt-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/arrow-function/dstr/dflt-ary-ptrn-rest-init-id.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>
@ -4030,7 +4028,6 @@
<test id="language/expressions/assignment/dstr/array-elem-trlg-iter-rest-thrw-close-err.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-elem-trlg-iter-rest-thrw-close.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-elision-iter-nrml-close-skip.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-rest-init.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-rest-iter-nrml-close-skip.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-rest-iter-rtrn-close-err.js"><reason></reason></test>
<test id="language/expressions/assignment/dstr/array-rest-iter-rtrn-close-null.js"><reason></reason></test>
@ -4508,9 +4505,7 @@
<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-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-ary-ptrn-rest-init-id.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-dflt-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-dflt-ary-ptrn-rest-init-id.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>
@ -4518,9 +4513,7 @@
<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-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-static-ary-ptrn-rest-init-id.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-static-dflt-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/class/dstr/gen-meth-static-dflt-ary-ptrn-rest-init-id.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>
@ -4528,9 +4521,7 @@
<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-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-ary-ptrn-rest-init-id.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-dflt-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-dflt-ary-ptrn-rest-init-id.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>
@ -4538,9 +4529,7 @@
<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-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-static-ary-ptrn-rest-init-id.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-static-dflt-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/class/dstr/meth-static-dflt-ary-ptrn-rest-init-id.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>
@ -6499,9 +6488,7 @@
<test id="language/expressions/function/arguments-with-arguments-lex.js"><reason></reason></test>
<test id="language/expressions/function/dflt-params-trailing-comma.js"><reason></reason></test>
<test id="language/expressions/function/dstr/ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/function/dstr/ary-ptrn-rest-init-id.js"><reason></reason></test>
<test id="language/expressions/function/dstr/dflt-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/function/dstr/dflt-ary-ptrn-rest-init-id.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>
@ -6515,9 +6502,7 @@
<test id="language/expressions/generators/arguments-with-arguments-lex.js"><reason></reason></test>
<test id="language/expressions/generators/dflt-params-trailing-comma.js"><reason></reason></test>
<test id="language/expressions/generators/dstr/ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/generators/dstr/ary-ptrn-rest-init-id.js"><reason></reason></test>
<test id="language/expressions/generators/dstr/dflt-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/generators/dstr/dflt-ary-ptrn-rest-init-id.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>
@ -6606,9 +6591,7 @@
<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-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/object/dstr/gen-meth-ary-ptrn-rest-init-id.js"><reason></reason></test>
<test id="language/expressions/object/dstr/gen-meth-dflt-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/object/dstr/gen-meth-dflt-ary-ptrn-rest-init-id.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>
@ -6616,9 +6599,7 @@
<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-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/object/dstr/meth-ary-ptrn-rest-init-id.js"><reason></reason></test>
<test id="language/expressions/object/dstr/meth-dflt-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/object/dstr/meth-dflt-ary-ptrn-rest-init-id.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>
@ -7576,9 +7557,7 @@
<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-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-ary-ptrn-rest-init-id.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-dflt-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-dflt-ary-ptrn-rest-init-id.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>
@ -7586,9 +7565,7 @@
<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-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-static-ary-ptrn-rest-init-id.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-static-dflt-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/class/dstr/gen-meth-static-dflt-ary-ptrn-rest-init-id.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>
@ -7596,9 +7573,7 @@
<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-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-ary-ptrn-rest-init-id.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-dflt-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-dflt-ary-ptrn-rest-init-id.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>
@ -7606,9 +7581,7 @@
<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-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-static-ary-ptrn-rest-init-id.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-static-dflt-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/class/dstr/meth-static-dflt-ary-ptrn-rest-init-id.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>
@ -9180,7 +9153,6 @@
<test id="language/statements/class/subclass/superclass-generator-function.js"><reason></reason></test>
<test id="language/statements/class/super/in-constructor-superproperty-evaluation.js"><reason></reason></test>
<test id="language/statements/const/dstr/ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/const/dstr/ary-ptrn-rest-init-id.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>
@ -9191,123 +9163,19 @@
<test id="language/statements/do-while/cptn-normal.js"><reason></reason></test>
<test id="language/statements/do-while/tco-body.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-from-sync-iterator-continuation-abrupt-completion-get-constructor.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-init-assignment.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-init-evaluation.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-init-fn-name-arrow.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-init-fn-name-class.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-init-fn-name-cover.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-init-fn-name-fn.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-init-fn-name-gen.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-init-in.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-init-order.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-init-simple-no-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-init-yield-ident-invalid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-init-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-iter-nrml-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-array-invalid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-array-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-array-undefined-hole.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-array-undefined-own.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-array-undefined.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-array-yield-ident-invalid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-array-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-array.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-obj-invalid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-obj-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-obj-undefined-hole.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-obj-undefined-own.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-obj-undefined.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-obj-yield-ident-invalid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-obj-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-nested-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-put-const.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-put-prop-ref-no-get.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-put-prop-ref-user-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-put-prop-ref.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-put-unresolvable-no-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-put-unresolvable-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-target-identifier.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-target-simple-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-target-yield-invalid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-target-yield-valid.js"><reason></reason></test>
<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-array-elision-val-array.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elision-val-string.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-empty-val-array.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-empty-val-string.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-after-element.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-after-elision.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-elision.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-iteration.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-nested-array-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-nested-array-undefined-hole.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-nested-array-undefined-own.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-nested-array-undefined.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-nested-array-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-nested-array.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-nested-obj-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-nested-obj-undefined-hole.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-nested-obj-undefined-own.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-nested-obj-undefined.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-nested-obj-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-nested-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-put-prop-ref-no-get.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-put-prop-ref.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-put-unresolvable-no-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-rest-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-empty-bool.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-empty-num.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-empty-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-empty-string.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-empty-symbol.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-identifier-resolution-first.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-identifier-resolution-last.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-identifier-resolution-lone.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-identifier-resolution-middle.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-identifier-resolution-trlng.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-init-assignment-missing.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-init-assignment-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-init-assignment-truthy.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-init-assignment-undef.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-init-evaluation.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-init-fn-name-arrow.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-init-fn-name-class.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-init-fn-name-cover.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-init-fn-name-fn.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-init-fn-name-gen.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-init-in.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-init-order.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-init-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-id-put-unresolvable-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-prop-elem-init-assignment-missing.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-elem-init-assignment-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-elem-init-assignment-truthy.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-elem-init-assignment-undef.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-elem-init-evaluation.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-elem-init-fn-name-arrow.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-elem-init-fn-name-class.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-elem-init-fn-name-cover.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-elem-init-fn-name-fn.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-elem-init-fn-name-gen.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-elem-init-in.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-elem-init-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-elem-target-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-identifier-resolution-first.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-identifier-resolution-last.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-identifier-resolution-lone.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-identifier-resolution-middle.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-identifier-resolution-trlng.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-name-evaluation.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-nested-array-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-nested-array.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-nested-obj-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-nested-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-put-order.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-put-prop-ref-no-get.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-put-prop-ref.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-obj-prop-put-unresolvable-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>
@ -9430,134 +9298,35 @@
<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-assignment.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-init-evaluation.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-init-fn-name-arrow.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-init-fn-name-class.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-init-fn-name-cover.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-init-fn-name-fn.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-init-fn-name-gen.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-init-in.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-init-order.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>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-nrml-close-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-nrml-close-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-nrml-close-skip.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-nrml-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-rtrn-close-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-thrw-close-skip.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-nested-array-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-nested-array-undefined-hole.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-nested-array-undefined-own.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-nested-array-undefined.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-nested-array-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-nested-obj-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-nested-obj-undefined-hole.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-nested-obj-undefined-own.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-nested-obj-undefined.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-nested-obj-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-nested-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-put-const.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-put-prop-ref-no-get.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-put-prop-ref-user-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-put-prop-ref.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-put-unresolvable-no-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-put-unresolvable-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-target-simple-no-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-target-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-trlg-iter-elision-iter-nrml-close-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-trlg-iter-elision-iter-nrml-close-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-trlg-iter-elision-iter-nrml-close-skip.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-trlg-iter-elision-iter-nrml-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-trlg-iter-list-nrml-close-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-trlg-iter-list-nrml-close-skip.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-trlg-iter-list-nrml-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-trlg-iter-list-thrw-close-skip.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-trlg-iter-rest-nrml-close-skip.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elision-iter-nrml-close-skip.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elision-iter-nrml-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elision-val-array.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elision-val-string.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-empty-iter-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-empty-val-array.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-empty-val-string.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-after-element.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-after-elision.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-elision.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-iter-nrml-close-skip.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-iteration.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-lref.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-nested-array-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-nested-array-undefined-hole.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-nested-array-undefined-own.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-nested-array-undefined.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-nested-array-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-nested-array.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-nested-obj-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-nested-obj-undefined-hole.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-nested-obj-undefined-own.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-nested-obj-undefined.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-nested-obj-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-nested-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-put-prop-ref-no-get.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-put-prop-ref.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-put-unresolvable-no-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-empty-bool.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-empty-num.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-empty-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-empty-string.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-empty-symbol.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-identifier-resolution-first.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-identifier-resolution-last.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-identifier-resolution-lone.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-identifier-resolution-middle.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-identifier-resolution-trlng.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-init-assignment-missing.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-init-assignment-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-init-assignment-truthy.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-init-assignment-undef.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-init-evaluation.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-init-fn-name-arrow.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-init-fn-name-class.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-init-fn-name-cover.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-init-fn-name-fn.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-init-fn-name-gen.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-init-in.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-init-order.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-init-simple-no-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-init-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-put-unresolvable-no-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-simple-no-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-elem-init-assignment-missing.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-elem-init-assignment-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-elem-init-assignment-truthy.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-elem-init-assignment-undef.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-elem-init-evaluation.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-elem-init-fn-name-arrow.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-elem-init-fn-name-class.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-elem-init-fn-name-cover.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-elem-init-fn-name-fn.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-elem-init-fn-name-gen.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-elem-init-in.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-elem-init-yield-expr.js"><reason></reason></test>
<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-identifier-resolution-first.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-identifier-resolution-last.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-identifier-resolution-lone.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-identifier-resolution-middle.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-identifier-resolution-trlng.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-name-evaluation.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-array.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-prop-nested-obj.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-put-order.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-put-prop-ref-no-get.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-put-prop-ref.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-put-unresolvable-no-strict.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>
@ -9702,244 +9471,59 @@
<test id="language/statements/for-in/scope-body-lex-open.js"><reason></reason></test>
<test id="language/statements/for-in/scope-head-lex-close.js"><reason></reason></test>
<test id="language/statements/for-in/scope-head-lex-open.js"><reason></reason></test>
<test id="language/statements/for-of/body-dstr-assign-error.js"><reason></reason></test>
<test id="language/statements/for-of/body-dstr-assign.js"><reason></reason></test>
<test id="language/statements/for-of/cptn-decl-abrupt-empty.js"><reason></reason></test>
<test id="language/statements/for-of/cptn-decl-itr.js"><reason></reason></test>
<test id="language/statements/for-of/cptn-decl-no-itr.js"><reason></reason></test>
<test id="language/statements/for-of/cptn-expr-abrupt-empty.js"><reason></reason></test>
<test id="language/statements/for-of/cptn-expr-itr.js"><reason></reason></test>
<test id="language/statements/for-of/cptn-expr-no-itr.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-init-assignment.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-init-evaluation.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-init-fn-name-arrow.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-init-fn-name-class.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-init-fn-name-cover.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-init-fn-name-fn.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-init-fn-name-gen.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-init-in.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-init-let.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-init-order.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-init-simple-no-strict.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-init-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-init-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-iter-nrml-close-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-iter-nrml-close-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-iter-nrml-close-skip.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-iter-nrml-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-iter-rtrn-close-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-iter-rtrn-close-null.js"><reason></reason></test>
<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-skip.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-nested-array-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-nested-array-undefined-hole.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-nested-array-undefined-own.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-nested-array-undefined.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-nested-array-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-nested-array-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-nested-array.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-nested-obj-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-nested-obj-undefined-hole.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-nested-obj-undefined-own.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-nested-obj-undefined.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-nested-obj-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-nested-obj-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-nested-obj.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-put-const.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-put-let.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-put-prop-ref-no-get.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-put-prop-ref-user-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-put-prop-ref.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-put-unresolvable-no-strict.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-put-unresolvable-strict.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-target-identifier.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-target-simple-no-strict.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-target-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-target-yield-valid.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-elision-iter-abpt.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-elision-iter-nrml-close-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-elision-iter-nrml-close-null.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-elision-iter-nrml-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-list-nrml-close-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-list-nrml-close-null.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-nrml-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-list-rtrn-close-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-list-rtrn-close-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-list-rtrn-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-list-thrw-close-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-list-thrw-close-skip.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-list-thrw-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-rest-nrml-close-skip.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-rest-rtrn-close-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-rest-rtrn-close-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-rest-rtrn-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-rest-thrw-close-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-rest-thrw-close-skip.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elem-trlg-iter-rest-thrw-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elision-iter-abpt.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elision-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elision-iter-nrml-close-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elision-iter-nrml-close-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elision-iter-nrml-close-skip.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elision-iter-nrml-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elision-val-array.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elision-val-bool.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elision-val-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elision-val-num.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elision-val-string.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elision-val-symbol.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-elision-val-undef.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-empty-iter-close-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-empty-iter-close-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-empty-iter-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-empty-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-empty-val-array.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-empty-val-bool.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-empty-val-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-empty-val-num.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-empty-val-string.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-empty-val-symbol.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-empty-val-undef.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-iteration.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-after-element.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-after-elision.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-elision-iter-abpt.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-elision.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-iter-nrml-close-skip.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-iter-rtrn-close-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-iter-rtrn-close-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-iter-rtrn-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-iter-thrw-close-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-iter-thrw-close-skip.js"><reason></reason></test>
<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-iteration.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/array-rest-nested-array-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-nested-array-undefined-hole.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-nested-array-undefined-own.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-nested-array-undefined.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-nested-array-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-nested-array-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-nested-array.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-nested-obj-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-nested-obj-undefined-hole.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-nested-obj-undefined-own.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-nested-obj-undefined.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-nested-obj-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-nested-obj-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-nested-obj.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-put-const.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-put-let.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-put-prop-ref-no-get.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-put-prop-ref-user-err-iter-close-skip.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-put-prop-ref-user-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-put-prop-ref.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-put-unresolvable-no-strict.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-put-unresolvable-strict.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/array-rest-yield-ident-valid.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/const-ary-ptrn-rest-init-id.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-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/let-ary-ptrn-rest-init-id.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-empty-bool.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-empty-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-empty-num.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-empty-obj.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-empty-string.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-empty-symbol.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-empty-undef.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-identifier-resolution-first.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-identifier-resolution-last.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-identifier-resolution-lone.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-identifier-resolution-middle.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-identifier-resolution-trlng.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-identifier-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-assignment-missing.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-assignment-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-assignment-truthy.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-assignment-undef.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-evaluation.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-fn-name-arrow.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-fn-name-class.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-fn-name-cover.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-fn-name-fn.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-fn-name-gen.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-in.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-let.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-order.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-simple-no-strict.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-init-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-put-const.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-put-let.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-put-unresolvable-no-strict.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-put-unresolvable-strict.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-id-simple-no-strict.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-init-assignment-missing.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-init-assignment-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-init-assignment-truthy.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-init-assignment-undef.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-init-evaluation.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-init-fn-name-arrow.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-init-fn-name-class.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-init-fn-name-cover.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-init-fn-name-fn.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-init-fn-name-gen.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-init-in.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-init-let.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-init-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-init-yield-ident-valid.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/obj-prop-elem-target-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-elem-target-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-identifier-resolution-first.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-identifier-resolution-last.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-identifier-resolution-lone.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-identifier-resolution-middle.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-identifier-resolution-trlng.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-name-evaluation-error.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-name-evaluation.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-nested-array-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-nested-array-undefined-own.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-nested-array-undefined.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-nested-array-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-nested-array-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-nested-array.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-nested-obj-null.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-nested-obj-undefined-own.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-nested-obj-undefined.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-nested-obj-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-nested-obj-yield-ident-valid.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-nested-obj.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-put-const.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-put-let.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-put-order.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-put-prop-ref-no-get.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-put-prop-ref-user-err.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-put-prop-ref.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-put-unresolvable-no-strict.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/obj-prop-put-unresolvable-strict.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>
@ -9959,7 +9543,6 @@
<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-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/for-of/dstr/var-ary-ptrn-rest-init-id.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>
@ -9980,17 +9563,14 @@
<test id="language/statements/for/cptn-expr-expr-iter.js"><reason></reason></test>
<test id="language/statements/for/cptn-expr-expr-no-iter.js"><reason></reason></test>
<test id="language/statements/for/dstr/const-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/for/dstr/const-ary-ptrn-rest-init-id.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-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/for/dstr/let-ary-ptrn-rest-init-id.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-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/for/dstr/var-ary-ptrn-rest-init-id.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>
@ -10007,9 +9587,7 @@
<test id="language/statements/function/arguments-with-arguments-lex.js"><reason></reason></test>
<test id="language/statements/function/dflt-params-trailing-comma.js"><reason></reason></test>
<test id="language/statements/function/dstr/ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/function/dstr/ary-ptrn-rest-init-id.js"><reason></reason></test>
<test id="language/statements/function/dstr/dflt-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/function/dstr/dflt-ary-ptrn-rest-init-id.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>
@ -10022,9 +9600,7 @@
<test id="language/statements/generators/arguments-with-arguments-lex.js"><reason></reason></test>
<test id="language/statements/generators/dflt-params-trailing-comma.js"><reason></reason></test>
<test id="language/statements/generators/dstr/ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/generators/dstr/ary-ptrn-rest-init-id.js"><reason></reason></test>
<test id="language/statements/generators/dstr/dflt-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/generators/dstr/dflt-ary-ptrn-rest-init-id.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>
@ -10056,7 +9632,6 @@
<test id="language/statements/labeled/value-await-module-escaped.js"><reason></reason></test>
<test id="language/statements/labeled/value-await-module.js"><reason></reason></test>
<test id="language/statements/let/dstr/ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/let/dstr/ary-ptrn-rest-init-id.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>
@ -10105,7 +9680,6 @@
<test id="language/statements/try/cptn-finally-wo-catch.js"><reason></reason></test>
<test id="language/statements/try/cptn-try.js"><reason></reason></test>
<test id="language/statements/try/dstr/ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/try/dstr/ary-ptrn-rest-init-id.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>
@ -10115,7 +9689,6 @@
<test id="language/statements/try/tco-finally.js"><reason></reason></test>
<test id="language/statements/variable/binding-resolution.js"><reason></reason></test>
<test id="language/statements/variable/dstr/ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/variable/dstr/ary-ptrn-rest-init-id.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>