From 21f3b5c73e86bfe5ba4a61541b64cf228373d4ce Mon Sep 17 00:00:00 2001 From: Shannon Skipper Date: Tue, 7 May 2024 16:21:26 -0700 Subject: [PATCH] Add an Enumerator#eager that returns `self` --- enumerator.c | 14 ++++++++++++++ test/ruby/test_enum.rb | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/enumerator.c b/enumerator.c index 193a865dbc5536..8622101bedfda3 100644 --- a/enumerator.c +++ b/enumerator.c @@ -1216,6 +1216,19 @@ append_method(VALUE obj, VALUE str, ID default_method, VALUE default_args) return str; } +/* + * call-seq: + * enumerator.eager -> enumerator + * + * Returns self. + */ + +static VALUE +enumerator_eager(VALUE obj) +{ + return obj; +} + /* * call-seq: * e.inspect -> string @@ -4478,6 +4491,7 @@ InitVM_Enumerator(void) rb_define_method(rb_cEnumerator, "inspect", enumerator_inspect, 0); rb_define_method(rb_cEnumerator, "size", enumerator_size, 0); rb_define_method(rb_cEnumerator, "+", enumerator_plus, 1); + rb_define_method(rb_mEnumerable, "eager", enumerator_eager, 0); rb_define_method(rb_mEnumerable, "chain", enum_chain, -1); /* Lazy */ diff --git a/test/ruby/test_enum.rb b/test/ruby/test_enum.rb index 7503e062726d8e..e0e127476b04e5 100644 --- a/test/ruby/test_enum.rb +++ b/test/ruby/test_enum.rb @@ -102,6 +102,10 @@ def each end end + def test_eager + assert_equal(@obj, @obj.eager) + end + def test_find assert_equal(2, @obj.find {|x| x % 2 == 0 }) assert_equal(nil, @obj.find {|x| false })