Actions
Bug #20725
closedInconsistent 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
Like0
Like0Like0