From b9d3928f80992a812795a974cbae02288fc5049c Mon Sep 17 00:00:00 2001 From: Vladimir Kurchatkin Date: Fri, 6 Feb 2015 16:06:07 +0300 Subject: [PATCH] util: simplify `isPrimitive` Everything that is not an object should be a primitive. PR-URL: https://github.com/iojs/io.js/pull/739 Reviewed-By: Trevor Norris Reviewed-By: Ben Noordhuis --- lib/util.js | 6 +----- test/parallel/test-util.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/lib/util.js b/lib/util.js index f84f528ce3b78e..86f585f95217e4 100644 --- a/lib/util.js +++ b/lib/util.js @@ -566,11 +566,7 @@ exports.isFunction = isFunction; function isPrimitive(arg) { return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; + typeof arg !== 'object' && typeof arg !== 'function'; } exports.isPrimitive = isPrimitive; diff --git a/test/parallel/test-util.js b/test/parallel/test-util.js index d8966ce66974dd..2fb4bc5609bcd6 100644 --- a/test/parallel/test-util.js +++ b/test/parallel/test-util.js @@ -51,6 +51,25 @@ assert.equal(true, util.isError(Object.create(Error.prototype))); // isObject assert.ok(util.isObject({}) === true); +// isPrimitive +assert.equal(false, util.isPrimitive({})); +assert.equal(false, util.isPrimitive(new Error)); +assert.equal(false, util.isPrimitive(new Date())); +assert.equal(false, util.isPrimitive([])); +assert.equal(false, util.isPrimitive(/regexp/)); +assert.equal(false, util.isPrimitive(function(){})); +assert.equal(false, util.isPrimitive(new Number(1))); +assert.equal(false, util.isPrimitive(new String('bla'))); +assert.equal(false, util.isPrimitive(new Boolean(true))); +assert.equal(true, util.isPrimitive(1)); +assert.equal(true, util.isPrimitive('bla')); +assert.equal(true, util.isPrimitive(true)); +assert.equal(true, util.isPrimitive(undefined)); +assert.equal(true, util.isPrimitive(null)); +assert.equal(true, util.isPrimitive(Infinity)); +assert.equal(true, util.isPrimitive(NaN)); +assert.equal(true, util.isPrimitive(Symbol('symbol'))); + // _extend assert.deepEqual(util._extend({a:1}), {a:1}); assert.deepEqual(util._extend({a:1}, []), {a:1});