summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/statements/for-inof-coverinitname-destr-assign.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /js/src/tests/non262/statements/for-inof-coverinitname-destr-assign.js
parentInitial commit. (diff)
downloadfirefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz
firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/tests/non262/statements/for-inof-coverinitname-destr-assign.js')
-rw-r--r--js/src/tests/non262/statements/for-inof-coverinitname-destr-assign.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/js/src/tests/non262/statements/for-inof-coverinitname-destr-assign.js b/js/src/tests/non262/statements/for-inof-coverinitname-destr-assign.js
new file mode 100644
index 0000000000..ba9e409599
--- /dev/null
+++ b/js/src/tests/non262/statements/for-inof-coverinitname-destr-assign.js
@@ -0,0 +1,55 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const defaultValue = "default-value";
+const unreachable = () => { throw "unreachable"; };
+
+// for-in statement, object destructuring.
+var forIn;
+for ({forIn = defaultValue} in {"": null});
+assertEq(forIn, defaultValue);
+
+forIn = undefined;
+String.prototype.forIn = defaultValue;
+for ({forIn = unreachable()} in {"": null});
+delete String.prototype.forIn;
+assertEq(forIn, defaultValue);
+
+// for-in statement, array destructuring.
+forIn = undefined;
+for ([forIn = defaultValue] in {"": null});
+assertEq(forIn, defaultValue);
+
+forIn = undefined;
+for ([forIn = unreachable()] in {"ABC": null});
+assertEq(forIn, "A");
+
+
+// for-of statement, object destructuring.
+var forOf;
+for ({forOf = defaultValue} of [{}]);
+assertEq(forOf, defaultValue);
+
+forOf = undefined;
+for ({forOf = unreachable()} of [{forOf: defaultValue}]);
+assertEq(forOf, defaultValue);
+
+// for-of statement, array destructuring.
+forOf = undefined;
+for ([forOf = defaultValue] of [[]]);
+assertEq(forOf, defaultValue);
+
+forOf = undefined;
+for ([forOf = unreachable()] of [[defaultValue]]);
+assertEq(forOf, defaultValue);
+
+
+// for-statement, object destructuring.
+assertThrowsInstanceOf(() => eval(`
+ for ({invalid = 0};;);
+`), SyntaxError);
+
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);