Skip to content

Commit 744ed94

Browse files
cjihrigevanlucas
authored andcommitted
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 51eafe8 commit 744ed94

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/node_util.cc

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ using v8::Value;
2424
V(isDate, IsDate) \
2525
V(isMap, IsMap) \
2626
V(isMapIterator, IsMapIterator) \
27+
V(isNativeError, IsNativeError) \
2728
V(isPromise, IsPromise) \
2829
V(isRegExp, IsRegExp) \
2930
V(isSet, IsSet) \

test/parallel/test-util.js

+18
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
const common = require('../common');
33
const assert = require('assert');
44
const util = require('util');
5+
const binding = process.binding('util');
56
const context = require('vm').runInNewContext;
67

78
// isArray
@@ -132,3 +133,20 @@ util.print('test');
132133
util.puts('test');
133134
util.debug('test');
134135
util.error('test');
136+
137+
{
138+
// binding.isNativeError()
139+
assert.strictEqual(binding.isNativeError(new Error()), true);
140+
assert.strictEqual(binding.isNativeError(new TypeError()), true);
141+
assert.strictEqual(binding.isNativeError(new SyntaxError()), true);
142+
assert.strictEqual(binding.isNativeError(new (context('Error'))()), true);
143+
assert.strictEqual(binding.isNativeError(new (context('TypeError'))()), true);
144+
assert.strictEqual(binding.isNativeError(new (context('SyntaxError'))()),
145+
true);
146+
assert.strictEqual(binding.isNativeError({}), false);
147+
assert.strictEqual(binding.isNativeError({ name: 'Error', message: '' }),
148+
false);
149+
assert.strictEqual(binding.isNativeError([]), false);
150+
assert.strictEqual(binding.isNativeError(Object.create(Error.prototype)),
151+
false);
152+
}

0 commit comments

Comments
 (0)