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