mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
+6
-4
@@ -1414,14 +1414,17 @@ mrb_mod_alias(mrb_state *mrb, mrb_value mod)
|
||||
return mrb_nil_value();
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
undef_method(mrb_state *mrb, struct RClass *c, mrb_sym a)
|
||||
{
|
||||
mrb_value m;
|
||||
|
||||
MRB_SET_VALUE(m, MRB_TT_PROC, value.p, 0);
|
||||
mrb_define_method_vm(mrb, c, a, m);
|
||||
if (!mrb_obj_respond_to(c, a)) {
|
||||
mrb_name_error(mrb, a, "undefined method '%S' for class '%S'", mrb_sym2str(mrb, a), mrb_obj_value(c));
|
||||
} else {
|
||||
MRB_SET_VALUE(m, MRB_TT_PROC, value.p, 0);
|
||||
mrb_define_method_vm(mrb, c, a, m);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@@ -1873,7 +1876,6 @@ mrb_init_class(mrb_state *mrb)
|
||||
mrb_name_class(mrb, mod, mrb_intern(mrb, "Module"));
|
||||
mrb_name_class(mrb, cls, mrb_intern(mrb, "Class"));
|
||||
|
||||
mrb_undef_method(mrb, mod, "new");
|
||||
MRB_SET_INSTANCE_TT(cls, MRB_TT_CLASS);
|
||||
mrb_define_method(mrb, bob, "initialize", mrb_bob_init, MRB_ARGS_NONE());
|
||||
mrb_define_method(mrb, bob, "!", mrb_bob_not, MRB_ARGS_NONE());
|
||||
|
||||
@@ -1374,7 +1374,6 @@ mrb_init_numeric(mrb_state *mrb)
|
||||
mrb_define_method(mrb, integer, "to_int", int_to_i, MRB_ARGS_NONE());
|
||||
fixnum = mrb->fixnum_class = mrb_define_class(mrb, "Fixnum", integer);
|
||||
|
||||
mrb_undef_class_method(mrb, fixnum, "new");
|
||||
mrb_define_method(mrb, fixnum, "+", fix_plus, MRB_ARGS_REQ(1)); /* 15.2.8.3.1 */
|
||||
mrb_define_method(mrb, fixnum, "-", fix_minus, MRB_ARGS_REQ(1)); /* 15.2.8.3.2 */
|
||||
mrb_define_method(mrb, fixnum, "-@", fix_uminus, MRB_ARGS_REQ(1)); /* 15.2.7.4.2 */
|
||||
|
||||
@@ -304,3 +304,10 @@ assert('Class Undef 2') do
|
||||
result1 == true and result2 == true
|
||||
end
|
||||
|
||||
assert('Var undef') do
|
||||
assert_raise(NameError) do
|
||||
a=1
|
||||
undef a
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user