diff --git a/build.js b/build.js index 5a2c549d0..f9ca31549 100644 --- a/build.js +++ b/build.js @@ -3821,6 +3821,12 @@ .replace(/(\n *)}/, ",$1 '/': '/'$1}"); }); } + // remove support for a `step` of `0` in `_.range` + if (!isLodash('range')) { + source = source.replace(matchFunction(source, 'range'), function(match) { + return match.replace(/typeof *step[^:]+:/, '+step ||'); + }); + } // replace `slice` with `nativeSlice.call` _.each(['clone', 'first', 'initial', 'last', 'rest', 'toArray'], function(funcName) { diff --git a/lodash.js b/lodash.js index 8e0b95cca..177ff22d3 100644 --- a/lodash.js +++ b/lodash.js @@ -4682,12 +4682,15 @@ * _.range(0, -10, -1); * // => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] * + * _.range(1, 4, 0); + * // => [1, 1, 1] + * * _.range(0); * // => [] */ function range(start, end, step) { start = +start || 0; - step = isNumber(step) ? step : 1; + step = typeof step == 'number' ? step : 1; if (end == null) { end = start; diff --git a/test/test-build.js b/test/test-build.js index e484732db..f651b1a80 100644 --- a/test/test-build.js +++ b/test/test-build.js @@ -1089,6 +1089,7 @@ actual = lodash.pick(object, function(value) { return value != 3; }); deepEqual(_.keys(actual), [], '_.pick should not accept a `callback`: ' + basename); + deepEqual(lodash.range(1, 4, 0), [1, 2, 3], '_.range should not support a `step` of `0`'); strictEqual(lodash.some([false, true, false]), true, '_.some: ' + basename); deepEqual(lodash.times(null, function() {}), [null], '_.times should not coerce `n` to a number: ' + basename); equal(lodash.template('${a}', object), '${a}', '_.template should ignore ES6 delimiters: ' + basename); diff --git a/test/test.js b/test/test.js index 43ddd74d2..51ed4577e 100644 --- a/test/test.js +++ b/test/test.js @@ -2785,6 +2785,10 @@ var actual = [func('0',1), func('1'), func(0, 1, '1')]; deepEqual(actual, [[0], [0], [0]]); }); + + test('should support a `step` of `0`', function() { + deepEqual(_.range(1, 4, 0), [1, 1, 1]); + }); }()); /*--------------------------------------------------------------------------*/