From: duerst@... Date: 2020-12-21T07:01:36+00:00 Subject: [ruby-core:101570] [Ruby master Bug#17409] Endless range of dates stuck on include? when miss Issue #17409 has been updated by duerst (Martin D�rst). zverok (Victor Shepelev) wrote in #note-1: > Nothing specific to dates there, and not a bug. > > This is just how ranges work: > * `range.include?(x)` is basically `range.each.any? {|el| el == x }`, which, with endless range, is an infinite loop > * `range.cover?(x)` is basically `x >= range.begin && x <= range.end`, which is instantaneous. > > The behavior of `#include?` is redefined for Numeric and String, so `(1..).include?(0)` will behave like `cover?` (return `false` immediately), but with any other type, the behavior is the same as for Date. What's the reason there is no redefinition for Date? Is there an actual use case for something like the current `(Date.today..).include?(Date.today - 1)` (of course with other actual values, because we don't need this to create an infinite loop)? ---------------------------------------- Bug #17409: Endless range of dates stuck on include? when miss https://bugs.ruby-lang.org/issues/17409#change-89355 * Author: gsmetal (Sergey G) * Status: Rejected * Priority: Normal * ruby -v: ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- This code stucks (on latest ruby 2.7.1): ```ruby require 'date' (Date.today..).include?(Date.today - 1) ``` But it works well with `cover?`: ```ruby 2.7.1 :001 > require 'date' => true 2.7.1 :002 > (Date.today..).cover?(Date.today - 1) => false ``` -- https://bugs.ruby-lang.org/ Unsubscribe: