diff --git a/include/mruby.h b/include/mruby.h index 4048edf69..828bb9d2e 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -798,6 +798,8 @@ MRB_API struct RClass * mrb_module_get_under_id(mrb_state *mrb, struct RClass *o MRB_API void mrb_notimplement(mrb_state*); /* a function to be replacement of unimplemented method */ MRB_API mrb_value mrb_notimplement_m(mrb_state*, mrb_value); +/* just return it self */ +MRB_API mrb_value mrb_obj_itself(mrb_state*, mrb_value); /** * Duplicate an object. diff --git a/mrbgems/mruby-complex/src/complex.c b/mrbgems/mruby-complex/src/complex.c index a2c579058..8aad4c000 100644 --- a/mrbgems/mruby-complex/src/complex.c +++ b/mrbgems/mruby-complex/src/complex.c @@ -149,12 +149,6 @@ mrb_complex_to_i(mrb_state *mrb, mrb_value self) return mrb_int_value(mrb, (mrb_int)p->real); } -static mrb_value -complex_to_c(mrb_state *mrb, mrb_value self) -{ - return self; -} - mrb_bool mrb_complex_eq(mrb_state *mrb, mrb_value x, mrb_value y) { @@ -406,7 +400,7 @@ void mrb_mruby_complex_gem_init(mrb_state *mrb) mrb_define_method(mrb, comp, "imaginary", complex_imaginary, MRB_ARGS_NONE()); mrb_define_method(mrb, comp, "to_f", mrb_complex_to_f, MRB_ARGS_NONE()); mrb_define_method(mrb, comp, "to_i", mrb_complex_to_i, MRB_ARGS_NONE()); - mrb_define_method(mrb, comp, "to_c", complex_to_c, MRB_ARGS_NONE()); + mrb_define_method(mrb, comp, "to_c", mrb_obj_itself, MRB_ARGS_NONE()); mrb_define_method(mrb, comp, "+", complex_add, MRB_ARGS_REQ(1)); mrb_define_method(mrb, comp, "-", complex_sub, MRB_ARGS_REQ(1)); mrb_define_method(mrb, comp, "*", complex_mul, MRB_ARGS_REQ(1)); diff --git a/mrbgems/mruby-object-ext/src/object.c b/mrbgems/mruby-object-ext/src/object.c index f0b50bf13..62345810f 100644 --- a/mrbgems/mruby-object-ext/src/object.c +++ b/mrbgems/mruby-object-ext/src/object.c @@ -60,6 +60,8 @@ nil_to_i(mrb_state *mrb, mrb_value obj) } /* + * Document-method: Kernel#itself + * * call-seq: * obj.itself -> an_object * @@ -69,11 +71,6 @@ nil_to_i(mrb_state *mrb, mrb_value obj) * string.itself.object_id == string.object_id #=> true * */ -static mrb_value -f_itself(mrb_state *mrb, mrb_value self) -{ - return self; -} /* * call-seq: @@ -122,7 +119,7 @@ mrb_mruby_object_ext_gem_init(mrb_state* mrb) mrb_define_method(mrb, n, "to_h", nil_to_h, MRB_ARGS_NONE()); mrb_define_method(mrb, n, "to_i", nil_to_i, MRB_ARGS_NONE()); - mrb_define_method(mrb, mrb->kernel_module, "itself", f_itself, MRB_ARGS_NONE()); + mrb_define_method(mrb, mrb->kernel_module, "itself", mrb_obj_itself, MRB_ARGS_NONE()); mrb_define_method(mrb, mrb_class_get_id(mrb, MRB_SYM(BasicObject)), "instance_exec", obj_instance_exec, MRB_ARGS_ANY() | MRB_ARGS_BLOCK()); } diff --git a/mrbgems/mruby-rational/src/rational.c b/mrbgems/mruby-rational/src/rational.c index 9bdea6957..358e24766 100644 --- a/mrbgems/mruby-rational/src/rational.c +++ b/mrbgems/mruby-rational/src/rational.c @@ -329,12 +329,6 @@ mrb_rational_to_i(mrb_state *mrb, mrb_value self) return mrb_int_value(mrb, p->numerator / p->denominator); } -static mrb_value -rational_to_r(mrb_state *mrb, mrb_value self) -{ - return self; -} - static mrb_value rational_negative_p(mrb_state *mrb, mrb_value self) { @@ -778,7 +772,7 @@ void mrb_mruby_rational_gem_init(mrb_state *mrb) mrb_define_method(mrb, rat, "to_f", mrb_rational_to_f, MRB_ARGS_NONE()); #endif mrb_define_method(mrb, rat, "to_i", mrb_rational_to_i, MRB_ARGS_NONE()); - mrb_define_method(mrb, rat, "to_r", rational_to_r, MRB_ARGS_NONE()); + mrb_define_method(mrb, rat, "to_r", mrb_obj_itself, MRB_ARGS_NONE()); mrb_define_method(mrb, rat, "negative?", rational_negative_p, MRB_ARGS_NONE()); mrb_define_method(mrb, rat, "==", rational_eq, MRB_ARGS_REQ(1)); mrb_define_method(mrb, rat, "<=>", rational_cmp, MRB_ARGS_REQ(1)); diff --git a/src/numeric.c b/src/numeric.c index 743cdb3ae..6f5ad7308 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -744,18 +744,14 @@ flo_lshift(mrb_state *mrb, mrb_value x) /* 15.2.9.3.13 */ /* + * Document-method: Float#to_f + * * call-seq: * flt.to_f -> self * * As flt is already a float, returns +self+. */ -static mrb_value -flo_to_f(mrb_state *mrb, mrb_value num) -{ - return num; -} - /* 15.2.9.3.11 */ /* * call-seq: @@ -1105,19 +1101,17 @@ flo_abs(mrb_state *mrb, mrb_value num) /* 15.2.9.3.24 */ /* + * Document-method: Integer#to_i + * Document-method: Integer#to_int + * * call-seq: * int.to_i -> integer + * int.to_int -> integer * * As int is already an Integer, all these * methods simply return the receiver. */ -static mrb_value -int_to_i(mrb_state *mrb, mrb_value num) -{ - return num; -} - mrb_value mrb_int_mul(mrb_state *mrb, mrb_value x, mrb_value y) { @@ -2237,8 +2231,8 @@ mrb_init_numeric(mrb_state *mrb) mrb_define_method_id(mrb, integer, MRB_OPSYM(gt), num_gt, MRB_ARGS_REQ(1)); mrb_define_method_id(mrb, integer, MRB_OPSYM(ge), num_ge, MRB_ARGS_REQ(1)); - mrb_define_method_id(mrb, integer, MRB_SYM(to_i), int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.24 */ - mrb_define_method_id(mrb, integer, MRB_SYM(to_int), int_to_i, MRB_ARGS_NONE()); + mrb_define_method_id(mrb, integer, MRB_SYM(to_i), mrb_obj_itself, MRB_ARGS_NONE()); /* 15.2.8.3.24 */ + mrb_define_method_id(mrb, integer, MRB_SYM(to_int), mrb_obj_itself, MRB_ARGS_NONE()); mrb_define_method_id(mrb, integer, MRB_OPSYM(add), int_add, MRB_ARGS_REQ(1)); /* 15.2.8.3.1 */ mrb_define_method_id(mrb, integer, MRB_OPSYM(sub), int_sub, MRB_ARGS_REQ(1)); /* 15.2.8.3.2 */ @@ -2301,7 +2295,7 @@ mrb_init_numeric(mrb_state *mrb) mrb_define_method_id(mrb, fl, MRB_SYM(floor), flo_floor, MRB_ARGS_OPT(1)); /* 15.2.9.3.10 */ mrb_define_method_id(mrb, fl, MRB_SYM_Q(infinite),flo_infinite_p, MRB_ARGS_NONE()); /* 15.2.9.3.11 */ mrb_define_method_id(mrb, fl, MRB_SYM(round), flo_round, MRB_ARGS_OPT(1)); /* 15.2.9.3.12 */ - mrb_define_method_id(mrb, fl, MRB_SYM(to_f), flo_to_f, MRB_ARGS_NONE()); /* 15.2.9.3.13 */ + mrb_define_method_id(mrb, fl, MRB_SYM(to_f), mrb_obj_itself, MRB_ARGS_NONE()); /* 15.2.9.3.13 */ mrb_define_method_id(mrb, fl, MRB_SYM(to_i), flo_to_i, MRB_ARGS_NONE()); /* 15.2.9.3.14 */ mrb_define_method_id(mrb, fl, MRB_SYM(truncate), flo_truncate, MRB_ARGS_OPT(1)); /* 15.2.9.3.15 */ mrb_define_method_id(mrb, fl, MRB_SYM(divmod), flo_divmod, MRB_ARGS_REQ(1)); diff --git a/src/object.c b/src/object.c index f8e9c0b72..8fbcc0f57 100644 --- a/src/object.c +++ b/src/object.c @@ -649,3 +649,9 @@ mrb_eql(mrb_state *mrb, mrb_value obj1, mrb_value obj2) if (mrb_class(mrb, obj1) != mrb_class(mrb, obj2)) return FALSE; return mrb_test(mrb_funcall_argv(mrb, obj1, MRB_SYM_Q(eql), 1, &obj2)); } + +MRB_API mrb_value +mrb_obj_itself(mrb_state *mrb, mrb_value self) +{ + return self; +} diff --git a/src/symbol.c b/src/symbol.c index 3f0ddb535..021b80003 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -441,6 +441,8 @@ sym_name(mrb_state *mrb, mrb_value vsym) /* 15.2.11.3.4 */ /* + * Document-method: Symbol#to_sym + * * call-seq: * sym.to_sym -> sym * sym.intern -> sym @@ -450,12 +452,6 @@ sym_name(mrb_state *mrb, mrb_value vsym) * in this case. */ -static mrb_value -sym_to_sym(mrb_state *mrb, mrb_value sym) -{ - return sym; -} - /* 15.2.11.3.5(x) */ /* * call-seq: @@ -696,7 +692,7 @@ mrb_init_symbol(mrb_state *mrb) mrb_define_method_id(mrb, sym, MRB_SYM(to_s), sym_to_s, MRB_ARGS_NONE()); /* 15.2.11.3.3 */ mrb_define_method_id(mrb, sym, MRB_SYM(name), sym_name, MRB_ARGS_NONE()); - mrb_define_method_id(mrb, sym, MRB_SYM(to_sym), sym_to_sym, MRB_ARGS_NONE()); /* 15.2.11.3.4 */ + mrb_define_method_id(mrb, sym, MRB_SYM(to_sym), mrb_obj_itself, MRB_ARGS_NONE()); /* 15.2.11.3.4 */ mrb_define_method_id(mrb, sym, MRB_SYM(inspect), sym_inspect, MRB_ARGS_NONE()); /* 15.2.11.3.5(x) */ mrb_define_method_id(mrb, sym, MRB_OPSYM(cmp), sym_cmp, MRB_ARGS_REQ(1)); }