simple-squiggle

A restricted subset of Squiggle
Log | Files | Refs | README

IndexError.js (1205B)


      1 /**
      2  * Create a range error with the message:
      3  *     'Index out of range (index < min)'
      4  *     'Index out of range (index < max)'
      5  *
      6  * @param {number} index     The actual index
      7  * @param {number} [min=0]   Minimum index (included)
      8  * @param {number} [max]     Maximum index (excluded)
      9  * @extends RangeError
     10  */
     11 export function IndexError(index, min, max) {
     12   if (!(this instanceof IndexError)) {
     13     throw new SyntaxError('Constructor must be called with the new operator');
     14   }
     15 
     16   this.index = index;
     17 
     18   if (arguments.length < 3) {
     19     this.min = 0;
     20     this.max = min;
     21   } else {
     22     this.min = min;
     23     this.max = max;
     24   }
     25 
     26   if (this.min !== undefined && this.index < this.min) {
     27     this.message = 'Index out of range (' + this.index + ' < ' + this.min + ')';
     28   } else if (this.max !== undefined && this.index >= this.max) {
     29     this.message = 'Index out of range (' + this.index + ' > ' + (this.max - 1) + ')';
     30   } else {
     31     this.message = 'Index out of range (' + this.index + ')';
     32   }
     33 
     34   this.stack = new Error().stack;
     35 }
     36 IndexError.prototype = new RangeError();
     37 IndexError.prototype.constructor = RangeError;
     38 IndexError.prototype.name = 'IndexError';
     39 IndexError.prototype.isIndexError = true;