26 lines
610 B
JavaScript
26 lines
610 B
JavaScript
let iterable = function* fn() {
|
|
yield 1;
|
|
yield 2;
|
|
}();
|
|
|
|
let iteratorMethod = iterable[Symbol.iterator];
|
|
iterable[Symbol.iterator] = undefined;
|
|
|
|
expect(() => {
|
|
[...iterable];
|
|
}).toThrow(/non-iterable/);
|
|
|
|
// In older envs, regenerator uses @@iterator.
|
|
// In those browser Babel must delegate to Array.from, which
|
|
// needs to be polyfilled by the user and support @@iterator.
|
|
iterable["@@iterator"] = iteratorMethod;
|
|
Array.from = (it) => {
|
|
var i = it["@@iterator"](), arr = [], r;
|
|
while (!(r = it.next()).done) arr.push(r.value);
|
|
return arr;
|
|
};
|
|
|
|
let res = [...iterable];
|
|
|
|
expect(res).toEqual([1, 2]);
|