better ClassDeclarations in expression contexts

This commit is contained in:
Sebastian McKenzie
2014-12-27 21:24:29 +11:00
parent e9445c9277
commit add0a7d5fe

View File

@@ -9,10 +9,15 @@ exports.ClassDeclaration = function (node, parent, file, scope) {
}
var newNode = new Class(node, file, scope, closure).run();
if (closure || t.isFunctionExpression(newNode)) {
return t.variableDeclaration("let", [
t.variableDeclarator(node.id, newNode)
]);
if (closure) {
// declaration in an expression context...
// export default class Foo {}
scope.push({
kind: "var",
key: node.id.key,
id: node.id
});
return t.assignmentExpression("=", node.id, newNode);
} else {
return newNode;
}