aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/compiler/qv4codegen.cpp34
-rw-r--r--src/qml/compiler/qv4instr_moth.cpp1
-rw-r--r--src/qml/compiler/qv4instr_moth_p.h2
-rw-r--r--src/qml/jit/qv4jit.cpp5
-rw-r--r--src/qml/jit/qv4jit_p.h2
-rw-r--r--src/qml/jsruntime/qv4runtime.cpp4
-rw-r--r--src/qml/jsruntime/qv4runtimeapi_p.h2
-rw-r--r--src/qml/jsruntime/qv4vme_moth.cpp2
-rw-r--r--tests/auto/qml/ecmascripttests/TestExpectations63
9 files changed, 36 insertions, 79 deletions
diff --git a/src/qml/compiler/qv4codegen.cpp b/src/qml/compiler/qv4codegen.cpp
index 97b71ddbcc..ffb318168c 100644
--- a/src/qml/compiler/qv4codegen.cpp
+++ b/src/qml/compiler/qv4codegen.cpp
@@ -476,27 +476,44 @@ void Codegen::destructureElementList(const Codegen::Reference &array, PatternEle
{
RegisterScope scope(this);
- int index = 0;
+ Reference iterator = Reference::fromStackSlot(this);
+
+ array.loadInAccumulator();
+ Instruction::GetIterator iteratorObjInstr;
+ iteratorObjInstr.iterator = 1; // ForEachType::Of
+ bytecodeGenerator->addInstruction(iteratorObjInstr);
+ iterator.storeConsumeAccumulator();
+
+ BytecodeGenerator::Label end = bytecodeGenerator->newLabel();
+
for (PatternElementList *p = bindingList; p; p = p->next) {
- for (Elision *elision = p->elision; elision; elision = elision->next)
- ++index;
+ for (Elision *elision = p->elision; elision; elision = elision->next) {
+ iterator.loadInAccumulator();
+ Instruction::IteratorNext next;
+ next.returnUndefinedWhenDone = true;
+ bytecodeGenerator->addInstruction(next);
+ }
RegisterScope scope(this);
- Reference idx = Reference::fromConst(this, Encode(index));
- Reference property = Reference::fromSubscript(array, idx);
+ iterator.loadInAccumulator();
+ Instruction::IteratorNext next;
+ next.returnUndefinedWhenDone = true;
+ bytecodeGenerator->addInstruction(next);
PatternElement *e = p->element;
if (!e)
continue;
if (e->type != PatternElement::RestElement) {
- initializeAndDestructureBindingElement(e, property);
- if (hasError)
+ initializeAndDestructureBindingElement(e, Reference::fromAccumulator(this));
+ if (hasError) {
+ end.link();
return;
+ }
} else {
throwSyntaxError(bindingList->firstSourceLocation(), QString::fromLatin1("Support for rest elements in binding arrays not implemented!"));
}
- ++index;
}
+ end.link();
}
void Codegen::destructurePattern(Pattern *p, const Reference &rhs)
@@ -2666,6 +2683,7 @@ bool Codegen::visit(ForEachStatement *ast)
in.link();
iterator.loadInAccumulator();
Instruction::IteratorNext next;
+ next.returnUndefinedWhenDone = false;
bytecodeGenerator->addInstruction(next);
Instruction::JumpEmpty jump;
BytecodeGenerator::Jump done = bytecodeGenerator->addJumpInstruction(jump);
diff --git a/src/qml/compiler/qv4instr_moth.cpp b/src/qml/compiler/qv4instr_moth.cpp
index 58aa7d7cfd..7446848fb5 100644
--- a/src/qml/compiler/qv4instr_moth.cpp
+++ b/src/qml/compiler/qv4instr_moth.cpp
@@ -434,6 +434,7 @@ void dumpBytecode(const char *code, int len, int nLocals, int nFormals, int /*st
MOTH_END_INSTR(GetIterator)
MOTH_BEGIN_INSTR(IteratorNext)
+ d << returnUndefinedWhenDone;
MOTH_END_INSTR(IteratorNext)
MOTH_BEGIN_INSTR(DeleteMember)
diff --git a/src/qml/compiler/qv4instr_moth_p.h b/src/qml/compiler/qv4instr_moth_p.h
index 301a43a519..de01b808e9 100644
--- a/src/qml/compiler/qv4instr_moth_p.h
+++ b/src/qml/compiler/qv4instr_moth_p.h
@@ -122,7 +122,7 @@ QT_BEGIN_NAMESPACE
#define INSTR_PopScriptContext(op) INSTRUCTION(op, PopScriptContext, 0)
#define INSTR_PopContext(op) INSTRUCTION(op, PopContext, 1, reg)
#define INSTR_GetIterator(op) INSTRUCTION(op, GetIterator, 1, iterator)
-#define INSTR_IteratorNext(op) INSTRUCTION(op, IteratorNext, 0)
+#define INSTR_IteratorNext(op) INSTRUCTION(op, IteratorNext, 1, returnUndefinedWhenDone)
#define INSTR_DeleteMember(op) INSTRUCTION(op, DeleteMember, 2, member, base)
#define INSTR_DeleteSubscript(op) INSTRUCTION(op, DeleteSubscript, 2, base, index)
#define INSTR_DeleteName(op) INSTRUCTION(op, DeleteName, 1, name)
diff --git a/src/qml/jit/qv4jit.cpp b/src/qml/jit/qv4jit.cpp
index 77024176ae..e0a5a0590c 100644
--- a/src/qml/jit/qv4jit.cpp
+++ b/src/qml/jit/qv4jit.cpp
@@ -714,10 +714,11 @@ void BaselineJIT::generate_GetIterator(int iterator)
as->checkException();
}
-void BaselineJIT::generate_IteratorNext()
+void BaselineJIT::generate_IteratorNext(int returnUndefinedWhenDone)
{
as->saveAccumulatorInFrame();
- as->prepareCallWithArgCount(2);
+ as->prepareCallWithArgCount(3);
+ as->passInt32AsArg(returnUndefinedWhenDone, 2);
as->passAccumulatorAsArg(1);
as->passEngineAsArg(0);
JIT_GENERATE_RUNTIME_CALL(Runtime::method_iteratorNext, Assembler::ResultInAccumulator);
diff --git a/src/qml/jit/qv4jit_p.h b/src/qml/jit/qv4jit_p.h
index d395ea908c..942b96071f 100644
--- a/src/qml/jit/qv4jit_p.h
+++ b/src/qml/jit/qv4jit_p.h
@@ -186,7 +186,7 @@ public:
void generate_PopScriptContext() override;
void generate_PopContext(int reg) override;
void generate_GetIterator(int iterator) override;
- void generate_IteratorNext() override;
+ void generate_IteratorNext(int returnUndefinedWhenDone) override;
void generate_DeleteMember(int member, int base) override;
void generate_DeleteSubscript(int base, int index) override;
void generate_DeleteName(int name) override;
diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp
index eadbcb9557..312ab6f2d3 100644
--- a/src/qml/jsruntime/qv4runtime.cpp
+++ b/src/qml/jsruntime/qv4runtime.cpp
@@ -715,7 +715,7 @@ ReturnedValue Runtime::method_getIterator(ExecutionEngine *engine, const Value &
return engine->newForInIteratorObject(o)->asReturnedValue();
}
-ReturnedValue Runtime::method_iteratorNext(ExecutionEngine *engine, const Value &iterator)
+ReturnedValue Runtime::method_iteratorNext(ExecutionEngine *engine, const Value &iterator, int returnUndefinedWhenDone)
{
Q_ASSERT(iterator.isObject());
@@ -729,7 +729,7 @@ ReturnedValue Runtime::method_iteratorNext(ExecutionEngine *engine, const Value
return engine->throwTypeError();
ScopedValue v(scope, o->get(engine->id_done()));
if (v->toBoolean() == true)
- return Primitive::emptyValue().asReturnedValue();
+ return returnUndefinedWhenDone ? Encode::undefined() : Primitive::emptyValue().asReturnedValue();
return o->get(engine->id_value());
}
diff --git a/src/qml/jsruntime/qv4runtimeapi_p.h b/src/qml/jsruntime/qv4runtimeapi_p.h
index 1e14c23d7e..0b46a1627d 100644
--- a/src/qml/jsruntime/qv4runtimeapi_p.h
+++ b/src/qml/jsruntime/qv4runtimeapi_p.h
@@ -146,7 +146,7 @@ struct ExceptionCheck<void (*)(QV4::NoThrowEngine *, A, B, C)> {
\
/* for-in, for-of and array destructuring */ \
F(ReturnedValue, getIterator, (ExecutionEngine *engine, const Value &in, int iterator)) \
- F(ReturnedValue, iteratorNext, (ExecutionEngine *engine, const Value &iterator)) \
+ F(ReturnedValue, iteratorNext, (ExecutionEngine *engine, const Value &iterator, int returnUndefinedWhenDone)) \
\
/* unary operators */ \
F(ReturnedValue, uMinus, (const Value &value)) \
diff --git a/src/qml/jsruntime/qv4vme_moth.cpp b/src/qml/jsruntime/qv4vme_moth.cpp
index 9fd57e0dcb..3565ec10ae 100644
--- a/src/qml/jsruntime/qv4vme_moth.cpp
+++ b/src/qml/jsruntime/qv4vme_moth.cpp
@@ -961,7 +961,7 @@ QV4::ReturnedValue VME::interpret(CppStackFrame &frame, const uchar *code)
MOTH_BEGIN_INSTR(IteratorNext)
STORE_ACC();
- acc = Runtime::method_iteratorNext(engine, accumulator);
+ acc = Runtime::method_iteratorNext(engine, accumulator, returnUndefinedWhenDone);
CHECK_EXCEPTION;
MOTH_END_INSTR(IteratorNext)
diff --git a/tests/auto/qml/ecmascripttests/TestExpectations b/tests/auto/qml/ecmascripttests/TestExpectations
index c2607e60d7..6d32883cb1 100644
--- a/tests/auto/qml/ecmascripttests/TestExpectations
+++ b/tests/auto/qml/ecmascripttests/TestExpectations
@@ -3325,13 +3325,11 @@ language/expressions/assignment/dstr-array-elem-init-fn-name-class.js fails
language/expressions/assignment/dstr-array-elem-init-let.js fails
language/expressions/assignment/dstr-array-elem-iter-nrml-close-err.js fails
language/expressions/assignment/dstr-array-elem-iter-nrml-close-null.js fails
-language/expressions/assignment/dstr-array-elem-iter-nrml-close-skip.js fails
language/expressions/assignment/dstr-array-elem-iter-nrml-close.js fails
language/expressions/assignment/dstr-array-elem-iter-rtrn-close-err.js fails
language/expressions/assignment/dstr-array-elem-iter-rtrn-close-null.js fails
language/expressions/assignment/dstr-array-elem-iter-rtrn-close.js fails
language/expressions/assignment/dstr-array-elem-iter-thrw-close-err.js fails
-language/expressions/assignment/dstr-array-elem-iter-thrw-close-skip.js fails
language/expressions/assignment/dstr-array-elem-iter-thrw-close.js fails
language/expressions/assignment/dstr-array-elem-nested-array-yield-expr.js fails
language/expressions/assignment/dstr-array-elem-nested-array-yield-ident-valid.js sloppyFails
@@ -3351,13 +3349,11 @@ language/expressions/assignment/dstr-array-elem-trlg-iter-elision-iter-nrml-clos
language/expressions/assignment/dstr-array-elem-trlg-iter-elision-iter-nrml-close.js fails
language/expressions/assignment/dstr-array-elem-trlg-iter-list-nrml-close-err.js fails
language/expressions/assignment/dstr-array-elem-trlg-iter-list-nrml-close-null.js fails
-language/expressions/assignment/dstr-array-elem-trlg-iter-list-nrml-close-skip.js fails
language/expressions/assignment/dstr-array-elem-trlg-iter-list-nrml-close.js fails
language/expressions/assignment/dstr-array-elem-trlg-iter-list-rtrn-close-err.js fails
language/expressions/assignment/dstr-array-elem-trlg-iter-list-rtrn-close-null.js fails
language/expressions/assignment/dstr-array-elem-trlg-iter-list-rtrn-close.js fails
language/expressions/assignment/dstr-array-elem-trlg-iter-list-thrw-close-err.js fails
-language/expressions/assignment/dstr-array-elem-trlg-iter-list-thrw-close-skip.js fails
language/expressions/assignment/dstr-array-elem-trlg-iter-list-thrw-close.js fails
language/expressions/assignment/dstr-array-elem-trlg-iter-rest-nrml-close-skip.js fails
language/expressions/assignment/dstr-array-elem-trlg-iter-rest-rtrn-close-err.js fails
@@ -3371,19 +3367,9 @@ language/expressions/assignment/dstr-array-elision-iter-nrml-close-err.js fails
language/expressions/assignment/dstr-array-elision-iter-nrml-close-null.js fails
language/expressions/assignment/dstr-array-elision-iter-nrml-close-skip.js fails
language/expressions/assignment/dstr-array-elision-iter-nrml-close.js fails
-language/expressions/assignment/dstr-array-elision-val-bool.js fails
-language/expressions/assignment/dstr-array-elision-val-null.js fails
-language/expressions/assignment/dstr-array-elision-val-num.js fails
-language/expressions/assignment/dstr-array-elision-val-symbol.js fails
-language/expressions/assignment/dstr-array-elision-val-undef.js fails
language/expressions/assignment/dstr-array-empty-iter-close-err.js fails
language/expressions/assignment/dstr-array-empty-iter-close-null.js fails
language/expressions/assignment/dstr-array-empty-iter-close.js fails
-language/expressions/assignment/dstr-array-empty-val-bool.js fails
-language/expressions/assignment/dstr-array-empty-val-null.js fails
-language/expressions/assignment/dstr-array-empty-val-num.js fails
-language/expressions/assignment/dstr-array-empty-val-symbol.js fails
-language/expressions/assignment/dstr-array-empty-val-undef.js fails
language/expressions/assignment/dstr-array-iteration.js fails
language/expressions/assignment/dstr-array-rest-after-element.js fails
language/expressions/assignment/dstr-array-rest-after-elision.js fails
@@ -4365,7 +4351,6 @@ language/expressions/function/dstr-ary-ptrn-elem-id-init-fn-name-class.js fails
language/expressions/function/dstr-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/expressions/function/dstr-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/expressions/function/dstr-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/expressions/function/dstr-ary-ptrn-elision-step-err.js fails
language/expressions/function/dstr-ary-ptrn-elision.js fails
language/expressions/function/dstr-ary-ptrn-rest-ary-elem.js fails
language/expressions/function/dstr-ary-ptrn-rest-ary-elision.js fails
@@ -4388,7 +4373,6 @@ language/expressions/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js f
language/expressions/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/expressions/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/expressions/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/expressions/function/dstr-dflt-ary-ptrn-elision-step-err.js fails
language/expressions/function/dstr-dflt-ary-ptrn-elision.js fails
language/expressions/function/dstr-dflt-ary-ptrn-rest-ary-elem.js fails
language/expressions/function/dstr-dflt-ary-ptrn-rest-ary-elision.js fails
@@ -4439,7 +4423,6 @@ language/expressions/generators/dstr-ary-ptrn-elem-id-init-fn-name-class.js fail
language/expressions/generators/dstr-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/expressions/generators/dstr-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/expressions/generators/dstr-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/expressions/generators/dstr-ary-ptrn-elision-step-err.js fails
language/expressions/generators/dstr-ary-ptrn-elision.js fails
language/expressions/generators/dstr-ary-ptrn-rest-ary-elem.js fails
language/expressions/generators/dstr-ary-ptrn-rest-ary-elision.js fails
@@ -4462,7 +4445,6 @@ language/expressions/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
language/expressions/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/expressions/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/expressions/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/expressions/generators/dstr-dflt-ary-ptrn-elision-step-err.js fails
language/expressions/generators/dstr-dflt-ary-ptrn-elision.js fails
language/expressions/generators/dstr-dflt-ary-ptrn-rest-ary-elem.js fails
language/expressions/generators/dstr-dflt-ary-ptrn-rest-ary-elision.js fails
@@ -4579,7 +4561,6 @@ language/expressions/object/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-class.js
language/expressions/object/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/expressions/object/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/expressions/object/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/expressions/object/dstr-gen-meth-ary-ptrn-elision-step-err.js fails
language/expressions/object/dstr-gen-meth-ary-ptrn-elision.js fails
language/expressions/object/dstr-gen-meth-ary-ptrn-rest-ary-elem.js fails
language/expressions/object/dstr-gen-meth-ary-ptrn-rest-ary-elision.js fails
@@ -4602,7 +4583,6 @@ language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-cla
language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-elision-step-err.js fails
language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-elision.js fails
language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-ary-elem.js fails
language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-ary-elision.js fails
@@ -4635,7 +4615,6 @@ language/expressions/object/dstr-meth-ary-ptrn-elem-id-init-fn-name-class.js fai
language/expressions/object/dstr-meth-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/expressions/object/dstr-meth-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/expressions/object/dstr-meth-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/expressions/object/dstr-meth-ary-ptrn-elision-step-err.js fails
language/expressions/object/dstr-meth-ary-ptrn-elision.js fails
language/expressions/object/dstr-meth-ary-ptrn-rest-ary-elem.js fails
language/expressions/object/dstr-meth-ary-ptrn-rest-ary-elision.js fails
@@ -4658,7 +4637,6 @@ language/expressions/object/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.j
language/expressions/object/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/expressions/object/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/expressions/object/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/expressions/object/dstr-meth-dflt-ary-ptrn-elision-step-err.js fails
language/expressions/object/dstr-meth-dflt-ary-ptrn-elision.js fails
language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-ary-elem.js fails
language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-ary-elision.js fails
@@ -5936,7 +5914,6 @@ language/statements/const/dstr-ary-ptrn-elem-id-init-fn-name-class.js fails
language/statements/const/dstr-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/statements/const/dstr-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/statements/const/dstr-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/statements/const/dstr-ary-ptrn-elision-step-err.js fails
language/statements/const/dstr-ary-ptrn-elision.js fails
language/statements/const/dstr-ary-ptrn-rest-ary-elem.js fails
language/statements/const/dstr-ary-ptrn-rest-ary-elision.js fails
@@ -5981,16 +5958,13 @@ language/statements/for-of/body-dstr-assign-error.js fails
language/statements/for-of/body-put-error.js fails
language/statements/for-of/dstr-array-elem-init-fn-name-class.js fails
language/statements/for-of/dstr-array-elem-init-let.js fails
-language/statements/for-of/dstr-array-elem-iter-get-err.js fails
language/statements/for-of/dstr-array-elem-iter-nrml-close-err.js fails
language/statements/for-of/dstr-array-elem-iter-nrml-close-null.js fails
-language/statements/for-of/dstr-array-elem-iter-nrml-close-skip.js fails
language/statements/for-of/dstr-array-elem-iter-nrml-close.js fails
language/statements/for-of/dstr-array-elem-iter-rtrn-close-err.js fails
language/statements/for-of/dstr-array-elem-iter-rtrn-close-null.js fails
language/statements/for-of/dstr-array-elem-iter-rtrn-close.js fails
language/statements/for-of/dstr-array-elem-iter-thrw-close-err.js fails
-language/statements/for-of/dstr-array-elem-iter-thrw-close-skip.js fails
language/statements/for-of/dstr-array-elem-iter-thrw-close.js fails
language/statements/for-of/dstr-array-elem-nested-array-yield-expr.js fails
language/statements/for-of/dstr-array-elem-nested-array-yield-ident-valid.js sloppyFails
@@ -6008,16 +5982,13 @@ language/statements/for-of/dstr-array-elem-trlg-iter-elision-iter-nrml-close-err
language/statements/for-of/dstr-array-elem-trlg-iter-elision-iter-nrml-close-null.js fails
language/statements/for-of/dstr-array-elem-trlg-iter-elision-iter-nrml-close-skip.js fails
language/statements/for-of/dstr-array-elem-trlg-iter-elision-iter-nrml-close.js fails
-language/statements/for-of/dstr-array-elem-trlg-iter-get-err.js fails
language/statements/for-of/dstr-array-elem-trlg-iter-list-nrml-close-err.js fails
language/statements/for-of/dstr-array-elem-trlg-iter-list-nrml-close-null.js fails
-language/statements/for-of/dstr-array-elem-trlg-iter-list-nrml-close-skip.js fails
language/statements/for-of/dstr-array-elem-trlg-iter-list-nrml-close.js fails
language/statements/for-of/dstr-array-elem-trlg-iter-list-rtrn-close-err.js fails
language/statements/for-of/dstr-array-elem-trlg-iter-list-rtrn-close-null.js fails
language/statements/for-of/dstr-array-elem-trlg-iter-list-rtrn-close.js fails
language/statements/for-of/dstr-array-elem-trlg-iter-list-thrw-close-err.js fails
-language/statements/for-of/dstr-array-elem-trlg-iter-list-thrw-close-skip.js fails
language/statements/for-of/dstr-array-elem-trlg-iter-list-thrw-close.js fails
language/statements/for-of/dstr-array-elem-trlg-iter-rest-nrml-close-skip.js fails
language/statements/for-of/dstr-array-elem-trlg-iter-rest-rtrn-close-err.js fails
@@ -6027,25 +5998,13 @@ language/statements/for-of/dstr-array-elem-trlg-iter-rest-thrw-close-err.js fail
language/statements/for-of/dstr-array-elem-trlg-iter-rest-thrw-close-skip.js fails
language/statements/for-of/dstr-array-elem-trlg-iter-rest-thrw-close.js fails
language/statements/for-of/dstr-array-elision-iter-abpt.js fails
-language/statements/for-of/dstr-array-elision-iter-get-err.js fails
language/statements/for-of/dstr-array-elision-iter-nrml-close-err.js fails
language/statements/for-of/dstr-array-elision-iter-nrml-close-null.js fails
language/statements/for-of/dstr-array-elision-iter-nrml-close-skip.js fails
language/statements/for-of/dstr-array-elision-iter-nrml-close.js fails
-language/statements/for-of/dstr-array-elision-val-bool.js fails
-language/statements/for-of/dstr-array-elision-val-null.js fails
-language/statements/for-of/dstr-array-elision-val-num.js fails
-language/statements/for-of/dstr-array-elision-val-symbol.js fails
-language/statements/for-of/dstr-array-elision-val-undef.js fails
language/statements/for-of/dstr-array-empty-iter-close-err.js fails
language/statements/for-of/dstr-array-empty-iter-close-null.js fails
language/statements/for-of/dstr-array-empty-iter-close.js fails
-language/statements/for-of/dstr-array-empty-iter-get-err.js fails
-language/statements/for-of/dstr-array-empty-val-bool.js fails
-language/statements/for-of/dstr-array-empty-val-null.js fails
-language/statements/for-of/dstr-array-empty-val-num.js fails
-language/statements/for-of/dstr-array-empty-val-symbol.js fails
-language/statements/for-of/dstr-array-empty-val-undef.js fails
language/statements/for-of/dstr-array-iteration.js fails
language/statements/for-of/dstr-array-rest-after-element.js fails
language/statements/for-of/dstr-array-rest-after-elision.js fails
@@ -6119,8 +6078,6 @@ language/statements/for-of/dstr-const-ary-ptrn-elem-obj-prop-id-init.js fails
language/statements/for-of/dstr-const-ary-ptrn-elem-obj-prop-id.js fails
language/statements/for-of/dstr-const-ary-ptrn-elem-obj-val-null.js fails
language/statements/for-of/dstr-const-ary-ptrn-elem-obj-val-undef.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elision-iter-close.js fails
-language/statements/for-of/dstr-const-ary-ptrn-elision-step-err.js fails
language/statements/for-of/dstr-const-ary-ptrn-elision.js fails
language/statements/for-of/dstr-const-ary-ptrn-rest-ary-elem.js fails
language/statements/for-of/dstr-const-ary-ptrn-rest-ary-elision.js fails
@@ -6171,8 +6128,6 @@ language/statements/for-of/dstr-let-ary-ptrn-elem-id-init-fn-name-class.js fails
language/statements/for-of/dstr-let-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/statements/for-of/dstr-let-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/statements/for-of/dstr-let-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/statements/for-of/dstr-let-ary-ptrn-elision-iter-close.js fails
-language/statements/for-of/dstr-let-ary-ptrn-elision-step-err.js fails
language/statements/for-of/dstr-let-ary-ptrn-elision.js fails
language/statements/for-of/dstr-let-ary-ptrn-rest-ary-elem.js fails
language/statements/for-of/dstr-let-ary-ptrn-rest-ary-elision.js fails
@@ -6232,8 +6187,6 @@ language/statements/for-of/dstr-var-ary-ptrn-elem-id-init-fn-name-class.js fails
language/statements/for-of/dstr-var-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/statements/for-of/dstr-var-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/statements/for-of/dstr-var-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/statements/for-of/dstr-var-ary-ptrn-elision-iter-close.js fails
-language/statements/for-of/dstr-var-ary-ptrn-elision-step-err.js fails
language/statements/for-of/dstr-var-ary-ptrn-elision.js fails
language/statements/for-of/dstr-var-ary-ptrn-rest-ary-elem.js fails
language/statements/for-of/dstr-var-ary-ptrn-rest-ary-elision.js fails
@@ -6298,8 +6251,6 @@ language/statements/for/dstr-const-ary-ptrn-elem-id-init-fn-name-class.js fails
language/statements/for/dstr-const-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/statements/for/dstr-const-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/statements/for/dstr-const-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/statements/for/dstr-const-ary-ptrn-elision-iter-close.js fails
-language/statements/for/dstr-const-ary-ptrn-elision-step-err.js fails
language/statements/for/dstr-const-ary-ptrn-elision.js fails
language/statements/for/dstr-const-ary-ptrn-rest-ary-elem.js fails
language/statements/for/dstr-const-ary-ptrn-rest-ary-elision.js fails
@@ -6328,8 +6279,6 @@ language/statements/for/dstr-let-ary-ptrn-elem-id-init-fn-name-class.js fails
language/statements/for/dstr-let-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/statements/for/dstr-let-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/statements/for/dstr-let-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/statements/for/dstr-let-ary-ptrn-elision-iter-close.js fails
-language/statements/for/dstr-let-ary-ptrn-elision-step-err.js fails
language/statements/for/dstr-let-ary-ptrn-elision.js fails
language/statements/for/dstr-let-ary-ptrn-rest-ary-elem.js fails
language/statements/for/dstr-let-ary-ptrn-rest-ary-elision.js fails
@@ -6350,7 +6299,6 @@ language/statements/for/dstr-let-obj-ptrn-id-init-fn-name-cover.js fails
language/statements/for/dstr-let-obj-ptrn-id-init-fn-name-fn.js fails
language/statements/for/dstr-let-obj-ptrn-id-init-fn-name-gen.js fails
language/statements/for/dstr-var-ary-init-iter-close.js fails
-language/statements/for/dstr-var-ary-init-iter-get-err.js fails
language/statements/for/dstr-var-ary-ptrn-elem-ary-elision-init.js fails
language/statements/for/dstr-var-ary-ptrn-elem-ary-rest-init.js fails
language/statements/for/dstr-var-ary-ptrn-elem-ary-rest-iter.js fails
@@ -6359,10 +6307,6 @@ language/statements/for/dstr-var-ary-ptrn-elem-id-init-fn-name-class.js fails
language/statements/for/dstr-var-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/statements/for/dstr-var-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/statements/for/dstr-var-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/statements/for/dstr-var-ary-ptrn-elem-id-iter-step-err.js fails
-language/statements/for/dstr-var-ary-ptrn-elem-id-iter-val-err.js fails
-language/statements/for/dstr-var-ary-ptrn-elision-iter-close.js fails
-language/statements/for/dstr-var-ary-ptrn-elision-step-err.js fails
language/statements/for/dstr-var-ary-ptrn-elision.js fails
language/statements/for/dstr-var-ary-ptrn-rest-ary-elem.js fails
language/statements/for/dstr-var-ary-ptrn-rest-ary-elision.js fails
@@ -6406,7 +6350,6 @@ language/statements/function/dstr-ary-ptrn-elem-id-init-fn-name-class.js fails
language/statements/function/dstr-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/statements/function/dstr-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/statements/function/dstr-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/statements/function/dstr-ary-ptrn-elision-step-err.js fails
language/statements/function/dstr-ary-ptrn-elision.js fails
language/statements/function/dstr-ary-ptrn-rest-ary-elem.js fails
language/statements/function/dstr-ary-ptrn-rest-ary-elision.js fails
@@ -6429,7 +6372,6 @@ language/statements/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js fa
language/statements/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/statements/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/statements/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/statements/function/dstr-dflt-ary-ptrn-elision-step-err.js fails
language/statements/function/dstr-dflt-ary-ptrn-elision.js fails
language/statements/function/dstr-dflt-ary-ptrn-rest-ary-elem.js fails
language/statements/function/dstr-dflt-ary-ptrn-rest-ary-elision.js fails
@@ -6478,7 +6420,6 @@ language/statements/generators/dstr-ary-ptrn-elem-id-init-fn-name-class.js fails
language/statements/generators/dstr-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/statements/generators/dstr-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/statements/generators/dstr-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/statements/generators/dstr-ary-ptrn-elision-step-err.js fails
language/statements/generators/dstr-ary-ptrn-elision.js fails
language/statements/generators/dstr-ary-ptrn-rest-ary-elem.js fails
language/statements/generators/dstr-ary-ptrn-rest-ary-elision.js fails
@@ -6501,7 +6442,6 @@ language/statements/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
language/statements/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/statements/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/statements/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/statements/generators/dstr-dflt-ary-ptrn-elision-step-err.js fails
language/statements/generators/dstr-dflt-ary-ptrn-elision.js fails
language/statements/generators/dstr-dflt-ary-ptrn-rest-ary-elem.js fails
language/statements/generators/dstr-dflt-ary-ptrn-rest-ary-elision.js fails
@@ -6561,7 +6501,6 @@ language/statements/let/dstr-ary-ptrn-elem-id-init-fn-name-class.js fails
language/statements/let/dstr-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/statements/let/dstr-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/statements/let/dstr-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/statements/let/dstr-ary-ptrn-elision-step-err.js fails
language/statements/let/dstr-ary-ptrn-elision.js fails
language/statements/let/dstr-ary-ptrn-rest-ary-elem.js fails
language/statements/let/dstr-ary-ptrn-rest-ary-elision.js fails
@@ -6616,7 +6555,6 @@ language/statements/try/dstr-ary-ptrn-elem-id-init-fn-name-class.js fails
language/statements/try/dstr-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/statements/try/dstr-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/statements/try/dstr-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/statements/try/dstr-ary-ptrn-elision-step-err.js fails
language/statements/try/dstr-ary-ptrn-elision.js fails
language/statements/try/dstr-ary-ptrn-rest-ary-elem.js fails
language/statements/try/dstr-ary-ptrn-rest-ary-elision.js fails
@@ -6650,7 +6588,6 @@ language/statements/variable/dstr-ary-ptrn-elem-id-init-fn-name-class.js fails
language/statements/variable/dstr-ary-ptrn-elem-id-init-fn-name-cover.js fails
language/statements/variable/dstr-ary-ptrn-elem-id-init-fn-name-fn.js fails
language/statements/variable/dstr-ary-ptrn-elem-id-init-fn-name-gen.js fails
-language/statements/variable/dstr-ary-ptrn-elision-step-err.js fails
language/statements/variable/dstr-ary-ptrn-elision.js fails
language/statements/variable/dstr-ary-ptrn-rest-ary-elem.js fails
language/statements/variable/dstr-ary-ptrn-rest-ary-elision.js fails