From 45f07d501476a5a80612f98ac34544f12eedd922 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Sat, 14 Nov 2015 20:50:18 -0800 Subject: [PATCH] Ensure shortcut fusion works for `_.at` with no indexes specified. --- lodash.js | 7 +++++-- test/test.js | 12 ++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lodash.js b/lodash.js index 8733fbce7..56b2b6dc3 100644 --- a/lodash.js +++ b/lodash.js @@ -13895,8 +13895,11 @@ LazyWrapper.prototype.at = rest(function(paths) { paths = baseFlatten(paths); - return (paths.length == 1 && isIndex(paths[0])) - ? this.slice(paths[0], +paths[0] + 1) + var length = paths.length, + start = length ? paths[0] : 0; + + return (length < 2 && isIndex(start)) + ? this.slice(start, length ? (+start + 1) : start) : new LazyWrapper(this); }); diff --git a/test/test.js b/test/test.js index c044b6d40..bf80a455b 100644 --- a/test/test.js +++ b/test/test.js @@ -1269,7 +1269,7 @@ }); QUnit.test('should support shortcut fusion', function(assert) { - assert.expect(4); + assert.expect(6); if (!isNpm) { var array = lodashStable.range(LARGE_ARRAY_SIZE), @@ -1277,16 +1277,16 @@ iteratee = function(value) { count++; return square(value); }, lastIndex = LARGE_ARRAY_SIZE - 1; - _.each([lastIndex, lastIndex + ''], function(index) { + _.each([lastIndex, lastIndex + '', []], function(n, index) { count = 0; - var actual = _(array).map(iteratee).at(index).value(); + var actual = _(array).map(iteratee).at(n).value(); - assert.strictEqual(count, 1); - assert.deepEqual(actual, [square(lastIndex)]); + assert.strictEqual(count, index == 2 ? 0 : 1); + assert.deepEqual(actual, index == 2 ? [] : [square(lastIndex)]); }); } else { - skipTest(assert, 4); + skipTest(assert, 6); } });