From bfaffbf00a6124ff3214cc1593210651887fb64b Mon Sep 17 00:00:00 2001 From: matz Date: Fri, 24 Nov 2006 01:23:50 +0000 Subject: * eval.c (rb_mod_define_method): set implicit visibility only when it's called for the target class (ruby_cbase). git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@11304 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ eval.c | 16 ++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 68baa81d8..37c0a24b5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Nov 23 10:38:40 2006 Yukihiro Matsumoto + + * eval.c (rb_mod_define_method): set implicit visibility only when + it's called for the target class (ruby_cbase). + Wed Nov 22 16:00:49 2006 Hidetoshi NAGAI * ext/tk/extconf.rb: support --with-X11/--without-X11 option. diff --git a/eval.c b/eval.c index 6b9a674a1..2b6fda37f 100644 --- a/eval.c +++ b/eval.c @@ -9552,14 +9552,14 @@ rb_mod_define_method(argc, argv, mod) rb_raise(rb_eTypeError, "wrong argument type (expected Proc/Method)"); } - if (SCOPE_TEST(SCOPE_PRIVATE)) { - noex = NOEX_PRIVATE; - } - else if (SCOPE_TEST(SCOPE_PROTECTED)) { - noex = NOEX_PROTECTED; - } - else { - noex = NOEX_PUBLIC; + noex = NOEX_PUBLIC; + if (ruby_cbase == mod) { + if (SCOPE_TEST(SCOPE_PRIVATE)) { + noex = NOEX_PRIVATE; + } + else if (SCOPE_TEST(SCOPE_PROTECTED)) { + noex = NOEX_PROTECTED; + } } rb_add_method(mod, id, node, noex); return body; -- cgit