Bug #20725
closedInconsistent handling of doubly-unbounded ranges in Range#overlap?
Description
The new Range#overlap?
method does not seem to have a clear definition of how it behaves when passed ranges with nil begin and end (nil..)
.
In the following two cases, it seems to treat this type of range as an "infinite" range that covers the entire space and therefore overlaps with anything:
(nil..nil).overlap?(nil..) # => true
(nil..nil).overlap?(3..) # => true
However it behaves differently in this case:
(nil..nil).overlap?(..3) # => false
Note that this also behaves differently than the ActiveSupport implementation of #overlap? in a Ruby version < 3.3 such as 3.2:
require "active_support"
(nil..nil).overlap?(..3) # => true
I think (nil..nil)
ranges should always be considered to be completely unbounded, i.e. infinite and covering the whole space. They should therefore always return true
when overlapping with any non-empty range.
Updated by nobu (Nobuyoshi Nakada) 4 months ago
Updated by nobu (Nobuyoshi Nakada) 4 months ago
- Status changed from Open to Closed
Applied in changeset git|24493779b79bb57fd2e71bf6e0ababe95448a9d6.
[Bug #20725] Should not call compare on nil
-endpoint
It means unbounded, always inclusive of other ranges.