aboutsummaryrefslogtreecommitdiffstats
path: root/vm_insnhelper.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-10-10 01:08:42 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-10-10 01:08:42 +0900
commit42edb056268303e8d2a1772cda0e46e1ba1a14bb (patch)
tree866f362ffaacb19acf92116d4762fcf50678493d /vm_insnhelper.c
parent8dc5fe6e89cb86bd92628b5f34ba5f549a241c2d (diff)
downloadruby-42edb056268303e8d2a1772cda0e46e1ba1a14bb.tar.gz
extracted declare_under
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r--vm_insnhelper.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index f9c825c272..c7dd213035 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -3549,14 +3549,19 @@ vm_check_if_module(ID id, VALUE mod)
}
static VALUE
+declare_under(ID id, VALUE cbase, VALUE c)
+{
+ rb_set_class_path_string(c, cbase, rb_id2str(id));
+ rb_const_set(cbase, id, c);
+ return c;
+}
+
+static VALUE
vm_declare_class(ID id, rb_num_t flags, VALUE cbase, VALUE super)
{
/* new class declaration */
VALUE s = VM_DEFINECLASS_HAS_SUPERCLASS_P(flags) ? super : rb_cObject;
- VALUE c = rb_define_class_id(id, s);
-
- rb_set_class_path_string(c, cbase, rb_id2str(id));
- rb_const_set(cbase, id, c);
+ VALUE c = declare_under(id, cbase, rb_define_class_id(id, s));
rb_class_inherited(s, c);
return c;
}
@@ -3565,10 +3570,7 @@ static VALUE
vm_declare_module(ID id, VALUE cbase)
{
/* new module declaration */
- VALUE mod = rb_define_module_id(id);
- rb_set_class_path_string(mod, cbase, rb_id2str(id));
- rb_const_set(cbase, id, mod);
- return mod;
+ return declare_under(id, cbase, rb_define_module_id(id));
}
NORETURN(static void unmatched_redefinition(const char *type, VALUE cbase, ID id, VALUE old));