summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgyson <eilian.yunsong@gmail.com>2014-10-01 10:44:39 +0800
committerChris Dickinson <christopher.s.dickinson@gmail.com>2014-10-03 10:12:00 -0700
commitcb97bcd6f982b35a6fe4d41d884354f72905365d (patch)
treec0b791acdf556e3867e13a72ab7cb2fd793bfe35
parent83d7d9e6d81fc35764a9000b6d7b17a0e7d8cc92 (diff)
downloadnode-cb97bcd6f982b35a6fe4d41d884354f72905365d.tar.gz
util: add es6 Symbol support for `util.inspect`
* `util.inspect` cannot accept es6 symbol primitive * It will throw exception if do `util.inspect(Symbol())` * This also affects repl, console.log, etc. Reviewed-by: Trevor Norris <trev.norris@gmail.com> Reviewed-by: Chris Dickinson <christopher.s.dickinson@gmail.com>
-rw-r--r--lib/util.js4
-rw-r--r--test/simple/test-util-inspect.js9
2 files changed, 13 insertions, 0 deletions
diff --git a/lib/util.js b/lib/util.js
index 2de944586..e97820c9a 100644
--- a/lib/util.js
+++ b/lib/util.js
@@ -174,6 +174,7 @@ inspect.styles = {
'undefined': 'grey',
'null': 'bold',
'string': 'green',
+ 'symbol': 'green',
'date': 'magenta',
// "name": intentionally not styling
'regexp': 'red'
@@ -388,6 +389,9 @@ function formatPrimitive(ctx, value) {
// For some reason typeof null is "object", so special case here.
if (isNull(value))
return ctx.stylize('null', 'null');
+ // es6 symbol primitive
+ if (isSymbol(value))
+ return ctx.stylize(value.toString(), 'symbol');
}
diff --git a/test/simple/test-util-inspect.js b/test/simple/test-util-inspect.js
index 8651a2df0..2a7c2c4fc 100644
--- a/test/simple/test-util-inspect.js
+++ b/test/simple/test-util-inspect.js
@@ -235,3 +235,12 @@ assert.equal(util.inspect(bool), '{ [Boolean: true] foo: \'bar\' }');
var num = new Number(13.37);
num.foo = 'bar';
assert.equal(util.inspect(num), '{ [Number: 13.37] foo: \'bar\' }');
+
+// test es6 Symbol
+if (typeof Symbol !== 'undefined') {
+ assert.equal(util.inspect(Symbol()), 'Symbol()');
+ assert.equal(util.inspect(Symbol(123)), 'Symbol(123)');
+ assert.equal(util.inspect(Symbol('hi')), 'Symbol(hi)');
+ assert.equal(util.inspect([Symbol()]), '[ Symbol() ]');
+ assert.equal(util.inspect({ foo: Symbol() }), '{ foo: Symbol() }');
+}