From 6c6a25feca8752205d81c5247f85d8ae8fb880d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3?= Date: Wed, 25 Sep 2019 17:00:25 +0900 Subject: refactor add rb_method_entry_from_template Tired of rb_method_entry_create(..., rb_method_definition_create( ..., &(rb_method_foo_t) {...})) maneuver. Provide a function that does the thing to reduce copy&paste. --- class.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) (limited to 'class.c') diff --git a/class.c b/class.c index 308033d2cb..3160444239 100644 --- a/class.c +++ b/class.c @@ -967,18 +967,11 @@ inject_refined_method(ID *key, VALUE *value, void *data, int _) const tuple *ptr = data; const rb_method_entry_t *me = *(rb_method_entry_t **) value; const rb_method_entry_t *orig_me = me->def->body.refined.orig_me; - rb_method_entry_t *new_me = - rb_method_entry_create( - me->called_id, - me->owner, - me->defined_class, - rb_method_definition_create( - me->def->type, - me->def->original_id, - &(rb_method_refined_t) { - .orig_me = NULL, - .owner = me->def->body.refined.owner, })); - METHOD_ENTRY_FLAGS_COPY(new_me, me); + const rb_method_entry_t *new_me = + rb_method_entry_from_template( + me, &(rb_method_refined_t) { + .orig_me = NULL, + .owner = me->def->body.refined.owner, }); rb_id_table_insert(RCLASS_M_TBL(ptr->klass), *key, (VALUE)new_me); RB_OBJ_WRITTEN(ptr->klass, Qundef, new_me); *value = (VALUE)rb_method_entry_clone(orig_me); -- cgit v1.2.3