Project

General

Profile

Actions

Bug #20725

closed

Inconsistent handling of doubly-unbounded ranges in Range#overlap?

Added by jeromepl (Jerome Parent-Levesque) about 1 month ago. Updated about 1 month ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [arm64-darwin23]
[ruby-core:119136]

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 #2

Updated by nobu (Nobuyoshi Nakada) about 1 month ago

  • Status changed from Open to Closed

Applied in changeset commit:git|24493779b79bb57fd2e71bf6e0ababe95448a9d6.


[Bug #20725] Should not call compare on nil-endpoint

It means unbounded, always inclusive of other ranges.

Actions

Also available in: Atom PDF

Like0
Like0Like0