[ruby-core:120138] [Ruby master Bug#20936] Enumerator#size returned by Range#reverse_each raises an exception

Issue #20936 has been reported by andrykonchin (Andrew Konchin). ---------------------------------------- Bug #20936: Enumerator#size returned by Range#reverse_each raises an exception https://bugs.ruby-lang.org/issues/20936 * Author: andrykonchin (Andrew Konchin) * Status: Open * ruby -v: 3.4.0dev * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- `(..3).reverse_each.size` is supposed to return `Infinity` (at least it does so in Ruby 3.3). But in Ruby 3.4 preview it raises `can't iterate from NilClass (TypeError)` what seems a regression. Ruby 3.3.5: ``` $ ruby -v -e 'p (..3).reverse_each.size' ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-darwin23] Infinity $ ruby -v -e 'p (1..).reverse_each.size' ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-darwin23] Infinity ``` 3.4.0dev: ``` $ ruby -v -e 'p (1..).reverse_each.size' ruby 3.4.0dev (2024-12-09T08:00:19Z master 652b0c13a7) +PRISM [x86_64-darwin23] Infinity $ ruby -v -e 'p (..3).reverse_each.size' ruby 3.4.0dev (2024-12-09T08:00:19Z master 652b0c13a7) +PRISM [x86_64-darwin23] -e:1:in 'Enumerator#size': can't iterate from NilClass (TypeError) from -e:1:in '<main>' ``` -- https://bugs.ruby-lang.org/

Issue #20936 has been updated by kyanagi (Kouhei Yanagita). I made a pull request: https://github.com/ruby/ruby/pull/12301 Does this fix work? ---------------------------------------- Bug #20936: Enumerator's #size returned by Range#reverse_each raises an exception for beginningless Range https://bugs.ruby-lang.org/issues/20936#change-110899 * Author: andrykonchin (Andrew Konchin) * Status: Open * ruby -v: 3.4.0dev * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- `(..3).reverse_each.size` is supposed to return `Infinity` (at least it does so in Ruby 3.3). But in Ruby 3.4 preview it raises `can't iterate from NilClass (TypeError)` what seems a regression. Ruby 3.3.5: ``` $ ruby -v -e 'p (..3).reverse_each.size' ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-darwin23] Infinity $ ruby -v -e 'p (1..).reverse_each.size' ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-darwin23] Infinity ``` 3.4.0dev: ``` $ ruby -v -e 'p (1..).reverse_each.size' ruby 3.4.0dev (2024-12-09T08:00:19Z master 652b0c13a7) +PRISM [x86_64-darwin23] Infinity $ ruby -v -e 'p (..3).reverse_each.size' ruby 3.4.0dev (2024-12-09T08:00:19Z master 652b0c13a7) +PRISM [x86_64-darwin23] -e:1:in 'Enumerator#size': can't iterate from NilClass (TypeError) from -e:1:in '<main>' ``` -- https://bugs.ruby-lang.org/

Issue #20936 has been updated by andrykonchin (Andrew Konchin). It works. Thank you! ---------------------------------------- Bug #20936: Enumerator's #size returned by Range#reverse_each raises an exception for beginningless Range https://bugs.ruby-lang.org/issues/20936#change-110906 * Author: andrykonchin (Andrew Konchin) * Status: Open * ruby -v: 3.4.0dev * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- `(..3).reverse_each.size` is supposed to return `Infinity` (at least it does so in Ruby 3.3). But in Ruby 3.4 preview it raises `can't iterate from NilClass (TypeError)` what seems a regression. Ruby 3.3.5: ``` $ ruby -v -e 'p (..3).reverse_each.size' ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-darwin23] Infinity $ ruby -v -e 'p (1..).reverse_each.size' ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-darwin23] Infinity ``` 3.4.0dev: ``` $ ruby -v -e 'p (1..).reverse_each.size' ruby 3.4.0dev (2024-12-09T08:00:19Z master 652b0c13a7) +PRISM [x86_64-darwin23] Infinity $ ruby -v -e 'p (..3).reverse_each.size' ruby 3.4.0dev (2024-12-09T08:00:19Z master 652b0c13a7) +PRISM [x86_64-darwin23] -e:1:in 'Enumerator#size': can't iterate from NilClass (TypeError) from -e:1:in '<main>' ``` -- https://bugs.ruby-lang.org/
participants (2)
-
andrykonchin (Andrew Konchin)
-
kyanagi (Kouhei Yanagita)