Bug 1377349 - Remove support for nested destructuring in object rest properties. r=shu
--- a/js/src/frontend/Parser.cpp
+++ b/js/src/frontend/Parser.cpp
@@ -4516,17 +4516,22 @@ Parser<ParseHandler, CharT>::objectBindi
if (tt == TOK_TRIPLEDOT) {
tokenStream.consumeKnownToken(TOK_TRIPLEDOT);
uint32_t begin = pos().begin;
TokenKind tt;
if (!tokenStream.getToken(&tt))
return null();
- Node inner = bindingIdentifierOrPattern(kind, yieldHandling, tt);
+ if (!TokenKindIsPossibleIdentifierName(tt)) {
+ error(JSMSG_NO_VARIABLE_NAME);
+ return null();
+ }
+
+ Node inner = bindingIdentifier(kind, yieldHandling);
if (!inner)
return null();
if (!handler.addSpreadProperty(literal, begin, inner))
return null();
} else {
TokenPos namePos = tokenStream.nextToken().pos;
@@ -9476,17 +9481,18 @@ Parser<SyntaxParseHandler, char16_t>::ne
return null();
return handler.newRegExp(SyntaxParseHandler::NodeGeneric, pos(), *this);
}
template <class ParseHandler, typename CharT>
void
Parser<ParseHandler, CharT>::checkDestructuringAssignmentTarget(Node expr, TokenPos exprPos,
- PossibleError* possibleError)
+ PossibleError* possibleError,
+ TargetBehavior behavior)
{
// Return early if a pending destructuring error is already present.
if (possibleError->hasPendingDestructuringError())
return;
if (pc->sc()->needStrictChecks()) {
if (handler.isArgumentsAnyParentheses(expr, context)) {
if (pc->sc()->strict()) {
@@ -9506,16 +9512,25 @@ Parser<ParseHandler, CharT>::checkDestru
} else {
possibleError->setPendingDestructuringWarningAt(exprPos,
JSMSG_BAD_STRICT_ASSIGN_EVAL);
}
return;
}
}
+ if (behavior == TargetBehavior::ForbidAssignmentPattern) {
+ if (handler.isUnparenthesizedDestructuringPattern(expr) ||
+ handler.isParenthesizedDestructuringPattern(expr))
+ {
+ possibleError->setPendingDestructuringErrorAt(exprPos, JSMSG_BAD_DESTRUCT_TARGET);
+ return;
+ }
+ }
+
// The expression must be either a simple assignment target, i.e. a name
// or a property accessor, or a nested destructuring pattern.
if (!handler.isUnparenthesizedDestructuringPattern(expr) &&
!handler.isNameAnyParentheses(expr) &&
!handler.isPropertyAccess(expr))
{
// Parentheses are forbidden around destructuring *patterns* (but
// allowed around names). Use our nicer error message for
@@ -9907,18 +9922,20 @@ Parser<ParseHandler, CharT>::objectLiter
TokenPos innerPos;
if (!tokenStream.peekTokenPos(&innerPos, TokenStream::Operand))
return null();
Node inner = assignExpr(InAllowed, yieldHandling, TripledotProhibited,
possibleError);
if (!inner)
return null();
- if (possibleError)
- checkDestructuringAssignmentTarget(inner, innerPos, possibleError);
+ if (possibleError) {
+ checkDestructuringAssignmentTarget(inner, innerPos, possibleError,
+ TargetBehavior::ForbidAssignmentPattern);
+ }
if (!handler.addSpreadProperty(literal, begin, inner))
return null();
} else {
TokenPos namePos = tokenStream.nextToken().pos;
PropertyType propType;
Node propName = propertyName(yieldHandling, declKind, literal, &propType, &propAtom);
if (!propName)
--- a/js/src/frontend/Parser.h
+++ b/js/src/frontend/Parser.h
@@ -929,18 +929,23 @@ class Parser final : public ParserBase,
Node bindingInitializer(Node lhs, DeclarationKind kind, YieldHandling yieldHandling);
Node bindingIdentifier(DeclarationKind kind, YieldHandling yieldHandling);
Node bindingIdentifierOrPattern(DeclarationKind kind, YieldHandling yieldHandling,
TokenKind tt);
Node objectBindingPattern(DeclarationKind kind, YieldHandling yieldHandling);
Node arrayBindingPattern(DeclarationKind kind, YieldHandling yieldHandling);
+ enum class TargetBehavior {
+ PermitAssignmentPattern,
+ ForbidAssignmentPattern
+ };
void checkDestructuringAssignmentTarget(Node expr, TokenPos exprPos,
- PossibleError* possibleError);
+ PossibleError* possibleError,
+ TargetBehavior behavior = TargetBehavior::PermitAssignmentPattern);
void checkDestructuringAssignmentElement(Node expr, TokenPos exprPos,
PossibleError* possibleError);
Node newNumber(const Token& tok) {
return handler.newNumber(tok.number(), tok.decimalPoint(), tok.pos);
}
static Node null() { return ParseHandler::null(); }
--- a/js/src/tests/js1_8_5/reflect-parse/object-rest.js
+++ b/js/src/tests/js1_8_5/reflect-parse/object-rest.js
@@ -8,28 +8,24 @@ function assertDestrAssign(src, pattern)
assertExpr(`(${src} = 0)`, aExpr("=", pattern, lit(0)));
}
function assertDestrBinding(src, pattern) {
assertDecl(`var ${src} = 0`, varDecl([{id: pattern, init: lit(0)}]));
}
function test() {
- // Target expression must be a simple assignment target or a nested pattern
- // in object assignment patterns.
+ // Target expression must be a simple assignment target in object assignment patterns.
assertDestrAssign("{...x}", objPatt([spread(ident("x"))]));
assertDestrAssign("{...(x)}", objPatt([spread(ident("x"))]));
assertDestrAssign("{...obj.p}", objPatt([spread(dotExpr(ident("obj"), ident("p")))]));
- assertDestrAssign("{...{}}", objPatt([spread(objPatt([]))]));
- assertDestrAssign("{...[]}", objPatt([spread(arrPatt([]))]));
+ assertDestrAssign("{...(obj.p)}", objPatt([spread(dotExpr(ident("obj"), ident("p")))]));
- // Object binding patterns only allow binding identifiers or nested patterns.
+ // Object binding patterns only allow binding identifiers.
assertDestrBinding("{...x}", objPatt([spread(ident("x"))]));
- assertDestrBinding("{...{}}", objPatt([spread(objPatt([]))]));
- assertDestrBinding("{...[]}", objPatt([spread(arrPatt([]))]));
// The rest-property can be preceded by other properties.
for (var assertDestr of [assertDestrAssign, assertDestrBinding]) {
assertDestr("{a, ...x}", objPatt([property(ident("a")), spread(ident("x"))]));
assertDestr("{a: b, ...x}", objPatt([property(ident("a"), ident("b")), spread(ident("x"))]));
assertDestr("{[a]: b, ...x}", objPatt([property(comp(ident("a")), ident("b")), spread(ident("x"))]));
}
--- a/js/src/tests/jstests.list
+++ b/js/src/tests/jstests.list
@@ -527,8 +527,220 @@ skip script test262/language/statements/
skip script test262/language/statements/while/decl-async-fun.js
skip script test262/language/statements/while/decl-async-gen.js
skip script test262/language/statements/with/decl-async-fun.js
skip script test262/language/statements/with/decl-async-gen.js
####################################################
# Tests disabled due to invalid test expectations #
####################################################
+
+# https://github.com/tc39/test262/pull/1072
+skip script test262/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for-await-of/async-func-dstr-let-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-var-async-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for-await-of/async-func-dstr-var-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for-await-of/async-func-dstr-const-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for-await-of/async-func-dstr-var-async-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/generators/dstr-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/generators/dstr-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/generators/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/generators/dstr-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/generators/dstr-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/generators/dstr-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/let/dstr-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/let/dstr-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/let/dstr-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/const/dstr-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/const/dstr-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/const/dstr-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/async-generator/dstr-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/async-generator/dstr-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/async-generator/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/async-generator/dstr-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/async-generator/dstr-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/async-generator/dstr-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/variable/dstr-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/variable/dstr-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/variable/dstr-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/try/dstr-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/try/dstr-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/try/dstr-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/function/dstr-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/function/dstr-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/function/dstr-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/function/dstr-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/function/dstr-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for/dstr-let-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for/dstr-let-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for/dstr-const-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for/dstr-var-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for/dstr-var-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for/dstr-const-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for/dstr-const-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for/dstr-let-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for/dstr-var-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for-of/dstr-let-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for-of/dstr-obj-rest-nested-obj-nested-rest.js
+skip script test262/language/statements/for-of/dstr-let-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for-of/dstr-const-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for-of/dstr-var-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for-of/dstr-var-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for-of/dstr-obj-rest-nested-obj.js
+skip script test262/language/statements/for-of/dstr-obj-rest-obj-own-property.js
+skip script test262/language/statements/for-of/dstr-const-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/for-of/dstr-const-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/for-of/dstr-let-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/for-of/dstr-var-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/class/dstr-async-gen-meth-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/class/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/class/dstr-gen-meth-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/class/dstr-async-gen-meth-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/class/dstr-meth-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/class/dstr-meth-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/class/dstr-async-gen-meth-static-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/class/dstr-async-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/class/dstr-meth-static-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/class/dstr-async-gen-meth-static-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/class/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/class/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/class/dstr-async-gen-meth-static-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/class/dstr-meth-static-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/class/dstr-gen-meth-static-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/class/dstr-async-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/class/dstr-async-gen-meth-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/class/dstr-async-gen-meth-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/class/dstr-meth-obj-ptrn-rest-nested-obj.js
+skip script test262/language/statements/class/dstr-async-gen-meth-static-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/class/dstr-async-gen-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/class/dstr-meth-static-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/class/dstr-async-gen-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/generators/dstr-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/generators/dstr-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/generators/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/generators/dstr-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/generators/dstr-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/generators/dstr-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/async-generator/dstr-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/async-generator/dstr-named-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/async-generator/dstr-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/async-generator/dstr-named-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/async-generator/dstr-named-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/async-generator/dstr-named-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/async-generator/dstr-named-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/async-generator/dstr-named-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/async-generator/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/async-generator/dstr-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/async-generator/dstr-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/async-generator/dstr-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/assignment/dstr-obj-rest-nested-obj-nested-rest.js
+skip script test262/language/expressions/assignment/dstr-obj-rest-nested-obj.js
+skip script test262/language/expressions/assignment/dstr-obj-rest-obj-own-property.js
+skip script test262/language/expressions/function/dstr-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/function/dstr-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/function/dstr-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/function/dstr-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/function/dstr-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/object/dstr-async-gen-meth-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/object/dstr-async-gen-meth-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/object/dstr-meth-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/object/dstr-meth-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/object/dstr-async-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/object/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/object/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/object/dstr-async-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/object/dstr-async-gen-meth-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/object/dstr-async-gen-meth-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/object/dstr-meth-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/arrow-function/dstr-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/arrow-function/dstr-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/arrow-function/dstr-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/arrow-function/dstr-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/class/dstr-async-gen-meth-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/class/dstr-async-gen-meth-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/class/dstr-meth-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/class/dstr-meth-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/class/dstr-async-gen-meth-static-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/class/dstr-async-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/class/dstr-meth-static-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/class/dstr-async-gen-meth-static-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/class/dstr-gen-meth-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/class/dstr-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/class/dstr-async-gen-meth-static-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/class/dstr-meth-static-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/class/dstr-gen-meth-static-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/class/dstr-async-gen-meth-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/class/dstr-async-gen-meth-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/class/dstr-async-gen-meth-dflt-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/class/dstr-meth-obj-ptrn-rest-nested-obj.js
+skip script test262/language/expressions/class/dstr-async-gen-meth-static-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/class/dstr-async-gen-meth-static-dflt-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/class/dstr-meth-static-obj-ptrn-rest-obj-own-property.js
+skip script test262/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/class/dstr-async-gen-meth-static-dflt-obj-ptrn-rest-obj-nested-rest.js
+skip script test262/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-rest-nested-obj.js