From 5fc301f07d0ce26ab93ff237d15fa81894c9f1d6 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 25 Jun 2021 10:10:34 +0900 Subject: class.c: call `method_added` hooks on alias definitions; #2339 --- src/class.c | 3 +++ src/vm.c | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/class.c b/src/class.c index 8775ded3b..33a610c26 100644 --- a/src/class.c +++ b/src/class.c @@ -2282,6 +2282,8 @@ mrb_mod_to_s(mrb_state *mrb, mrb_value klass) } } +void mrb_method_added(mrb_state *mrb, struct RClass *c, mrb_sym mid); + static mrb_value mrb_mod_alias(mrb_state *mrb, mrb_value mod) { @@ -2290,6 +2292,7 @@ mrb_mod_alias(mrb_state *mrb, mrb_value mod) mrb_get_args(mrb, "nn", &new_name, &old_name); mrb_alias_method(mrb, c, new_name, old_name); + mrb_method_added(mrb, c, new_name); return mod; } diff --git a/src/vm.c b/src/vm.c index f76ce9eac..a6211c118 100644 --- a/src/vm.c +++ b/src/vm.c @@ -2921,7 +2921,8 @@ RETRY_TRY_BLOCK: if (!check_target_class(mrb)) goto L_RAISE; target = mrb_vm_ci_target_class(mrb->c->ci); mrb_alias_method(mrb, target, syms[a], syms[b]); - NEXT; + mrb_method_added(mrb, target, syms[a]); + NEXT; } CASE(OP_UNDEF, B) { struct RClass *target; -- cgit v1.2.3