Skip to content

Commit eb8b412

Browse files
committed
class.c: initialize method needs to be private by default
1 parent 4ea5510 commit eb8b412

1 file changed

Lines changed: 5 additions & 4 deletions

File tree

src/class.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -781,7 +781,8 @@ mrb_define_method_raw(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_method_
781781
}
782782

783783
int flags = MT_KEY_FLG(m.flags);
784-
if ((flags & 0x3) == 0) flags |= MRB_VISIBILITY(c);
784+
if (mid == MRB_SYM(initialize)) flags = (flags & ~0x3) | MT_PRIVATE;
785+
else if ((flags & 0x3) == 0) flags |= MRB_VISIBILITY(c);
785786
mt_put(mrb, h, mid, flags, ptr);
786787
mc_clear_by_id(mrb, mid);
787788
}
@@ -3028,7 +3029,7 @@ mrb_init_class(mrb_state *mrb)
30283029
mrb_class_name_class(mrb, NULL, cls, MRB_SYM(Class)); /* 15.2.3 */
30293030

30303031
MRB_SET_INSTANCE_TT(cls, MRB_TT_CLASS);
3031-
mrb_define_private_method_id(mrb, bob, MRB_SYM(initialize), mrb_do_nothing, MRB_ARGS_NONE());
3032+
mrb_define_method_id(mrb, bob, MRB_SYM(initialize), mrb_do_nothing, MRB_ARGS_NONE());
30323033
mrb_define_method_id(mrb, bob, MRB_OPSYM(not), mrb_bob_not, MRB_ARGS_NONE());
30333034
mrb_define_method_id(mrb, bob, MRB_OPSYM(eq), mrb_obj_equal_m, MRB_ARGS_REQ(1)); /* 15.3.1.3.1 */
30343035
mrb_define_method_id(mrb, bob, MRB_SYM(__id__), mrb_obj_id_m, MRB_ARGS_NONE()); /* 15.3.1.3.4 */
@@ -3041,7 +3042,7 @@ mrb_init_class(mrb_state *mrb)
30413042
mrb_define_class_method_id(mrb, cls, MRB_SYM(new), mrb_class_new_class, MRB_ARGS_OPT(1)|MRB_ARGS_BLOCK());
30423043
mrb_define_method_id(mrb, cls, MRB_SYM(allocate), mrb_instance_alloc, MRB_ARGS_NONE());
30433044
mrb_define_method_id(mrb, cls, MRB_SYM(superclass), mrb_class_superclass, MRB_ARGS_NONE()); /* 15.2.3.3.4 */
3044-
mrb_define_private_method_id(mrb, cls, MRB_SYM(initialize), mrb_class_initialize, MRB_ARGS_OPT(1)); /* 15.2.3.3.1 */
3045+
mrb_define_method_id(mrb, cls, MRB_SYM(initialize), mrb_class_initialize, MRB_ARGS_OPT(1)); /* 15.2.3.3.1 */
30453046
mrb_define_private_method_id(mrb, cls, MRB_SYM(inherited), mrb_do_nothing, MRB_ARGS_REQ(1));
30463047

30473048
init_class_new(mrb, cls);
@@ -3055,7 +3056,7 @@ mrb_init_class(mrb_state *mrb)
30553056
mrb_define_private_method_id(mrb, mod, MRB_SYM(prepend_features), mrb_mod_prepend_features, MRB_ARGS_REQ(1));
30563057
mrb_define_method_id(mrb, mod, MRB_SYM(class_eval), mrb_mod_module_eval, MRB_ARGS_ANY()); /* 15.2.2.4.15 */
30573058
mrb_define_private_method_id(mrb, mod, MRB_SYM(included), mrb_do_nothing, MRB_ARGS_REQ(1)); /* 15.2.2.4.29 */
3058-
mrb_define_private_method_id(mrb, mod, MRB_SYM(initialize), mrb_mod_initialize, MRB_ARGS_NONE()); /* 15.2.2.4.31 */
3059+
mrb_define_method_id(mrb, mod, MRB_SYM(initialize), mrb_mod_initialize, MRB_ARGS_NONE()); /* 15.2.2.4.31 */
30593060
mrb_define_method_id(mrb, mod, MRB_SYM(module_eval), mrb_mod_module_eval, MRB_ARGS_ANY()); /* 15.2.2.4.35 */
30603061
mrb_define_private_method_id(mrb, mod, MRB_SYM(module_function), mrb_mod_module_function, MRB_ARGS_ANY());
30613062
mrb_define_private_method_id(mrb, mod, MRB_SYM(private), mrb_mod_private, MRB_ARGS_ANY()); /* 15.2.2.4.36 */

0 commit comments

Comments
 (0)