summaryrefslogtreecommitdiff
path: root/object.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-05-06 06:51:31 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-05-06 06:51:31 +0000
commit7752fb4205ecf5de2021a7924c213516c8a8d858 (patch)
tree112f7e4154e500bf48240f8b4cfaab09e351fd6e /object.c
parent6154ce97a7915ac70326c007ee04a22fe5742e04 (diff)
* object.c (rb_obj_methods): list singleton methods if recur
argument is false; list all methods otherwise. * numeric.c (num_step): double epsilon to make "1.1.step(1.5,0.1)" to work. * ext/gdbm/gdbm.c (fgdbm_values_at): new method to replace select(index..). * ext/sdbm/init.c (fsdbm_values_at): ditto. * ext/dbm/dbm.c (fdbm_values_at): ditto. * ext/dbm/dbm.c (DBM::VERSION): defined. * ext/gdbm/testgdbm.rb: replace select with values_at. * ext/sdbm/testsdbm.rb: ditto. * ext/dbm/testdbm.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3758 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'object.c')
-rw-r--r--object.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/object.c b/object.c
index 1bbcd5f2ca..49e7347ee0 100644
--- a/object.c
+++ b/object.c
@@ -904,13 +904,23 @@ rb_obj_methods(argc, argv, obj)
VALUE *argv;
VALUE obj;
{
+ retry:
if (argc == 0) {
VALUE args[1];
args[0] = Qtrue;
return rb_class_instance_methods(1, args, CLASS_OF(obj));
}
- return rb_class_instance_methods(argc, argv, CLASS_OF(obj));
+ else {
+ VALUE recur;
+
+ rb_scan_args(argc, argv, "1", &recur);
+ if (RTEST(recur)) {
+ argc = 0;
+ goto retry;
+ }
+ return rb_obj_singleton_methods(argc, argv, obj);
+ }
}
static VALUE