Skip to content

Commit e522bcd

Browse files
committed
src: expose V8's IsNativeError() in util bindings
Refs: #12400 PR-URL: #12546 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Sakthipriyan Vairamani <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 9d3c06c commit e522bcd

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/node_util.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ using v8::Value;
2525
V(isExternal, IsExternal) \
2626
V(isMap, IsMap) \
2727
V(isMapIterator, IsMapIterator) \
28+
V(isNativeError, IsNativeError) \
2829
V(isPromise, IsPromise) \
2930
V(isRegExp, IsRegExp) \
3031
V(isSet, IsSet) \

test/parallel/test-util.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
const common = require('../common');
2424
const assert = require('assert');
2525
const util = require('util');
26+
const binding = process.binding('util');
2627
const context = require('vm').runInNewContext;
2728

2829
// isArray
@@ -153,3 +154,20 @@ util.print('test');
153154
util.puts('test');
154155
util.debug('test');
155156
util.error('test');
157+
158+
{
159+
// binding.isNativeError()
160+
assert.strictEqual(binding.isNativeError(new Error()), true);
161+
assert.strictEqual(binding.isNativeError(new TypeError()), true);
162+
assert.strictEqual(binding.isNativeError(new SyntaxError()), true);
163+
assert.strictEqual(binding.isNativeError(new (context('Error'))()), true);
164+
assert.strictEqual(binding.isNativeError(new (context('TypeError'))()), true);
165+
assert.strictEqual(binding.isNativeError(new (context('SyntaxError'))()),
166+
true);
167+
assert.strictEqual(binding.isNativeError({}), false);
168+
assert.strictEqual(binding.isNativeError({ name: 'Error', message: '' }),
169+
false);
170+
assert.strictEqual(binding.isNativeError([]), false);
171+
assert.strictEqual(binding.isNativeError(Object.create(Error.prototype)),
172+
false);
173+
}

0 commit comments

Comments
 (0)