mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-09 10:27:49 +00:00
Ensure cloneByPath preserves uncloneable values. [closes #3203]
This commit is contained in:
@@ -171,7 +171,9 @@ function baseConvert(util, name, func, options) {
|
|||||||
'curry': util.curry,
|
'curry': util.curry,
|
||||||
'forEach': util.forEach,
|
'forEach': util.forEach,
|
||||||
'isArray': util.isArray,
|
'isArray': util.isArray,
|
||||||
|
'isError': util.isError,
|
||||||
'isFunction': util.isFunction,
|
'isFunction': util.isFunction,
|
||||||
|
'isWeakMap': util.isWeakMap,
|
||||||
'iteratee': util.iteratee,
|
'iteratee': util.iteratee,
|
||||||
'keys': util.keys,
|
'keys': util.keys,
|
||||||
'rearg': util.rearg,
|
'rearg': util.rearg,
|
||||||
@@ -185,7 +187,9 @@ function baseConvert(util, name, func, options) {
|
|||||||
curry = helpers.curry,
|
curry = helpers.curry,
|
||||||
each = helpers.forEach,
|
each = helpers.forEach,
|
||||||
isArray = helpers.isArray,
|
isArray = helpers.isArray,
|
||||||
|
isError = helpers.isError,
|
||||||
isFunction = helpers.isFunction,
|
isFunction = helpers.isFunction,
|
||||||
|
isWeakMap = helpers.isWeakMap,
|
||||||
keys = helpers.keys,
|
keys = helpers.keys,
|
||||||
rearg = helpers.rearg,
|
rearg = helpers.rearg,
|
||||||
toInteger = helpers.toInteger,
|
toInteger = helpers.toInteger,
|
||||||
@@ -355,8 +359,9 @@ function baseConvert(util, name, func, options) {
|
|||||||
var key = path[index],
|
var key = path[index],
|
||||||
value = nested[key];
|
value = nested[key];
|
||||||
|
|
||||||
if (value != null) {
|
if (value != null &&
|
||||||
nested[path[index]] = clone(index == lastIndex ? value : Object(value));
|
!(isFunction(value) || isError(value) || isWeakMap(value))) {
|
||||||
|
nested[key] = clone(index == lastIndex ? value : Object(value));
|
||||||
}
|
}
|
||||||
nested = nested[key];
|
nested = nested[key];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,9 @@ module.exports = {
|
|||||||
'curry': require('../curry'),
|
'curry': require('../curry'),
|
||||||
'forEach': require('../_arrayEach'),
|
'forEach': require('../_arrayEach'),
|
||||||
'isArray': require('../isArray'),
|
'isArray': require('../isArray'),
|
||||||
|
'isError': require('../isError'),
|
||||||
'isFunction': require('../isFunction'),
|
'isFunction': require('../isFunction'),
|
||||||
|
'isWeakMap': require('../isWeakMap'),
|
||||||
'iteratee': require('../iteratee'),
|
'iteratee': require('../iteratee'),
|
||||||
'keys': require('../_baseKeys'),
|
'keys': require('../_baseKeys'),
|
||||||
'rearg': require('../rearg'),
|
'rearg': require('../rearg'),
|
||||||
|
|||||||
@@ -2138,6 +2138,16 @@
|
|||||||
assert.strictEqual(typeof actual.a.b, 'number');
|
assert.strictEqual(typeof actual.a.b, 'number');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
QUnit.test('should not convert uncloneables to objects', function(assert) {
|
||||||
|
assert.expect(2);
|
||||||
|
|
||||||
|
var object = { 'a': { 'b': _.constant(true) } },
|
||||||
|
actual = fp.update('a.b')(_.identity)(object);
|
||||||
|
|
||||||
|
assert.strictEqual(typeof object.a.b, 'function')
|
||||||
|
assert.strictEqual(object.a.b, actual.a.b);
|
||||||
|
});
|
||||||
|
|
||||||
QUnit.test('should not mutate values', function(assert) {
|
QUnit.test('should not mutate values', function(assert) {
|
||||||
assert.expect(2);
|
assert.expect(2);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user