Source code

Revision control

Copy as Markdown

Other Tools

// |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);