* enum.c (enum_count): precise argument number check.

* enum.c (enum_count): return Enumerator if no block given.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14049 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2007-11-30 10:08:03 +00:00
Родитель 092ec0146d
Коммит 9497f7996a
2 изменённых файлов: 13 добавлений и 2 удалений

Просмотреть файл

@ -1,3 +1,9 @@
Fri Nov 30 19:05:55 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
* enum.c (enum_count): precise argument number check.
* enum.c (enum_count): return Enumerator if no block given.
Fri Nov 30 16:42:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
* enum.c (enum_take_while): returns Enumerator if no block given.

9
enum.c
Просмотреть файл

@ -114,12 +114,17 @@ enum_count(int argc, VALUE *argv, VALUE obj)
rb_block_call(obj, id_each, 0, 0, count_i, (VALUE)&args);
return INT2NUM(args[1]);
}
else {
long n = 0;
else if (argc == 0) {
long n;
RETURN_ENUMERATOR(obj, 0, 0);
n = 0;
rb_block_call(obj, id_each, 0, 0, count_iter_i, (VALUE)&n);
return INT2NUM(n);
}
else {
rb_scan_args(argc, argv, "1", &argv[0]);
}
}
static VALUE