mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
util: Check input to util.inherits
PR-URL: https://github.com/iojs/io.js/pull/1240 Reviewed-By: Brendan Ashworth <brendan.ashworth@me.com> Reviewed-By: Petka Antonov <petka_antonov@hotmail.com>
This commit is contained in:
parent
fe4434b77a
commit
849319a260
15
lib/util.js
15
lib/util.js
@ -616,8 +616,23 @@ exports.log = function() {
|
||||
* @param {function} ctor Constructor function which needs to inherit the
|
||||
* prototype.
|
||||
* @param {function} superCtor Constructor function to inherit prototype from.
|
||||
* @throws {TypeError} Will error if either constructor is null, or if
|
||||
* the super constructor lacks a prototype.
|
||||
*/
|
||||
exports.inherits = function(ctor, superCtor) {
|
||||
|
||||
if (ctor === undefined || ctor === null)
|
||||
throw new TypeError('The constructor to `inherits` must not be ' +
|
||||
'null or undefined.');
|
||||
|
||||
if (superCtor === undefined || superCtor === null)
|
||||
throw new TypeError('The super constructor to `inherits` must not ' +
|
||||
'be null or undefined.');
|
||||
|
||||
if (superCtor.prototype === undefined)
|
||||
throw new TypeError('The super constructor to `inherits` must ' +
|
||||
'have a prototype.');
|
||||
|
||||
ctor.super_ = superCtor;
|
||||
ctor.prototype = Object.create(superCtor.prototype, {
|
||||
constructor: {
|
||||
|
@ -78,3 +78,10 @@ assert.deepEqual(util._extend({a:1}, true), {a:1});
|
||||
assert.deepEqual(util._extend({a:1}, false), {a:1});
|
||||
assert.deepEqual(util._extend({a:1}, {b:2}), {a:1, b:2});
|
||||
assert.deepEqual(util._extend({a:1, b:2}, {b:3}), {a:1, b:3});
|
||||
|
||||
// inherits
|
||||
var ctor = function() {};
|
||||
assert.throws(function() { util.inherits(ctor, {}) }, TypeError);
|
||||
assert.throws(function() { util.inherits(ctor, null) }, TypeError);
|
||||
assert.throws(function() { util.inherits(null, ctor) }, TypeError);
|
||||
assert.doesNotThrow(function() { util.inherits(ctor, ctor) }, TypeError);
|
||||
|
Loading…
Reference in New Issue
Block a user