diff --git a/core/enumerator.rbs b/core/enumerator.rbs index addb1d48e..ee03fe198 100644 --- a/core/enumerator.rbs +++ b/core/enumerator.rbs @@ -578,6 +578,14 @@ class Enumerator::Lazy[out Elem, out Return = void] < Enumerator[Elem, Return] # Like Enumerable#compact, but chains operation to be lazy-evaluated. # def compact: () -> Enumerator::Lazy[Elem, Return] + + # + # Returns a non-lazy Enumerator converted from the lazy enumerator. + # + def eager: () -> ::Enumerator[Elem, Return] end # diff --git a/test/stdlib/Enumerator_test.rb b/test/stdlib/Enumerator_test.rb index 723378310..c6e59cee5 100644 --- a/test/stdlib/Enumerator_test.rb +++ b/test/stdlib/Enumerator_test.rb @@ -89,6 +89,16 @@ def test_to_proc end end +class EnumeratorLazyInstanceTest < Test::Unit::TestCase + include TestHelper + + testing "::Enumerator::Lazy[::Integer, ::Range[Integer]]" + + def test_eager + assert_send_type "() -> Enumerator[Integer, Range[Integer]]", (1..3).lazy, :eager + end +end + class EnumeratorChainInstanceTest < Test::Unit::TestCase include TestHelper