more reliable destructuring building

This commit is contained in:
Sebastian McKenzie
2014-10-28 13:16:31 +11:00
parent 4e248c0a16
commit 2cffad61fa

View File

@@ -13,11 +13,15 @@ var buildVariableAssign = function (kind, id, init) {
}
};
var push = function (kind, nodes, pattern, parentId) {
if (pattern.type === "ObjectPattern") {
pushObjectPattern(kind, nodes, pattern, parentId);
} else if (pattern.type === "ArrayPattern") {
pushArrayPattern(kind, nodes, pattern, parentId);
var push = function (kind, nodes, elem, parentId) {
if (elem.type === "ObjectPattern") {
pushObjectPattern(kind, nodes, elem, parentId);
} else if (elem.type === "ArrayPattern") {
pushArrayPattern(kind, nodes, elem, parentId);
} else if (elem.type === "MemberExpression") {
nodes.push(buildVariableAssign(false, elem, parentId));
} else {
nodes.push(buildVariableAssign(kind, elem, parentId));
}
};
@@ -39,14 +43,7 @@ var pushArrayPattern = function (kind, nodes, pattern, parentId) {
if (!elem) return;
var newPatternId = b.memberExpression(parentId, b.literal(i), true);
if (elem.type === "Identifier") {
nodes.push(buildVariableAssign(kind, elem, newPatternId));
} else if (elem.type === "MemberExpression") {
nodes.push(buildVariableAssign(false, elem, newPatternId));
} else {
push(kind, nodes, elem, newPatternId);
}
push(kind, nodes, elem, newPatternId);
});
};