Code coverage report for 6to5/transformers/for-of.js

Statements: 94.44% (17 / 18)      Branches: 75% (3 / 4)      Functions: 100% (1 / 1)      Lines: 94.44% (17 / 18)      Ignored: none     

All files » 6to5/transformers/ » for-of.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 351 1   1 7 7   7 7   7 1 6 6             7           7   7 7 7   7    
var util = require("../util");
var b    = require("recast").types.builders;
 
exports.ForOfStatement = function (node, parent, file) {
  var left = node.left;
  var declar;
 
  var stepKey = b.identifier(file.generateUid("step"));
  var stepValueId = b.memberExpression(stepKey, b.identifier("value"), false);
 
  if (left.type === "Identifier") {
    declar = b.expressionStatement(b.assignmentExpression("=", left, stepValueId));
  } else Eif (left.type === "VariableDeclaration") {
    declar = b.variableDeclaration(left.kind, [
      b.variableDeclarator(left.declarations[0].id, stepValueId)
    ]);
  } else {
    return;
  }
 
  var node2 = util.template("for-of", {
    ITERATOR_KEY: file.generateUid("iterator"),
    STEP_KEY:     stepKey,
    OBJECT:       node.right
  });
 
  util.ensureBlock(node);
 
  var block = node2.body;
  block.body.push(declar);
  block.body = block.body.concat(node.body.body);
 
  return node2;
};