summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/AsyncIterator/prototype/clobber-symbol.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/non262/AsyncIterator/prototype/clobber-symbol.js')
-rw-r--r--js/src/tests/non262/AsyncIterator/prototype/clobber-symbol.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/js/src/tests/non262/AsyncIterator/prototype/clobber-symbol.js b/js/src/tests/non262/AsyncIterator/prototype/clobber-symbol.js
new file mode 100644
index 0000000000..5db6b2276f
--- /dev/null
+++ b/js/src/tests/non262/AsyncIterator/prototype/clobber-symbol.js
@@ -0,0 +1,50 @@
+// |reftest| skip-if(!this.hasOwnProperty('AsyncIterator'))
+//
+//
+
+/*---
+esid: pending
+description: %AsyncIterator.prototype% methods work even if the global Symbol has been clobbered.
+info: >
+ Iterator Helpers proposal 2.1.6
+features: [iterator-helpers, Symbol.asyncIterator]
+---*/
+
+Symbol = undefined;
+assertThrowsInstanceOf(() => Symbol.asyncIterator, TypeError);
+
+async function* gen(value) {
+ yield value;
+}
+
+const lazyMethods = [
+ iter => iter.map(x => x),
+ iter => iter.filter(x => x),
+ iter => iter.take(1),
+ iter => iter.drop(0),
+ iter => iter.asIndexedPairs(),
+ iter => iter.flatMap(gen),
+];
+
+const strictMethods = [
+ iter => iter.reduce((_, x) => x, undefined),
+ iter => iter.toArray(),
+ iter => iter.forEach(() => undefined),
+ iter => iter.some(x => true),
+ iter => iter.every(x => true),
+ iter => iter.find(x => true),
+];
+
+(async () => {
+ for (const method of lazyMethods) {
+ const {value} = await method(gen('value')).next();
+ assertEq(Array.isArray(value) ? value[1] : value, 'value');
+ }
+
+ for (const method of strictMethods) {
+ await method(gen('value'));
+ }
+})();
+
+if (typeof reportCompare == 'function')
+ reportCompare(0, 0);