Refine _.isError checks to avoid false positives on plain objects.

This commit is contained in:
John-David Dalton
2016-10-09 19:54:37 -07:00
parent 054e78572b
commit 22b51ed232
2 changed files with 10 additions and 2 deletions

View File

@@ -88,6 +88,7 @@
arrayTag = '[object Array]', arrayTag = '[object Array]',
boolTag = '[object Boolean]', boolTag = '[object Boolean]',
dateTag = '[object Date]', dateTag = '[object Date]',
domExcTag = '[object DOMException]',
errorTag = '[object Error]', errorTag = '[object Error]',
funcTag = '[object Function]', funcTag = '[object Function]',
genTag = '[object GeneratorFunction]', genTag = '[object GeneratorFunction]',
@@ -11584,8 +11585,9 @@
if (!isObjectLike(value)) { if (!isObjectLike(value)) {
return false; return false;
} }
return (baseGetTag(value) == errorTag) || var tag = baseGetTag(value);
(typeof value.message == 'string' && typeof value.name == 'string'); return tag == errorTag || tag == domExcTag ||
(typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
} }
/** /**

View File

@@ -10425,6 +10425,12 @@
assert.strictEqual(_.isError(symbol), false); assert.strictEqual(_.isError(symbol), false);
}); });
QUnit.test('should return `false` for plain objects', function(assert) {
assert.expect(1);
assert.strictEqual(_.isError({ 'name': 'Error', 'message': '' }), false);
});
QUnit.test('should work with an error object from another realm', function(assert) { QUnit.test('should work with an error object from another realm', function(assert) {
assert.expect(1); assert.expect(1);