Issue #16350 has been reported by parker (Parker Finch).

----------------------------------------
Bug #16350: ArithmeticSequence#member? can result in infinite loop
https://bugs.ruby-lang.org/issues/16350

* Author: parker (Parker Finch)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.7.0dev
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
I'm not sure if this is a bug or a feature, it feels somewhere in between.

This is my first time contributing to the Ruby code, let me know what I can improve in this report!

ArithmeticSequence#member? enumerates through the sequence in order to determine if an element is included. (It just uses Enumerable#member?.) This leads to an infinite loop if the sequence is infinite and the element is not included, such as `1.step.member?(0)`.

I expected `1.step.member?(0)` to return `false`.

Since ArithmeticSequences are much more constrained than regular Enumerables, the #member? method can be overridden to efficiently determine if an element is included in the sequence.

I started implementing this change (patch attached) but got a little confused when trying to handle floats. Before digging in too deeply, I wanted to check if this is a change that will be accepted.

Let me know if I should keep looking into this!

---Files--------------------------------
0001-Start-implementing-ArithmeticSequence-member.patch (3.96 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>