summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/Map/iterable.js
blob: cf6b7228abd32d66834b54f7a3eae59ca27ea0d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/* 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);