From 348fe045d34fab2b4fc0f3d4d399053c0d1a588c Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Sun, 11 Jan 2015 00:35:41 +1100 Subject: [PATCH] reformat for of transformers and add pattern support --- lib/6to5/transformation/transformers/es6-for-of.js | 2 +- .../transformers/optional-for-of-fast.js | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/6to5/transformation/transformers/es6-for-of.js b/lib/6to5/transformation/transformers/es6-for-of.js index 6c1acc6509..737bf36b14 100644 --- a/lib/6to5/transformation/transformers/es6-for-of.js +++ b/lib/6to5/transformation/transformers/es6-for-of.js @@ -8,7 +8,7 @@ exports.ForOfStatement = function (node, parent, file, scope) { var stepKey = file.generateUidIdentifier("step", scope); var stepValue = t.memberExpression(stepKey, t.identifier("value")); - if (t.isIdentifier(left)) { + if (t.isIdentifier(left) || t.isPattern(left)) { declar = t.expressionStatement(t.assignmentExpression("=", left, stepValue)); } else if (t.isVariableDeclaration(left)) { declar = t.variableDeclaration(left.kind, [ diff --git a/lib/6to5/transformation/transformers/optional-for-of-fast.js b/lib/6to5/transformation/transformers/optional-for-of-fast.js index 6c4f0d012b..c2d0f1e148 100644 --- a/lib/6to5/transformation/transformers/optional-for-of-fast.js +++ b/lib/6to5/transformation/transformers/optional-for-of-fast.js @@ -7,33 +7,31 @@ exports.ForOfStatement = function (node, parent, file, scope) { var left = node.left; var declar, id; - if (t.isIdentifier(left)) { + if (t.isIdentifier(left) || t.isPattern(left)) { id = left; } else if (t.isVariableDeclaration(left)) { id = left.declarations[0].id; declar = t.variableDeclaration(left.kind, [ t.variableDeclarator(id) ]); - } else { + } else { throw file.errorWithNode(left, "Unknown node type " + left.type + " in ForOfStatement"); } var node2 = util.template("for-of-fast", { LOOP_OBJECT: file.generateUidIdentifier("loopObject", scope), IS_ARRAY: file.generateUidIdentifier("isArray", scope), + OBJECT: node.right, INDEX: file.generateUidIdentifier("i", scope), - ID: id, - OBJECT: node.right + ID: id }); t.inheritsComments(node2, node); t.ensureBlock(node); var block = node2.body; - if (declar) { - block.body.unshift(declar); - } + if (declar) block.body.unshift(declar); block.body = block.body.concat(node.body.body); - + return node2; };