Skip to content

Commit cb0db7c

Browse files
committed
remove IsCallable check in GetKeysIterator
1 parent f845944 commit cb0db7c

File tree

7 files changed

+11
-8
lines changed

7 files changed

+11
-8
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
- Added `/actual/` namespaces entries, unconditional forced replacement changed to feature detection
99
- [`Set` methods stage 3 proposal](https://github.com/tc39/proposal-set-methods), July 2023 TC39 meeting updates::
1010
- Throw on negative `Set` sizes, [proposal-set-methods/88](https://github.com/tc39/proposal-set-methods/pull/88)
11+
- Removed `IsCallable` check in `GetKeysIterator`, [proposal-set-methods/101](https://github.com/tc39/proposal-set-methods/pull/101)
1112
- [Iterator Helpers stage 3 proposal](https://github.com/tc39/proposal-iterator-helpers), July 2023 TC39 meeting updates::
1213
- Avoid creating observable `String` wrapper objects, [proposal-iterator-helpers/281](https://github.com/tc39/proposal-iterator-helpers/pull/281)
1314
- Async explicit resource management:

packages/core-js-pure/override/internals/map-iterate.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ var iterateSimple = require('../internals/iterate-simple');
44
module.exports = function (map, fn, interruptible) {
55
return interruptible ? iterateSimple(map.entries(), function (entry) {
66
return fn(entry[1], entry[0]);
7-
}) : map.forEach(fn);
7+
}, true) : map.forEach(fn);
88
};

packages/core-js-pure/override/internals/set-iterate.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
var iterateSimple = require('../internals/iterate-simple');
33

44
module.exports = function (set, fn, interruptible) {
5-
return interruptible ? iterateSimple(set.keys(), fn) : set.forEach(fn);
5+
return interruptible ? iterateSimple(set.keys(), fn, true) : set.forEach(fn);
66
};

packages/core-js/internals/get-set-record.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ var aCallable = require('../internals/a-callable');
33
var anObject = require('../internals/an-object');
44
var call = require('../internals/function-call');
55
var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
6+
var getIteratorDirect = require('../internals/get-iterator-direct');
67

78
var INVALID_SIZE = 'Invalid size';
89
var $RangeError = RangeError;
@@ -18,7 +19,7 @@ var SetRecord = function (set, size, has, keys) {
1819

1920
SetRecord.prototype = {
2021
getIterator: function () {
21-
return anObject(call(this.keys, this.set));
22+
return getIteratorDirect(anObject(call(this.keys, this.set)));
2223
},
2324
includes: function (it) {
2425
return call(this.has, this.set, it);

packages/core-js/internals/iterate-simple.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
'use strict';
22
var call = require('../internals/function-call');
33

4-
module.exports = function (iterator, fn, $next) {
5-
var next = $next || iterator.next;
4+
module.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {
5+
var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;
6+
var next = record.next;
67
var step, result;
78
while (!(step = call(next, iterator)).done) {
89
result = fn(step.value);

packages/core-js/internals/map-iterate.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ var entries = uncurryThis(MapPrototype.entries);
1010
var next = entries(new Map()).next;
1111

1212
module.exports = function (map, fn, interruptible) {
13-
return interruptible ? iterateSimple(entries(map), function (entry) {
13+
return interruptible ? iterateSimple({ iterator: entries(map), next: next }, function (entry) {
1414
return fn(entry[1], entry[0]);
15-
}, next) : forEach(map, fn);
15+
}) : forEach(map, fn);
1616
};

packages/core-js/internals/set-iterate.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ var keys = uncurryThis(SetPrototype.keys);
1010
var next = keys(new Set()).next;
1111

1212
module.exports = function (set, fn, interruptible) {
13-
return interruptible ? iterateSimple(keys(set), fn, next) : forEach(set, fn);
13+
return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);
1414
};

0 commit comments

Comments
 (0)