diff --git a/lib/6to5/templates/class-statement-container.js b/lib/6to5/templates/class-statement-container.js new file mode 100644 index 0000000000..56e8aaa6e9 --- /dev/null +++ b/lib/6to5/templates/class-statement-container.js @@ -0,0 +1,7 @@ +(function () { + function CLASS_NAME() { + + } + + return CLASS_NAME; +})() diff --git a/lib/6to5/templates/class.js b/lib/6to5/templates/class.js index fc3c3ba01a..56e8aaa6e9 100644 --- a/lib/6to5/templates/class.js +++ b/lib/6to5/templates/class.js @@ -1,7 +1,7 @@ -var CLASS_NAME = (function () { +(function () { function CLASS_NAME() { } return CLASS_NAME; -})(); +})() diff --git a/lib/6to5/transformers/classes.js b/lib/6to5/transformers/classes.js index f42c0e09cd..32e2011cfc 100644 --- a/lib/6to5/transformers/classes.js +++ b/lib/6to5/transformers/classes.js @@ -4,14 +4,23 @@ var b = require("ast-types").builders; var _ = require("lodash"); exports.ClassDeclaration = function (node) { + return b.variableDeclaration("var", [ + b.variableDeclarator(node.id, buildClass(node)) + ]); +}; + +exports.ClassExpression = function (node) { + return buildClass(node); +}; + +var buildClass = function (node) { var superName = node.superClass; var className = node.id; - var root = util.template("class", { + var container = util.template("class", { CLASS_NAME: className - }, true); + }); - var container = root.declarations[0].init; var block = container.callee.body; var body = block.body; @@ -31,7 +40,7 @@ exports.ClassDeclaration = function (node) { body.push(returnStatement); - return root; + return container; }; var buildClassBody = function (body, className, superName, node) {