Fix Enumerable#each_cons and Enumerable#each_slice to return a receiver

Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
This commit is contained in:
TSUYUSATO Kitsune 2021-10-25 12:13:44 +09:00 committed by GitHub
parent aa09c8dae0
commit dfb47bbd17
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
Notes: git 2021-10-25 12:14:06 +09:00
Merged: https://github.com/ruby/ruby/pull/1509

Merged-By: nobu <nobu@ruby-lang.org>
4 changed files with 14 additions and 10 deletions

12
enum.c
View file

@ -2961,11 +2961,11 @@ enum_each_slice_size(VALUE obj, VALUE args, VALUE eobj)
/*
* call-seq:
* each_slice(n) { ... } -> nil
* each_slice(n) { ... } -> self
* each_slice(n) -> enumerator
*
* Calls the block with each successive disjoint +n+-tuple of elements;
* returns +nil+:
* returns +self+:
*
* a = []
* (1..10).each_slice(3) {|tuple| a.push(tuple) } # => nil
@ -2997,7 +2997,7 @@ enum_each_slice(VALUE obj, VALUE n)
ary = memo->v1;
if (RARRAY_LEN(ary) > 0) rb_yield(ary);
return Qnil;
return obj;
}
static VALUE
@ -3040,11 +3040,11 @@ enum_each_cons_size(VALUE obj, VALUE args, VALUE eobj)
/*
* call-seq:
* each_cons(n) { ... } -> nil
* each_cons(n) { ... } -> self
* each_cons(n) -> enumerator
*
* Calls the block with each successive overlapped +n+-tuple of elements;
* returns +nil+:
* returns +self+:
*
* a = []
* (1..5).each_cons(3) {|element| a.push(element) } # => nil
@ -3072,7 +3072,7 @@ enum_each_cons(VALUE obj, VALUE n)
memo = MEMO_NEW(rb_ary_new2(size), dont_recycle_block_arg(arity), size);
rb_block_call(obj, id_each, 0, 0, each_cons_i, (VALUE)memo);
return Qnil;
return obj;
}
static VALUE