From 5deb1e549ba96758d481423acdeccc98cff908de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Fri, 22 Jan 2016 18:51:36 +0100 Subject: [PATCH] Add +0 to Array.prototype.indexOf to convert negative zero to positive zero Fixes https://bugs.ecmascript.org/show_bug.cgi?id=4545 --- spec.html | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/spec.html b/spec.html index 16171b97ef4..700deefceb9 100644 --- a/spec.html +++ b/spec.html @@ -29368,7 +29368,7 @@

Array.from ( _items_ [ , _mapfn_ [ , _thisArg_ ] ] )

1. Let _defineStatus_ be CreateDataPropertyOrThrow(_A_, _Pk_, _mappedValue_). 1. If _defineStatus_ is an abrupt completion, return ? IteratorClose(_iterator_, _defineStatus_). 1. Increase _k_ by 1. - 1. Note: _items_ is not an Iterable so assume it is an array-like object. + 1. NOTE: _items_ is not an Iterable so assume it is an array-like object. 1. Let _arrayLike_ be ! ToObject(_items_). 1. Let _len_ be ? ToLength(? Get(_arrayLike_, `"length"`)). 1. If IsConstructor(_C_) is *true*, then @@ -29809,7 +29809,8 @@

Array.prototype.indexOf ( _searchElement_ [ , _fromIndex_ ] )

1. Let _n_ be ? ToInteger(_fromIndex_). (If _fromIndex_ is *undefined*, this step produces the value 0.) 1. If _n_ ≥ _len_, return -1. 1. If _n_ ≥ 0, then - 1. Let _k_ be _n_. + 1. Let _k_ be _n_ + (*+0*). + 1. NOTE: Adding a positive zero converts *-0* to *+0*. 1. Else _n_ < 0, 1. Let _k_ be _len_ + _n_. 1. If _k_ < 0, let _k_ be 0. @@ -29879,7 +29880,9 @@

Array.prototype.lastIndexOf ( _searchElement_ [ , _fromIndex_ ] )

1. Let _len_ be ? ToLength(? Get(_O_, `"length"`)). 1. If _len_ is 0, return -1. 1. If argument _fromIndex_ was passed, let _n_ be ? ToInteger(_fromIndex_); else let _n_ be _len_-1. - 1. If _n_ ≥ 0, let _k_ be min(_n_, _len_ - 1). + 1. If _n_ ≥ 0, then + 1. Let _k_ be min(_n_, _len_ - 1). + 1. NOTE: Applying the mathematical function min(…) converts *-0* to *+0*. 1. Else _n_ < 0, 1. Let _k_ be _len_ + _n_. 1. Repeat, while _k_ ≥ 0 @@ -30977,7 +30980,7 @@

Runtime Semantics: IterableToArrayLike( _items_ )

1. Let _nextValue_ be ? IteratorValue(_next_). 1. Append _nextValue_ to the end of the List _values_. 1. Return CreateArrayFromList(_values_). - 1. Note: _items_ is not an Iterable so assume it is already an array-like object. + 1. NOTE: _items_ is not an Iterable so assume it is already an array-like object. 1. Return ! ToObject(_items_).