/* automatically generated by JSCoverage - do not edit */
if (typeof _$jscoverage === 'undefined') _$jscoverage = {};
if (! _$jscoverage['coffee-script/scope.js']) {
  _$jscoverage['coffee-script/scope.js'] = [];
  _$jscoverage['coffee-script/scope.js'][2] = 0;
  _$jscoverage['coffee-script/scope.js'][3] = 0;
  _$jscoverage['coffee-script/scope.js'][5] = 0;
  _$jscoverage['coffee-script/scope.js'][7] = 0;
  _$jscoverage['coffee-script/scope.js'][9] = 0;
  _$jscoverage['coffee-script/scope.js'][11] = 0;
  _$jscoverage['coffee-script/scope.js'][12] = 0;
  _$jscoverage['coffee-script/scope.js'][13] = 0;
  _$jscoverage['coffee-script/scope.js'][14] = 0;
  _$jscoverage['coffee-script/scope.js'][15] = 0;
  _$jscoverage['coffee-script/scope.js'][21] = 0;
  _$jscoverage['coffee-script/scope.js'][22] = 0;
  _$jscoverage['coffee-script/scope.js'][23] = 0;
  _$jscoverage['coffee-script/scope.js'][27] = 0;
  _$jscoverage['coffee-script/scope.js'][28] = 0;
  _$jscoverage['coffee-script/scope.js'][29] = 0;
  _$jscoverage['coffee-script/scope.js'][31] = 0;
  _$jscoverage['coffee-script/scope.js'][32] = 0;
  _$jscoverage['coffee-script/scope.js'][34] = 0;
  _$jscoverage['coffee-script/scope.js'][41] = 0;
  _$jscoverage['coffee-script/scope.js'][42] = 0;
  _$jscoverage['coffee-script/scope.js'][43] = 0;
  _$jscoverage['coffee-script/scope.js'][45] = 0;
  _$jscoverage['coffee-script/scope.js'][48] = 0;
  _$jscoverage['coffee-script/scope.js'][49] = 0;
  _$jscoverage['coffee-script/scope.js'][50] = 0;
  _$jscoverage['coffee-script/scope.js'][52] = 0;
  _$jscoverage['coffee-script/scope.js'][53] = 0;
  _$jscoverage['coffee-script/scope.js'][56] = 0;
  _$jscoverage['coffee-script/scope.js'][57] = 0;
  _$jscoverage['coffee-script/scope.js'][58] = 0;
  _$jscoverage['coffee-script/scope.js'][60] = 0;
  _$jscoverage['coffee-script/scope.js'][63] = 0;
  _$jscoverage['coffee-script/scope.js'][64] = 0;
  _$jscoverage['coffee-script/scope.js'][65] = 0;
  _$jscoverage['coffee-script/scope.js'][68] = 0;
  _$jscoverage['coffee-script/scope.js'][69] = 0;
  _$jscoverage['coffee-script/scope.js'][70] = 0;
  _$jscoverage['coffee-script/scope.js'][72] = 0;
  _$jscoverage['coffee-script/scope.js'][76] = 0;
  _$jscoverage['coffee-script/scope.js'][77] = 0;
  _$jscoverage['coffee-script/scope.js'][78] = 0;
  _$jscoverage['coffee-script/scope.js'][79] = 0;
  _$jscoverage['coffee-script/scope.js'][80] = 0;
  _$jscoverage['coffee-script/scope.js'][81] = 0;
  _$jscoverage['coffee-script/scope.js'][82] = 0;
  _$jscoverage['coffee-script/scope.js'][85] = 0;
  _$jscoverage['coffee-script/scope.js'][88] = 0;
  _$jscoverage['coffee-script/scope.js'][89] = 0;
  _$jscoverage['coffee-script/scope.js'][90] = 0;
  _$jscoverage['coffee-script/scope.js'][91] = 0;
  _$jscoverage['coffee-script/scope.js'][93] = 0;
  _$jscoverage['coffee-script/scope.js'][94] = 0;
  _$jscoverage['coffee-script/scope.js'][95] = 0;
  _$jscoverage['coffee-script/scope.js'][97] = 0;
  _$jscoverage['coffee-script/scope.js'][98] = 0;
  _$jscoverage['coffee-script/scope.js'][100] = 0;
  _$jscoverage['coffee-script/scope.js'][103] = 0;
  _$jscoverage['coffee-script/scope.js'][104] = 0;
  _$jscoverage['coffee-script/scope.js'][108] = 0;
  _$jscoverage['coffee-script/scope.js'][111] = 0;
  _$jscoverage['coffee-script/scope.js'][112] = 0;
  _$jscoverage['coffee-script/scope.js'][115] = 0;
  _$jscoverage['coffee-script/scope.js'][116] = 0;
  _$jscoverage['coffee-script/scope.js'][117] = 0;
  _$jscoverage['coffee-script/scope.js'][118] = 0;
  _$jscoverage['coffee-script/scope.js'][119] = 0;
  _$jscoverage['coffee-script/scope.js'][120] = 0;
  _$jscoverage['coffee-script/scope.js'][121] = 0;
  _$jscoverage['coffee-script/scope.js'][122] = 0;
  _$jscoverage['coffee-script/scope.js'][123] = 0;
  _$jscoverage['coffee-script/scope.js'][126] = 0;
  _$jscoverage['coffee-script/scope.js'][129] = 0;
  _$jscoverage['coffee-script/scope.js'][130] = 0;
  _$jscoverage['coffee-script/scope.js'][131] = 0;
  _$jscoverage['coffee-script/scope.js'][132] = 0;
  _$jscoverage['coffee-script/scope.js'][133] = 0;
  _$jscoverage['coffee-script/scope.js'][134] = 0;
  _$jscoverage['coffee-script/scope.js'][135] = 0;
  _$jscoverage['coffee-script/scope.js'][136] = 0;
  _$jscoverage['coffee-script/scope.js'][139] = 0;
  _$jscoverage['coffee-script/scope.js'][142] = 0;
}
_$jscoverage['coffee-script/scope.js'][2]++;
(function () {
  _$jscoverage['coffee-script/scope.js'][3]++;
  var Scope, extend, last, _ref;
  _$jscoverage['coffee-script/scope.js'][5]++;
  _ref = require("./helpers"), extend = _ref.extend, last = _ref.last;
  _$jscoverage['coffee-script/scope.js'][7]++;
  exports.Scope = Scope = (function () {
  _$jscoverage['coffee-script/scope.js'][9]++;
  Scope.root = null;
  _$jscoverage['coffee-script/scope.js'][11]++;
  function Scope(parent, expressions, method) {
    _$jscoverage['coffee-script/scope.js'][12]++;
    this.parent = parent;
    _$jscoverage['coffee-script/scope.js'][13]++;
    this.expressions = expressions;
    _$jscoverage['coffee-script/scope.js'][14]++;
    this.method = method;
    _$jscoverage['coffee-script/scope.js'][15]++;
    this.variables = [{name: "arguments", type: "arguments"}];
    _$jscoverage['coffee-script/scope.js'][21]++;
    this.positions = {};
    _$jscoverage['coffee-script/scope.js'][22]++;
    if (! this.parent) {
      _$jscoverage['coffee-script/scope.js'][23]++;
      Scope.root = this;
    }
}
  _$jscoverage['coffee-script/scope.js'][27]++;
  Scope.prototype.add = (function (name, type, immediate) {
  _$jscoverage['coffee-script/scope.js'][28]++;
  if (this.shared && ! immediate) {
    _$jscoverage['coffee-script/scope.js'][29]++;
    return this.parent.add(name, type, immediate);
  }
  _$jscoverage['coffee-script/scope.js'][31]++;
  if (Object.prototype.hasOwnProperty.call(this.positions, name)) {
    _$jscoverage['coffee-script/scope.js'][32]++;
    return this.variables[this.positions[name]].type = type;
  }
  else {
    _$jscoverage['coffee-script/scope.js'][34]++;
    return this.positions[name] = this.variables.push({name: name, type: type}) - 1;
  }
});
  _$jscoverage['coffee-script/scope.js'][41]++;
  Scope.prototype.namedMethod = (function () {
  _$jscoverage['coffee-script/scope.js'][42]++;
  if (this.method.name || ! this.parent) {
    _$jscoverage['coffee-script/scope.js'][43]++;
    return this.method;
  }
  _$jscoverage['coffee-script/scope.js'][45]++;
  return this.parent.namedMethod();
});
  _$jscoverage['coffee-script/scope.js'][48]++;
  Scope.prototype.find = (function (name) {
  _$jscoverage['coffee-script/scope.js'][49]++;
  if (this.check(name)) {
    _$jscoverage['coffee-script/scope.js'][50]++;
    return true;
  }
  _$jscoverage['coffee-script/scope.js'][52]++;
  this.add(name, "var");
  _$jscoverage['coffee-script/scope.js'][53]++;
  return false;
});
  _$jscoverage['coffee-script/scope.js'][56]++;
  Scope.prototype.parameter = (function (name) {
  _$jscoverage['coffee-script/scope.js'][57]++;
  if (this.shared && this.parent.check(name, true)) {
    _$jscoverage['coffee-script/scope.js'][58]++;
    return;
  }
  _$jscoverage['coffee-script/scope.js'][60]++;
  return this.add(name, "param");
});
  _$jscoverage['coffee-script/scope.js'][63]++;
  Scope.prototype.check = (function (name) {
  _$jscoverage['coffee-script/scope.js'][64]++;
  var _ref1;
  _$jscoverage['coffee-script/scope.js'][65]++;
  return ! ! (this.type(name) || ((_ref1 = this.parent) != null? _ref1.check(name): void 0));
});
  _$jscoverage['coffee-script/scope.js'][68]++;
  Scope.prototype.temporary = (function (name, index) {
  _$jscoverage['coffee-script/scope.js'][69]++;
  if (name.length > 1) {
    _$jscoverage['coffee-script/scope.js'][70]++;
    return "_" + name + (index > 1? index - 1: "");
  }
  else {
    _$jscoverage['coffee-script/scope.js'][72]++;
    return "_" + (index + parseInt(name, 36)).toString(36).replace(/\d/g, "a");
  }
});
  _$jscoverage['coffee-script/scope.js'][76]++;
  Scope.prototype.type = (function (name) {
  _$jscoverage['coffee-script/scope.js'][77]++;
  var v, _i, _len, _ref1;
  _$jscoverage['coffee-script/scope.js'][78]++;
  _ref1 = this.variables;
  _$jscoverage['coffee-script/scope.js'][79]++;
  for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
    _$jscoverage['coffee-script/scope.js'][80]++;
    v = _ref1[_i];
    _$jscoverage['coffee-script/scope.js'][81]++;
    if (v.name === name) {
      _$jscoverage['coffee-script/scope.js'][82]++;
      return v.type;
    }
}
  _$jscoverage['coffee-script/scope.js'][85]++;
  return null;
});
  _$jscoverage['coffee-script/scope.js'][88]++;
  Scope.prototype.freeVariable = (function (name, reserve) {
  _$jscoverage['coffee-script/scope.js'][89]++;
  var index, temp;
  _$jscoverage['coffee-script/scope.js'][90]++;
  if (reserve == null) {
    _$jscoverage['coffee-script/scope.js'][91]++;
    reserve = true;
  }
  _$jscoverage['coffee-script/scope.js'][93]++;
  index = 0;
  _$jscoverage['coffee-script/scope.js'][94]++;
  while (this.check((temp = this.temporary(name, index)))) {
    _$jscoverage['coffee-script/scope.js'][95]++;
    index++;
}
  _$jscoverage['coffee-script/scope.js'][97]++;
  if (reserve) {
    _$jscoverage['coffee-script/scope.js'][98]++;
    this.add(temp, "var", true);
  }
  _$jscoverage['coffee-script/scope.js'][100]++;
  return temp;
});
  _$jscoverage['coffee-script/scope.js'][103]++;
  Scope.prototype.assign = (function (name, value) {
  _$jscoverage['coffee-script/scope.js'][104]++;
  this.add(name, {value: value, assigned: true}, true);
  _$jscoverage['coffee-script/scope.js'][108]++;
  return this.hasAssignments = true;
});
  _$jscoverage['coffee-script/scope.js'][111]++;
  Scope.prototype.hasDeclarations = (function () {
  _$jscoverage['coffee-script/scope.js'][112]++;
  return ! ! this.declaredVariables().length;
});
  _$jscoverage['coffee-script/scope.js'][115]++;
  Scope.prototype.declaredVariables = (function () {
  _$jscoverage['coffee-script/scope.js'][116]++;
  var realVars, tempVars, v, _i, _len, _ref1;
  _$jscoverage['coffee-script/scope.js'][117]++;
  realVars = [];
  _$jscoverage['coffee-script/scope.js'][118]++;
  tempVars = [];
  _$jscoverage['coffee-script/scope.js'][119]++;
  _ref1 = this.variables;
  _$jscoverage['coffee-script/scope.js'][120]++;
  for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
    _$jscoverage['coffee-script/scope.js'][121]++;
    v = _ref1[_i];
    _$jscoverage['coffee-script/scope.js'][122]++;
    if (v.type === "var") {
      _$jscoverage['coffee-script/scope.js'][123]++;
      (v.name.charAt(0) === "_"? tempVars: realVars).push(v.name);
    }
}
  _$jscoverage['coffee-script/scope.js'][126]++;
  return realVars.sort().concat(tempVars.sort());
});
  _$jscoverage['coffee-script/scope.js'][129]++;
  Scope.prototype.assignedVariables = (function () {
  _$jscoverage['coffee-script/scope.js'][130]++;
  var v, _i, _len, _ref1, _results;
  _$jscoverage['coffee-script/scope.js'][131]++;
  _ref1 = this.variables;
  _$jscoverage['coffee-script/scope.js'][132]++;
  _results = [];
  _$jscoverage['coffee-script/scope.js'][133]++;
  for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
    _$jscoverage['coffee-script/scope.js'][134]++;
    v = _ref1[_i];
    _$jscoverage['coffee-script/scope.js'][135]++;
    if (v.type.assigned) {
      _$jscoverage['coffee-script/scope.js'][136]++;
      _results.push("" + v.name + " = " + v.type.value);
    }
}
  _$jscoverage['coffee-script/scope.js'][139]++;
  return _results;
});
  _$jscoverage['coffee-script/scope.js'][142]++;
  return Scope;
})();
}).call(this);
_$jscoverage['coffee-script/scope.js'].source = ["// Generated by CoffeeScript 1.4.0","(function() {","  var Scope, extend, last, _ref;","","  _ref = require('./helpers'), extend = _ref.extend, last = _ref.last;","","  exports.Scope = Scope = (function() {","","    Scope.root = null;","","    function Scope(parent, expressions, method) {","      this.parent = parent;","      this.expressions = expressions;","      this.method = method;","      this.variables = [","        {","          name: 'arguments',","          type: 'arguments'","        }","      ];","      this.positions = {};","      if (!this.parent) {","        Scope.root = this;","      }","    }","","    Scope.prototype.add = function(name, type, immediate) {","      if (this.shared &amp;&amp; !immediate) {","        return this.parent.add(name, type, immediate);","      }","      if (Object.prototype.hasOwnProperty.call(this.positions, name)) {","        return this.variables[this.positions[name]].type = type;","      } else {","        return this.positions[name] = this.variables.push({","          name: name,","          type: type","        }) - 1;","      }","    };","","    Scope.prototype.namedMethod = function() {","      if (this.method.name || !this.parent) {","        return this.method;","      }","      return this.parent.namedMethod();","    };","","    Scope.prototype.find = function(name) {","      if (this.check(name)) {","        return true;","      }","      this.add(name, 'var');","      return false;","    };","","    Scope.prototype.parameter = function(name) {","      if (this.shared &amp;&amp; this.parent.check(name, true)) {","        return;","      }","      return this.add(name, 'param');","    };","","    Scope.prototype.check = function(name) {","      var _ref1;","      return !!(this.type(name) || ((_ref1 = this.parent) != null ? _ref1.check(name) : void 0));","    };","","    Scope.prototype.temporary = function(name, index) {","      if (name.length &gt; 1) {","        return '_' + name + (index &gt; 1 ? index - 1 : '');","      } else {","        return '_' + (index + parseInt(name, 36)).toString(36).replace(/\\d/g, 'a');","      }","    };","","    Scope.prototype.type = function(name) {","      var v, _i, _len, _ref1;","      _ref1 = this.variables;","      for (_i = 0, _len = _ref1.length; _i &lt; _len; _i++) {","        v = _ref1[_i];","        if (v.name === name) {","          return v.type;","        }","      }","      return null;","    };","","    Scope.prototype.freeVariable = function(name, reserve) {","      var index, temp;","      if (reserve == null) {","        reserve = true;","      }","      index = 0;","      while (this.check((temp = this.temporary(name, index)))) {","        index++;","      }","      if (reserve) {","        this.add(temp, 'var', true);","      }","      return temp;","    };","","    Scope.prototype.assign = function(name, value) {","      this.add(name, {","        value: value,","        assigned: true","      }, true);","      return this.hasAssignments = true;","    };","","    Scope.prototype.hasDeclarations = function() {","      return !!this.declaredVariables().length;","    };","","    Scope.prototype.declaredVariables = function() {","      var realVars, tempVars, v, _i, _len, _ref1;","      realVars = [];","      tempVars = [];","      _ref1 = this.variables;","      for (_i = 0, _len = _ref1.length; _i &lt; _len; _i++) {","        v = _ref1[_i];","        if (v.type === 'var') {","          (v.name.charAt(0) === '_' ? tempVars : realVars).push(v.name);","        }","      }","      return realVars.sort().concat(tempVars.sort());","    };","","    Scope.prototype.assignedVariables = function() {","      var v, _i, _len, _ref1, _results;","      _ref1 = this.variables;","      _results = [];","      for (_i = 0, _len = _ref1.length; _i &lt; _len; _i++) {","        v = _ref1[_i];","        if (v.type.assigned) {","          _results.push(\"\" + v.name + \" = \" + v.type.value);","        }","      }","      return _results;","    };","","    return Scope;","","  })();","","}).call(this);"];
