summaryrefslogtreecommitdiffstats
path: root/enumerator.c
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-11-11 16:32:34 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-11-11 16:32:34 +0000
commitbd845ae1bf3cf31e61b2d0da08663f53b96f4554 (patch)
tree74e4eb699014d0f0fd82e75fbe8f2c524bfccd6e /enumerator.c
parentc354e4fc8ddcfe7d861af745c8e5d70d3a687c26 (diff)
downloadruby-bd845ae1bf3cf31e61b2d0da08663f53b96f4554.tar.gz
ruby-bd845ae1bf3cf31e61b2d0da08663f53b96f4554.tar.xz
ruby-bd845ae1bf3cf31e61b2d0da08663f53b96f4554.zip
* enumerator.c (yielder_yield_push): Yielder#<< should return self.
[ruby-dev:39660] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25721 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enumerator.c')
-rw-r--r--enumerator.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/enumerator.c b/enumerator.c
index e341c07d7..7c50f3dda 100644
--- a/enumerator.c
+++ b/enumerator.c
@@ -1012,6 +1012,13 @@ yielder_yield(VALUE obj, VALUE args)
return rb_proc_call(ptr->proc, args);
}
+/* :nodoc: */
+static VALUE yielder_yield_push(VALUE obj, VALUE args)
+{
+ yielder_yield(obj, args);
+ return obj;
+}
+
static VALUE
yielder_yield_i(VALUE obj, VALUE memo, int argc, VALUE *argv)
{
@@ -1228,7 +1235,7 @@ Init_Enumerator(void)
rb_define_alloc_func(rb_cYielder, yielder_allocate);
rb_define_method(rb_cYielder, "initialize", yielder_initialize, 0);
rb_define_method(rb_cYielder, "yield", yielder_yield, -2);
- rb_define_method(rb_cYielder, "<<", yielder_yield, -2);
+ rb_define_method(rb_cYielder, "<<", yielder_yield_push, -2);
id_rewind = rb_intern("rewind");
id_each = rb_intern("each");