summaryrefslogtreecommitdiff
path: root/enum.c
diff options
context:
space:
mode:
Diffstat (limited to 'enum.c')
-rw-r--r--enum.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/enum.c b/enum.c
index a1976e32fd..50b34ef16c 100644
--- a/enum.c
+++ b/enum.c
@@ -430,7 +430,14 @@ enum_collect(obj)
{
VALUE ary = rb_ary_new();
- rb_iterate(rb_each, obj, rb_block_given_p() ? collect_i : collect_all, ary);
+ if (!rb_block_given_p()) {
+ rb_warn("Enumerable#%s without a block does not return an array in 1.9 and later",
+ rb_id2name(rb_frame_last_func()));
+ rb_iterate(rb_each, obj, collect_all, ary);
+ }
+ else {
+ rb_iterate(rb_each, obj, collect_i, ary);
+ }
return ary;
}