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) over 1 year 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.