2.1.85 [ECMA-262/6] Section 21.1.3.17 String.prototype.split ( separator, limit )

V0184: lim should be ToLength(limit) but may not be

The specification states:

 21.1.3.17 String.prototype.split ( separator, limit )
  
     Returns an Array object into which substrings of the result of converting this object 
     to a String have been stored. ...
  
     When the split method is called, the following steps are taken:
  
         ...
         8.  If limit is undefined, let lim = 2^53–1; else let lim = ToLength(limit).

All document modes (All versions)

If limit is not undefined, lim should be ToLength(limit), but instead is taken to be the value of limit converted to a 32-bit unsigned value. For example, if limit = -1, lim is 0xFFFFFFFF, the largest 32-bit number. If limit = 0xA987654321, lim is 0x87654321.

V0138: @@split is not implemented

The specification states:

 21.1.3.17 String.prototype.split ( separator, limit )
  
     Returns an Array object into which substrings of the result of converting this object 
     to a String have been stored. The substrings are determined by searching from left to 
     right for occurrences of separator; these occurrences are not part of any substring 
     in the returned array, but serve to divide up the String value. The value of 
     separator may be a String of any length or it may be an object, such as an RegExp, 
     that has a @@split method.
  
     When the split method is called, the following steps are taken:
  
         ...
         3.  If separator is neither undefined nor null, then
             a. Let splitter be GetMethod(separator, @@split).
             b. ReturnIfAbrupt(splitter).
             c. If splitter is not undefined , then
                 i.   Return Call(splitter, separator, «‍O, limit»).

IE11 Mode (All versions)

@@split is not implemented.