diff --git a/lib/6to5/templates/class-inherits-properties.js b/lib/6to5/templates/class-inherits-properties.js new file mode 100644 index 0000000000..c1cbccab49 --- /dev/null +++ b/lib/6to5/templates/class-inherits-properties.js @@ -0,0 +1 @@ +CLASS_NAME.__proto__ = SUPER_NAME; diff --git a/lib/6to5/templates/inherits.js b/lib/6to5/templates/class-inherits-prototype.js similarity index 100% rename from lib/6to5/templates/inherits.js rename to lib/6to5/templates/class-inherits-prototype.js diff --git a/lib/6to5/transformers/classes.js b/lib/6to5/transformers/classes.js index 6deae86066..3c7e12f746 100644 --- a/lib/6to5/transformers/classes.js +++ b/lib/6to5/transformers/classes.js @@ -46,7 +46,14 @@ var buildClass = function (node, generateUid) { var returnStatement = body.pop(); if (superName) { - body.push(util.template("inherits", { + // inherit prototype + body.push(util.template("class-inherits-prototype", { + SUPER_NAME: superName, + CLASS_NAME: className + }, true)); + + // inherit static properties + body.push(util.template("class-inherits-properties", { SUPER_NAME: superName, CLASS_NAME: className }, true)); diff --git a/package.json b/package.json index 7ba7769928..fbfbe824cd 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "6to5", "description": "Turn ES6 code into vanilla ES5 with source maps and no runtime", - "version": "1.7.3", + "version": "1.7.4", "author": "Sebastian McKenzie ", "homepage": "https://github.com/sebmck/6to5", "repository": { diff --git a/test/fixtures/classes/accessing-super-class/expected.js b/test/fixtures/classes/accessing-super-class/expected.js index 3ca726c4a5..80530189c9 100644 --- a/test/fixtures/classes/accessing-super-class/expected.js +++ b/test/fixtures/classes/accessing-super-class/expected.js @@ -13,5 +13,6 @@ var Test = function (Foo) { configurable: true } }); + Test.__proto__ = Foo; return Test; }(Foo); diff --git a/test/fixtures/classes/super-class-member-expression/expected.js b/test/fixtures/classes/super-class-member-expression/expected.js index 6df3e37aee..5da82ceb90 100644 --- a/test/fixtures/classes/super-class-member-expression/expected.js +++ b/test/fixtures/classes/super-class-member-expression/expected.js @@ -9,6 +9,7 @@ var BaseController = function (Chaplin) { configurable: true } }); + BaseController.__proto__ = Chaplin.Controller; return BaseController; }(Chaplin); @@ -23,5 +24,6 @@ var BaseController2 = function (Chaplin) { configurable: true } }); + BaseController2.__proto__ = Chaplin.Controller.Another; return BaseController2; }(Chaplin); diff --git a/test/fixtures/classes/super-class-non-identifiers/expected.js b/test/fixtures/classes/super-class-non-identifiers/expected.js index 87b186465f..75c981cdf5 100644 --- a/test/fixtures/classes/super-class-non-identifiers/expected.js +++ b/test/fixtures/classes/super-class-non-identifiers/expected.js @@ -9,6 +9,7 @@ var Q = function(_ref) { configurable: true } }); + Q.__proto__ = _ref; return Q; }(function() {}); diff --git a/test/fixtures/classes/super-class/expected.js b/test/fixtures/classes/super-class/expected.js index 9f53df4270..db70734e89 100644 --- a/test/fixtures/classes/super-class/expected.js +++ b/test/fixtures/classes/super-class/expected.js @@ -9,5 +9,6 @@ var Test = function (Foo) { configurable: true } }); + Test.__proto__ = Foo; return Test; }(Foo);