Re: Array.prototype.concat result length (ES5.1)

2011-07-18 Thread Jeff Walden
On 07/14/2011 10:04 AM, Allen Wirfs-Brock wrote: It is probably a bug, because array index based operations generally warp around to 0 at 2^32. Freudian slip? :-D Easiest fix is to just add the length-set to concat. For a quick ES5 erratum that seems best to me. Removing all the

Re: Array.prototype.concat result length (ES5.1)

2011-07-18 Thread Allen Wirfs-Brock
On Jul 18, 2011, at 10:51 AM, Jeff Walden wrote: Easiest fix is to just add the length-set to concat. For a quick ES5 erratum that seems best to me. Yes, this needs to be in the errata. Removing all the RangeError stuff, and making array indexes just non-negative integers, would be

Re: Array.prototype.concat result length (ES5.1)

2011-07-18 Thread liorean
On 07/14/2011 10:04 AM, Allen Wirfs-Brock wrote: It is probably a bug, because array index based operations generally warp around to 0 at 2^32. On 18 July 2011 19:51, Jeff Walden jwalden...@mit.edu wrote: Removing all the RangeError stuff, and making array indexes just non-negative integers,

Array.prototype.concat result length (ES5.1)

2011-07-14 Thread Andrew Oakley
I'm not sure the Array.prototype.concat algorithm (§ 15.4.4.4) is quite right. As far as I can see the length property of the result (A) is not explicitly set anywhere in the algorithm so we are relying on the [[DefineOwnProperty]] method of A to set the length for us when we add indexed

Re: Array.prototype.concat result length (ES5.1)

2011-07-14 Thread Yusuke Suzuki
I also reported it to es5-discuss https://mail.mozilla.org/pipermail/es5-discuss/2010-December/003851.html, and got This is a bug in the spec. I think [[Put]](length, {[[Value]]: n}, true) step should be inserted to the end of this(like, pop, push method), is it correct? On Thu, Jul 14, 2011 at

Re: Array.prototype.concat result length (ES5.1)

2011-07-14 Thread Allen Wirfs-Brock
(don't miss the second part of my response) On Jul 14, 2011, at 5:21 AM, Andrew Oakley wrote: I'm not sure the Array.prototype.concat algorithm (§ 15.4.4.4) is quite right. As far as I can see the length property of the result (A) is not explicitly set anywhere in the algorithm so we are

Re: Array.prototype.concat result length (ES5.1)

2011-07-14 Thread Brendan Eich
On Jul 14, 2011, at 10:04 AM, Allen Wirfs-Brock wrote: This appears to be a (possible) specification bug that first occurs in ES3 and which was not corrected in ES5. I appears in concat and push. But no other algorithms. The problem occurs when when a length value is incremented and then

Re: Array.prototype.concat result length (ES5.1)

2011-07-14 Thread Allen Wirfs-Brock
On Jul 14, 2011, at 10:39 AM, Brendan Eich wrote: On Jul 14, 2011, at 10:04 AM, Allen Wirfs-Brock wrote: This appears to be a (possible) specification bug that first occurs in ES3 and which was not corrected in ES5. I appears in concat and push. But no other algorithms. The problem

Re: Array.prototype.concat result length (ES5.1)

2011-07-14 Thread Brendan Eich
On Jul 14, 2011, at 12:35 PM, Allen Wirfs-Brock wrote: What about the possibility of simply eliminating the range error and the Uint32 restriction on the association between array indexed properties and the length property. Instead replace it with a ToInteger constraint. This is

Re: Array.prototype.concat result length (ES5.1)

2011-07-14 Thread Mark S. Miller
Would we just be postponing all those same edge cases from 2**32 to 2**53? On Thu, Jul 14, 2011 at 1:54 PM, Brendan Eich bren...@mozilla.com wrote: On Jul 14, 2011, at 12:35 PM, Allen Wirfs-Brock wrote: What about the possibility of simply eliminating the range error and the Uint32

Re: Array.prototype.concat result length (ES5.1)

2011-07-14 Thread Brendan Eich
On Jul 14, 2011, at 2:14 PM, Mark S. Miller wrote: Would we just be postponing all those same edge cases from 2**32 to 2**53? No, because you lose precision adding 1 to an index to get length after that. No bignums. /be On Thu, Jul 14, 2011 at 1:54 PM, Brendan Eich bren...@mozilla.com