better ClassDeclaration contextual transformation

This commit is contained in:
Sebastian McKenzie
2014-12-27 19:12:56 +11:00
parent d3ea0fe84f
commit 08dde22939

View File

@@ -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) {