From: ruby-core@... Date: 2018-10-25T21:56:09+00:00 Subject: [ruby-core:89560] [Ruby trunk Bug#15254][Rejected] Array#slice should not treat the index past the last element as a special case 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: