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.
25 lines
626 B
JavaScript
25 lines
626 B
JavaScript
import * as t from "babel-types";
|
|
|
|
export let visitor = {
|
|
Function(path) {
|
|
let params: Array = path.get("params");
|
|
|
|
for (let i = 0; i < params.length; i++) {
|
|
let param = params[i];
|
|
if (param.isArrayPattern() || param.isObjectPattern()) {
|
|
let uid = path.scope.generateUidIdentifier("ref");
|
|
|
|
let declar = t.variableDeclaration("let", [
|
|
t.variableDeclarator(param.node, uid)
|
|
]);
|
|
declar._blockHoist = params.length - i;
|
|
|
|
path.ensureBlock();
|
|
path.get("body").unshiftContainer("body", declar);
|
|
|
|
param.replaceWith(uid);
|
|
}
|
|
}
|
|
}
|
|
};
|