add destructuring defaults #230
This commit is contained in:
parent
1b85607d7d
commit
b38a00d70e
@ -21,12 +21,30 @@ var push = function (opts, nodes, elem, parentId) {
|
|||||||
} else if (t.isArrayPattern(elem)) {
|
} else if (t.isArrayPattern(elem)) {
|
||||||
pushArrayPattern(opts, nodes, elem, parentId);
|
pushArrayPattern(opts, nodes, elem, parentId);
|
||||||
} else if (t.isAssignmentPattern(elem)) {
|
} else if (t.isAssignmentPattern(elem)) {
|
||||||
return;
|
pushAssignmentPattern(opts, nodes, elem, parentId);
|
||||||
} else {
|
} else {
|
||||||
nodes.push(buildVariableAssign(opts, elem, parentId));
|
nodes.push(buildVariableAssign(opts, elem, parentId));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var pushAssignmentPattern = function (opts, nodes, pattern, parentId) {
|
||||||
|
var tempParentId = opts.scope.generateUidBasedOnNode(parentId, opts.file);
|
||||||
|
|
||||||
|
nodes.push(t.variableDeclaration("var", [
|
||||||
|
t.variableDeclarator(tempParentId, parentId)
|
||||||
|
]));
|
||||||
|
|
||||||
|
nodes.push(buildVariableAssign(
|
||||||
|
opts,
|
||||||
|
pattern.left,
|
||||||
|
t.conditionalExpression(
|
||||||
|
t.binaryExpression("===", tempParentId, t.identifier("undefined")),
|
||||||
|
pattern.right,
|
||||||
|
tempParentId
|
||||||
|
)
|
||||||
|
));
|
||||||
|
};
|
||||||
|
|
||||||
var pushObjectPattern = function (opts, nodes, pattern, parentId) {
|
var pushObjectPattern = function (opts, nodes, pattern, parentId) {
|
||||||
for (var i in pattern.properties) {
|
for (var i in pattern.properties) {
|
||||||
var prop = pattern.properties[i];
|
var prop = pattern.properties[i];
|
||||||
@ -187,6 +205,24 @@ exports.Function = function (node, parent, file, scope) {
|
|||||||
block.body = nodes.concat(block.body);
|
block.body = nodes.concat(block.body);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
exports.CatchClause = function (node, parent, file, scope) {
|
||||||
|
var pattern = node.param;
|
||||||
|
if (!t.isPattern(pattern)) return;
|
||||||
|
|
||||||
|
var ref = file.generateUidIdentifier("ref", scope);
|
||||||
|
node.param = ref;
|
||||||
|
|
||||||
|
var nodes = [];
|
||||||
|
|
||||||
|
push({
|
||||||
|
kind: "var",
|
||||||
|
file: file,
|
||||||
|
scope: scope
|
||||||
|
}, nodes, pattern, ref);
|
||||||
|
|
||||||
|
node.body.body = nodes.concat(node.body.body);
|
||||||
|
};
|
||||||
|
|
||||||
exports.ExpressionStatement = function (node, parent, file, scope) {
|
exports.ExpressionStatement = function (node, parent, file, scope) {
|
||||||
var expr = node.expression;
|
var expr = node.expression;
|
||||||
if (expr.type !== "AssignmentExpression") return;
|
if (expr.type !== "AssignmentExpression") return;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user