summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-11-22 00:02:34 +0900
committerGitHub <[email protected]>2020-11-22 00:02:34 +0900
commite02d0ff78c0e521e679fb0bc3b9032e13cadc5c6 (patch)
treeb1a09fc8fac8afc1fc339ca43969f3e2ac3c6eaa /src
parent049e749c8b12c79a7439ce0fdb402896807eb42b (diff)
parentb2bfcabae2f5a5c567571508e210c58cccfc1f70 (diff)
downloadmruby-e02d0ff78c0e521e679fb0bc3b9032e13cadc5c6.tar.gz
mruby-e02d0ff78c0e521e679fb0bc3b9032e13cadc5c6.zip
Merge pull request #5167 from dearblue/singleton-method
Improved `Object#define_singleton_method`
Diffstat (limited to 'src')
-rw-r--r--src/class.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/class.c b/src/class.c
index e28951499..6ec2ab8ca 100644
--- a/src/class.c
+++ b/src/class.c
@@ -2418,10 +2418,9 @@ mrb_mod_method_defined(mrb_state *mrb, mrb_value mod)
return mrb_bool_value(mrb_obj_respond_to(mrb, mrb_class_ptr(mod), id));
}
-static mrb_value
-mod_define_method(mrb_state *mrb, mrb_value self)
+mrb_value
+mrb_mod_define_method_m(mrb_state *mrb, struct RClass *c)
{
- struct RClass *c = mrb_class_ptr(self);
struct RProc *p;
mrb_method_t m;
mrb_sym mid;
@@ -2452,9 +2451,15 @@ mod_define_method(mrb_state *mrb, mrb_value self)
}
static mrb_value
+mod_define_method(mrb_state *mrb, mrb_value self)
+{
+ return mrb_mod_define_method_m(mrb, mrb_class_ptr(self));
+}
+
+static mrb_value
top_define_method(mrb_state *mrb, mrb_value self)
{
- return mod_define_method(mrb, mrb_obj_value(mrb->object_class));
+ return mrb_mod_define_method_m(mrb, mrb->object_class);
}
static mrb_value