/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/licenses/publicdomain/ */ let length; let iterable = { [Symbol.iterator]() { return this; }, next() { length = arguments.length; return {done: true}; } }; new Map(iterable); // ensure no arguments are passed to next() during construction (Bug 1197095) assertEq(length, 0); let typeofThis; Object.defineProperty(Number.prototype, Symbol.iterator, { value() { "use strict"; typeofThis = typeof this; return { next() { return {done: true}; } }; } }); new Map(0); // ensure that iterable objects retain their type (Bug 1197094) assertEq(typeofThis, "number"); if (typeof reportCompare === "function") reportCompare(0, 0);