Actions
Bug #20725
closedInconsistent handling of doubly-unbounded ranges in Range#overlap?
Bug #20725:
Inconsistent handling of doubly-unbounded ranges in Range#overlap?
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [arm64-darwin23]
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.
Actions