Issue #8815 has been reported by ebouchut (Eric Bouchut).

----------------------------------------
Bug #8815: Enumerable.drop_while returns an Enumerator. Calling next twice on the Enumerator raises StopIteration even if there are still items available 
https://bugs.ruby-lang.org/issues/8815

Author: ebouchut (Eric Bouchut)
Status: Open
Priority: Normal
Assignee: 
Category: core
Target version: 
ruby -v: ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.3.0]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


I have an enumerable (array) that contains 3 items 
  [1, 2, 3].
I send drop_while without a block to this array to get an Enumerator.
  enumerator = [1, 2, 3].drop_while

When I call next twice on the Enumerator
  enumerator.next  # => 1
  enumerator.next  # => raises StopIteration
The second call enumerator.next raises StopIteration whereas the Enumerable contains more than one item.

I expected the second call to enumerator.next to return 2 instead.


I reproduced this on:
 - ruby-1.9.3-p448
 - ruby-2.0.0-p247
 - rbx-2.0.0
However it works fine in 1.8.7, even if 1.8.7's documentation did not mention about Enumerable.drop_while returning an Enumerator.

Here is an RSpec example that isolates the problem:
  http://preview.tinyurl.com/enumerable-drop-while



Eric


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