Code coverage report for 6to5/lib/6to5/transformation/transformers/es6-rest-parameters.js

Statements: 100% (16 / 16)      Branches: 100% (4 / 4)      Functions: 100% (1 / 1)      Lines: 100% (15 / 15)      Ignored: none     

All files » 6to5/lib/6to5/transformation/transformers/ » es6-rest-parameters.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 35 36 371 1   1 544   15 15   15   15 15   15 15   15 15 6     15                            
var util = require("../../util");
var t    = require("../../types");
 
exports.Function = function (node, parent, file) {
  if (!node.rest) return;
 
  var rest = node.rest;
  delete node.rest;
 
  t.ensureBlock(node);
 
  var argsId = t.identifier("arguments");
  argsId._ignoreAliasFunctions = true;
 
  var start = t.literal(node.params.length);
  var key = file.generateUidIdentifier("key");
 
  var arrKey = key;
  if (node.params.length) {
    arrKey = t.binaryExpression("-", arrKey, start);
  }
 
  node.body.body.unshift(
    t.variableDeclaration("var", [
      t.variableDeclarator(rest, t.arrayExpression([]))
    ]),
 
    util.template("rest", {
      ARGUMENTS: argsId,
      ARRAY_KEY: arrKey,
      START: start,
      ARRAY: rest,
      KEY: key
    })
  );
};