diff --git a/__tests__/List.ts b/__tests__/List.ts index a3b2dd0fc4..b0b7eba734 100644 --- a/__tests__/List.ts +++ b/__tests__/List.ts @@ -519,6 +519,14 @@ describe('List', () => { expect(r).toBe(v); }); + it('ensures iter is unmodified', () => { + const v = List.of(1, 2, 3); + const r = v.map((value, index, iter) => { + return iter.get(index - 1); + }); + expect(r.toArray()).toEqual([3, 1, 2]); + }); + it('filters values', () => { const v = List.of('a', 'b', 'c', 'd', 'e', 'f'); const r = v.filter((value, index) => index % 2 === 1); diff --git a/__tests__/Map.ts b/__tests__/Map.ts index 3920af4aae..3553b432d5 100644 --- a/__tests__/Map.ts +++ b/__tests__/Map.ts @@ -261,6 +261,12 @@ describe('Map', () => { expect(r).toBe(m); }); + it('ensures iter is unmodified', () => { + const m = Map({ a: 1, b: 1 }); + const r = m.map((value, key, iter) => 2 * iter.get(key)); + expect(r.toObject()).toEqual({ a: 2, b: 2 }); + }); + it('filters values', () => { const m = Map({ a: 1, b: 2, c: 3, d: 4, e: 5, f: 6 }); const r = m.filter(value => value % 2 === 1); diff --git a/src/List.js b/src/List.js index a20f41fd5b..59126412fd 100644 --- a/src/List.js +++ b/src/List.js @@ -176,7 +176,7 @@ export class List extends IndexedCollection { map(mapper, context) { return this.withMutations(list => { for (let i = 0; i < this.size; i++) { - list.set(i, mapper.call(context, list.get(i), i, list)); + list.set(i, mapper.call(context, list.get(i), i, this)); } }); } diff --git a/src/Map.js b/src/Map.js index 9ff3f6db26..3b3f4ac00e 100644 --- a/src/Map.js +++ b/src/Map.js @@ -128,7 +128,7 @@ export class Map extends KeyedCollection { map(mapper, context) { return this.withMutations(map => { map.forEach((value, key) => { - map.set(key, mapper.call(context, value, key, map)); + map.set(key, mapper.call(context, value, key, this)); }); }); }