Skip to content

Commit 0edd812

Browse files
committed
allow null as Iterator.range optionOrStep
1 parent 4af991e commit 0edd812

File tree

7 files changed

+20
-5
lines changed

7 files changed

+20
-5
lines changed

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# Changelog
22
### Unreleased
33
- Improved performance of `atob` and `btoa`, [#1503](https://github.com/zloirock/core-js/issues/1503), [#1464](https://github.com/zloirock/core-js/issues/1464)
4-
- [`Iterator.range`](https://github.com/tc39/proposal-iterator.range) updated following the actual spec version to throw a `RangeError` on `NaN` `start` / `end` / `step`
4+
- [`Iterator.range`](https://github.com/tc39/proposal-iterator.range) updated following the actual spec version
5+
- Throw a `RangeError` on `NaN` `start` / `end` / `step`
6+
- Allow `null` as `optionOrStep`
57
- `Math.atanh` has become slightly more correct with small values
68
- Fixed one more case (`Iterator.prototype.take`) of a V8 ~ Chromium < 126 [bug](https://issues.chromium.org/issues/336839115)
79
- Forced replacement of `Iterator.{ concat, zip, zipKeyed }` in the pure version for ensuring proper wrapped `Iterator` instances as the result

packages/core-js/internals/numeric-range-iterator.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
'use strict';
2+
// https://github.com/tc39/proposal-iterator.range
23
var InternalStateModule = require('../internals/internal-state');
34
var createIteratorConstructor = require('../internals/iterator-create-constructor');
45
var createIterResultObject = require('../internals/create-iter-result-object');
@@ -31,7 +32,7 @@ var $RangeIterator = createIteratorConstructor(function NumericRangeIterator(sta
3132
var ifIncrease = end > start;
3233
var inclusiveEnd = false;
3334
var step;
34-
if (option === undefined) {
35+
if (isNullOrUndefined(option)) {
3536
step = undefined;
3637
} else if (isObject(option)) {
3738
step = option.step;

packages/core-js/modules/esnext.bigint.range.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var $ = require('../internals/export');
44
var NumericRangeIterator = require('../internals/numeric-range-iterator');
55

66
// `BigInt.range` method
7-
// https://github.com/tc39/proposal-Number.range
7+
// https://github.com/tc39/proposal-iterator.range
88
// TODO: Remove from `core-js@4`
99
if (typeof BigInt == 'function') {
1010
$({ target: 'BigInt', stat: true, forced: true }, {

packages/core-js/modules/esnext.iterator.range.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ var NumericRangeIterator = require('../internals/numeric-range-iterator');
66
var $TypeError = TypeError;
77

88
// `Iterator.range` method
9-
// https://github.com/tc39/proposal-Number.range
9+
// https://github.com/tc39/proposal-iterator.range
1010
$({ target: 'Iterator', stat: true, forced: true }, {
1111
range: function range(start, end, option) {
1212
if (typeof start == 'number') return new NumericRangeIterator(start, end, option, 'number', 0, 1);

packages/core-js/modules/esnext.number.range.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ var $ = require('../internals/export');
33
var NumericRangeIterator = require('../internals/numeric-range-iterator');
44

55
// `Number.range` method
6-
// https://github.com/tc39/proposal-Number.range
6+
// https://github.com/tc39/proposal-iterator.range
77
// TODO: Remove from `core-js@4`
88
$({ target: 'Number', stat: true, forced: true }, {
99
range: function range(start, end, option) {

tests/unit-global/esnext.iterator.range.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ QUnit.test('Iterator.range', assert => {
5353
assert.same(iterator.step, -1);
5454
assert.true(iterator.inclusive);
5555

56+
iterator = range(0, 5, null);
57+
assert.same(iterator.start, 0, 'null option: start');
58+
assert.same(iterator.end, 5, 'null option: end');
59+
assert.same(iterator.step, 1, 'null option: step defaults to 1');
60+
assert.false(iterator.inclusive, 'null option: inclusive defaults to false');
61+
5662
iterator = range(-1, -3, { step: 4, inclusive() { /* empty */ } });
5763
assert.same(iterator.start, -1);
5864
assert.same(iterator.end, -3);

tests/unit-pure/esnext.iterator.range.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@ QUnit.test('Iterator.range', assert => {
5252
assert.same(iterator.step, -1);
5353
assert.true(iterator.inclusive);
5454

55+
iterator = range(0, 5, null);
56+
assert.same(iterator.start, 0, 'null option: start');
57+
assert.same(iterator.end, 5, 'null option: end');
58+
assert.same(iterator.step, 1, 'null option: step defaults to 1');
59+
assert.false(iterator.inclusive, 'null option: inclusive defaults to false');
60+
5561
iterator = range(-1, -3, { step: 4, inclusive() { /* empty */ } });
5662
assert.same(iterator.start, -1);
5763
assert.same(iterator.end, -3);

0 commit comments

Comments
 (0)