From ca954ddeb0a62fbfe7ae732632c7d324a5a73fe4 Mon Sep 17 00:00:00 2001 From: Stefan Penner Date: Mon, 17 Jul 2017 13:46:15 -0700 Subject: [PATCH] [BUGFIX release] Fix Ember.Error inheritance MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As pointed out by @schuay https://github.com/emberjs/ember.js/issues/15516 our error constructor essentially calls super twice. The reasons seems to have been an error in ExtendableBuiltin constructor, which did not return its `apply` call. I can’t seem to find the issue ExtendBuiltin is working around. I suspect we can simply remove it --- packages/ember-debug/lib/error.js | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/packages/ember-debug/lib/error.js b/packages/ember-debug/lib/error.js index c7205b95522..0cf43d25933 100644 --- a/packages/ember-debug/lib/error.js +++ b/packages/ember-debug/lib/error.js @@ -1,14 +1,3 @@ - -function ExtendBuiltin(klass) { - function ExtendableBuiltin() { - klass.apply(this, arguments); - } - - ExtendableBuiltin.prototype = Object.create(klass.prototype); - ExtendableBuiltin.prototype.constructor = ExtendableBuiltin; - return ExtendableBuiltin; -} - /** A subclass of the JavaScript Error object for use in Ember. @@ -18,15 +7,12 @@ function ExtendBuiltin(klass) { @constructor @public */ -export default class EmberError extends ExtendBuiltin(Error) { - constructor(message) { - super(); - if (!(this instanceof EmberError)) { - return new EmberError(message); - } +export default EmberError; +function EmberError(message, code) { + if (this instanceof EmberError) { + let error = Error.call(this, message, code); - let error = Error.call(this, message); this.stack = error.stack; this.description = error.description; this.fileName = error.fileName; @@ -35,5 +21,10 @@ export default class EmberError extends ExtendBuiltin(Error) { this.name = error.name; this.number = error.number; this.code = error.code; + } else { + return new EmberError(message, code); } } + +EmberError.prototype = Object.create(Error.prototype); +EmberError.constructor = EmberError;