From 08dde229392aec651434cccc01056fbec49e73ab Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Sat, 27 Dec 2014 19:12:56 +1100 Subject: [PATCH] better ClassDeclaration contextual transformation --- .../transformation/transformers/es6-classes.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/6to5/transformation/transformers/es6-classes.js b/lib/6to5/transformation/transformers/es6-classes.js index 383a477d3d..db1022a33d 100644 --- a/lib/6to5/transformation/transformers/es6-classes.js +++ b/lib/6to5/transformation/transformers/es6-classes.js @@ -3,7 +3,19 @@ var util = require("../../util"); var t = require("../../types"); exports.ClassDeclaration = function (node, parent, file, scope) { - return new Class(node, file, scope, false).run(); + var closure = true; + if (t.isProgram(parent) || t.isBlockStatement(parent)) { + closure = false; + } + + var newNode = new Class(node, file, scope, closure).run(); + if (closure || t.isFunctionExpression(newNode)) { + return t.variableDeclaration("let", [ + t.variableDeclarator(node.id, newNode) + ]); + } else { + return newNode; + } }; exports.ClassExpression = function (node, parent, file, scope) {