diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-05-02 06:41:33 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-05-02 06:41:33 +0000 |
commit | 776e2693e738975b2bdbeb1ec43e4993a5520665 (patch) | |
tree | 7cfe6e46681a24e91c1cfa1d81a017eff06fcb1c /eval.c | |
parent | f701792f6f5d21a3762aec4a23a2b134e52ab94e (diff) |
* string.c (rb_str_ljust): now takes optional argument to specify
pad string. [ruby-talk:70482]
* string.c (rb_str_rjust): ditto.
* string.c (rb_str_center): ditto.
* string.c (rb_str_justify): utility function.
* eval.c (rb_add_method): call singleton_method_added or
method_added for every method definition (after ruby_running).
[ruby-talk:70471]
* array.c (rb_ary_reverse_bang): Array#reverse! should not return
nil even for arrays sized less than 2.
* io.c (argf_eof): should not block after reading all argument
files. (ruby-bugs-ja PR#449)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3742 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 28 |
1 files changed, 8 insertions, 20 deletions
@@ -279,6 +279,14 @@ rb_add_method(klass, mid, node, noex) rb_clear_cache_by_id(mid); body = NEW_METHOD(node, noex); st_insert(RCLASS(klass)->m_tbl, mid, (st_data_t)body); + if (node && mid != ID_ALLOCATOR && ruby_running) { + if (FL_TEST(klass, FL_SINGLETON)) { + rb_funcall(rb_iv_get(klass, "__attached__"), singleton_added, 1, ID2SYM(mid)); + } + else { + rb_funcall(klass, added, 1, ID2SYM(mid)); + } + } } void @@ -3353,14 +3361,6 @@ rb_eval(self, n) if (scope_vmode == SCOPE_MODFUNC) { rb_add_method(rb_singleton_class(ruby_class), node->nd_mid, defn, NOEX_PUBLIC); - rb_funcall(ruby_class, singleton_added, 1, ID2SYM(node->nd_mid)); - } - if (FL_TEST(ruby_class, FL_SINGLETON)) { - rb_funcall(rb_iv_get(ruby_class, "__attached__"), - singleton_added, 1, ID2SYM(node->nd_mid)); - } - else { - rb_funcall(ruby_class, added, 1, ID2SYM(node->nd_mid)); } result = Qnil; } @@ -3396,7 +3396,6 @@ rb_eval(self, n) defn->nd_rval = (VALUE)ruby_cref; rb_add_method(klass, node->nd_mid, defn, NOEX_PUBLIC|(body?body->nd_noex&NOEX_UNDEF:0)); - rb_funcall(recv, singleton_added, 1, ID2SYM(node->nd_mid)); result = Qnil; } break; @@ -6033,7 +6032,6 @@ rb_mod_modfunc(argc, argv, module) m = RCLASS(m)->super; } rb_add_method(rb_singleton_class(module), id, body->nd_body, NOEX_PUBLIC); - rb_funcall(module, singleton_added, 1, ID2SYM(id)); } return module; } @@ -7418,16 +7416,6 @@ rb_mod_define_method(argc, argv, mod) noex = NOEX_PUBLIC; } rb_add_method(mod, id, node, noex); - if (scope_vmode == SCOPE_MODFUNC) { - rb_add_method(rb_singleton_class(mod), id, node, NOEX_PUBLIC); - rb_funcall(mod, singleton_added, 1, ID2SYM(id)); - } - if (FL_TEST(mod, FL_SINGLETON)) { - rb_funcall(rb_iv_get(mod, "__attached__"), singleton_added, 1, ID2SYM(id)); - } - else { - rb_funcall(mod, added, 1, ID2SYM(id)); - } return body; } |