Sebastian McKenzie ae7d5367f1 6.0.0
I'm extremely stupid and didn't commit as I go. To anyone reading this
I'm extremely sorry. A lot of these changes are very broad and I plan on
releasing Babel 6.0.0 today live on stage at Ember Camp London so I'm
afraid I couldn't wait. If you're ever in London I'll buy you a beer
(or assorted beverage!) to make up for it, also I'll kiss your feet and
give you a back massage, maybe.
2015-10-29 17:51:24 +00:00

40 lines
857 B
JavaScript

export default function ({ types: t }) {
function statementList(key, path) {
let paths: Array = path.get(key);
for (let path of paths) {
let func = path.node;
if (!path.isFunctionDeclaration()) continue;
let declar = t.variableDeclaration("let", [
t.variableDeclarator(func.id, t.toExpression(func))
]);
// hoist it up above everything else
declar._blockHoist = 2;
// todo: name this
func.id = null;
path.replaceWith(declar);
}
}
return {
visitor: {
BlockStatement(path) {
let { node, parent } = path;
if (t.isFunction(parent, { body: node }) || t.isExportDeclaration(parent)) {
return;
}
statementList("body", path);
},
SwitchCase(path) {
statementList("consequent", path);
}
}
};
}