Implement rest parameter support for destructuring object patterns in for (#4338)
In case of `for (const {...rest} ...) ` there was an incorrectly handling
of the destructuring pattern.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal pgal.usz@partner.samsung.com
This commit is contained in:
@@ -135,3 +135,25 @@ function f8() {
|
||||
rest_compare(b, ["0", "C", "1", "D"])
|
||||
}
|
||||
f8()
|
||||
|
||||
function f9() {
|
||||
var counter = 0;
|
||||
|
||||
for (const { ...rest} in { B: "AA", C: 6.25 }) {
|
||||
switch (counter) {
|
||||
case 0: {
|
||||
/* rest === { '0': 'B' } */
|
||||
assert(rest['0'] === 'B');
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
/* rest === { '0': 'C' } */
|
||||
assert(rest['0'] == 'C');
|
||||
break;
|
||||
}
|
||||
}
|
||||
counter++;
|
||||
}
|
||||
assert(counter === 2);
|
||||
}
|
||||
f9()
|
||||
|
||||
@@ -7489,31 +7489,6 @@
|
||||
<test id="language/statements/class/elements/async-gen-private-method/yield-spread-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/gen-private-method-static/yield-spread-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/gen-private-method/yield-spread-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-of/dstr/const-obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/for-of/dstr/const-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-of/dstr/const-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-of/dstr/let-obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/for-of/dstr/let-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-of/dstr/let-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-of/dstr/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>
|
||||
<!-- END - ES2018: Rest/Spread Properties -->
|
||||
|
||||
<!-- ES2020: Dynamic Import
|
||||
@@ -9242,8 +9217,6 @@
|
||||
<test id="language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-const-async-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-const-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-get-value-err.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-throws.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-unresolvable.js"><reason></reason></test>
|
||||
@@ -9275,8 +9248,6 @@
|
||||
<test id="language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-let-async-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-let-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-get-value-err.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-throws.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-unresolvable.js"><reason></reason></test>
|
||||
@@ -9368,9 +9339,6 @@
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-async-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-get-value-err.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-throws.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-unresolvable.js"><reason></reason></test>
|
||||
@@ -9379,9 +9347,6 @@
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-get-value-err.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-throws.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-unresolvable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-ary-init-iter-get-err.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-throws.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-unresolvable.js"><reason></reason></test>
|
||||
@@ -9405,9 +9370,6 @@
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-ary.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-id.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-async-ary-ptrn-rest-not-final-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-async-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-get-value-err.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-throws.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-unresolvable.js"><reason></reason></test>
|
||||
@@ -9416,9 +9378,6 @@
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-get-value-err.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-throws.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-unresolvable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-var-ary-init-iter-get-err.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-throws.js"><reason></reason></test>
|
||||
<test id="language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-unresolvable.js"><reason></reason></test>
|
||||
|
||||
Reference in New Issue
Block a user