Project

General

Profile

Bug #15613 ยป enum-chain-lambda-15613.patch

jeremyevans0 (Jeremy Evans), 08/28/2019 11:45 PM

View differences:

enumerator.c
return enum_chain_size(obj);
}
static VALUE
enum_chain_yield_block(RB_BLOCK_CALL_FUNC_ARGLIST(_, block))
{
return rb_funcallv(block, id_call, argc, argv);
}
static VALUE
enum_chain_enum_no_size(VALUE obj, VALUE args, VALUE eobj)
{
......
enums = objptr->enums;
block = rb_block_proc();
for (i = 0; i < RARRAY_LEN(enums); i++) {
objptr->pos = i;
rb_block_call(RARRAY_AREF(enums, i), id_each, argc, argv, enum_chain_yield_block, block);
rb_funcall_with_block(RARRAY_AREF(enums, i), id_each, argc, argv, block);
}
return obj;
test/ruby/test_enumerator.rb
e5.inspect
)
end
def test_chain_each_lambda
c = Class.new do
include Enumerable
attr_reader :is_lambda
def each(&block)
return to_enum unless block
@is_lambda = block.lambda?
end
end
e = c.new
e.chain.each{}
assert_equal(false, e.is_lambda)
e.chain.each(&->{})
assert_equal(true, e.is_lambda)
end
end
    (1-1/1)