Issue #15254 has been updated by marcandre (Marc-Andre Lafortune).

Status changed from Open to Rejected

This is per spec.

Here's one way to see the start indices:

```
   [ :a,  :b,  :c   ]
#   ^    ^    ^   ^
#   0    1    2   3
#  -3   -2   -1
```

Other indices (4, -4) are out of bounds and will result in `nil` return.

----------------------------------------
Bug #15254: Array#slice should not treat the index past the last element as a special case
https://bugs.ruby-lang.org/issues/15254#change-74610

* Author: Malakai97 (Bryan Hockey)
* Status: Rejected
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
Array#slice should not treat the index past the last element as a special case. This causes Array#slice(start, length) has inconsistent behavior when given out of bounds values for the start parameter. It sometimes returns an array, and sometimes nil.

~~~
    describe "inconsistencies starting in past the end" do
      it { @array.slice(5,3).must_equal [] } # passes
      it { @array.slice(6,3).must_equal [] } # returns nil
      it { @array.slice(100,3).must_equal [] } # returns nil
    end

    describe "failures when starting before the start" do
      it { @array.slice(-5,1).must_equal [0] } # passes
      it { @array.slice(-5,5).must_equal @array } # passes
      it { @array.slice(-6,2).must_equal [0] } # returns nil
      it { @array.slice(-6,6).must_equal @array } # returns nil
    end
~~~

The attached script contains the minitest tests.

---Files--------------------------------
array_slice_start_length_test.rb (645 Bytes)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>