diff --git a/mrbgems/mruby-method/src/method.c b/mrbgems/mruby-method/src/method.c index 6d1b2decc..deb37b4a5 100644 --- a/mrbgems/mruby-method/src/method.c +++ b/mrbgems/mruby-method/src/method.c @@ -267,13 +267,12 @@ method_bcall(mrb_state *mrb, mrb_value self) static mrb_value method_unbind(mrb_state *mrb, mrb_value self) { - struct RObject *ume; mrb_value owner = mrb_iv_get(mrb, self, MRB_SYM(_owner)); mrb_value name = mrb_iv_get(mrb, self, MRB_SYM(_name)); mrb_value proc = mrb_iv_get(mrb, self, MRB_SYM(_proc)); mrb_value klass = mrb_iv_get(mrb, self, MRB_SYM(_klass)); - ume = method_object_alloc(mrb, mrb_class_get_id(mrb, MRB_SYM(UnboundMethod))); + struct RObject *ume = method_object_alloc(mrb, mrb_class_get_id(mrb, MRB_SYM(UnboundMethod))); mrb_obj_iv_set(mrb, ume, MRB_SYM(_owner), owner); mrb_obj_iv_set(mrb, ume, MRB_SYM(_recv), mrb_nil_value()); mrb_obj_iv_set(mrb, ume, MRB_SYM(_name), name); @@ -307,8 +306,6 @@ method_super_method(mrb_state *mrb, mrb_value self) mrb_value owner = mrb_iv_get(mrb, self, MRB_SYM(_owner)); mrb_value name = mrb_iv_get(mrb, self, MRB_SYM(_name)); struct RClass *super, *rklass; - struct RProc *proc; - struct RObject *me; if (mrb_type(owner) == MRB_TT_MODULE) { struct RClass *m = mrb_class_ptr(owner); @@ -323,19 +320,18 @@ method_super_method(mrb_state *mrb, mrb_value self) super = mrb_class_ptr(owner)->super; } - proc = method_search_vm(mrb, &super, mrb_symbol(name)); + struct RProc *proc = method_search_vm(mrb, &super, mrb_symbol(name)); if (!proc) return mrb_nil_value(); - rklass = super; - super = mrb_class_real(super); if (!super) return mrb_nil_value(); + super = mrb_class_real(super); - me = method_object_alloc(mrb, mrb_obj_class(mrb, self)); + struct RObject *me = method_object_alloc(mrb, mrb_obj_class(mrb, self)); mrb_obj_iv_set(mrb, me, MRB_SYM(_owner), mrb_obj_value(super)); mrb_obj_iv_set(mrb, me, MRB_SYM(_recv), recv); mrb_obj_iv_set(mrb, me, MRB_SYM(_name), name); mrb_obj_iv_set(mrb, me, MRB_SYM(_proc), mrb_obj_value(proc)); - mrb_obj_iv_set(mrb, me, MRB_SYM(_klass), mrb_obj_value(rklass)); + mrb_obj_iv_set(mrb, me, MRB_SYM(_klass), mrb_obj_value(super)); return mrb_obj_value(me); } @@ -438,8 +434,6 @@ method_to_s(mrb_state *mrb, mrb_value self) static mrb_bool search_method_owner(mrb_state *mrb, struct RClass *c, mrb_value obj, mrb_sym name, struct RClass **owner, struct RProc **proc, mrb_bool unbound) { - mrb_value ret; - *owner = c; *proc = method_search_vm(mrb, owner, name); if (!*proc) { @@ -449,7 +443,7 @@ search_method_owner(mrb_state *mrb, struct RClass *c, mrb_value obj, mrb_sym nam if (!mrb_respond_to(mrb, obj, MRB_SYM_Q(respond_to_missing))) { return FALSE; } - ret = mrb_funcall_id(mrb, obj, MRB_SYM_Q(respond_to_missing), 2, mrb_symbol_value(name), mrb_true_value()); + mrb_value ret = mrb_funcall_id(mrb, obj, MRB_SYM_Q(respond_to_missing), 2, mrb_symbol_value(name), mrb_true_value()); if (!mrb_test(ret)) { return FALSE; } @@ -473,7 +467,6 @@ method_alloc(mrb_state *mrb, struct RClass *c, mrb_value obj, mrb_sym name, mrb_ { struct RClass *owner; struct RProc *proc; - struct RObject *me; if (!search_method_owner(mrb, c, obj, name, &owner, &proc, unbound)) { if (singleton) { @@ -486,7 +479,8 @@ method_alloc(mrb_state *mrb, struct RClass *c, mrb_value obj, mrb_sym name, mrb_ if (singleton && owner != c) { singleton_method_error(mrb, name, obj); } - me = method_object_alloc(mrb, mrb_class_get_id(mrb, unbound ? MRB_SYM(UnboundMethod) : MRB_SYM(Method))); + + struct RObject *me = method_object_alloc(mrb, mrb_class_get_id(mrb, unbound ? MRB_SYM(UnboundMethod) : MRB_SYM(Method))); mrb_obj_iv_set(mrb, me, MRB_SYM(_owner), mrb_obj_value(owner)); mrb_obj_iv_set(mrb, me, MRB_SYM(_recv), unbound ? mrb_nil_value() : obj); mrb_obj_iv_set(mrb, me, MRB_SYM(_name), mrb_symbol_value(name)); @@ -508,12 +502,11 @@ mrb_kernel_method(mrb_state *mrb, mrb_value self) static mrb_value mrb_kernel_singleton_method(mrb_state *mrb, mrb_value self) { - struct RClass *c; mrb_sym name; mrb_get_args(mrb, "n", &name); - c = mrb_class(mrb, self); + struct RClass *c = mrb_class(mrb, self); if (c->tt != MRB_TT_SCLASS) { singleton_method_error(mrb, name, self); }