ruby-changes:26056
From: nobu <ko1@a...>
Date: Sat, 1 Dec 2012 18:17:02 +0900 (JST)
Subject: [ruby-changes:26056] nobu:r38113 (trunk): vm_method.c: make initialize methods private
nobu 2012-12-01 18:16:52 +0900 (Sat, 01 Dec 2012) New Revision: 38113 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=38113 Log: vm_method.c: make initialize methods private * id.c (Init_id), template/id.h.tmpl: add initialize_{copy,clone,dup} and respond_to_missing?. * vm_method.c (rb_method_entry_make): make above methods private. [Feature #6539] Modified files: trunk/ChangeLog trunk/id.c trunk/template/id.h.tmpl trunk/test/ruby/test_method.rb trunk/vm_method.c Index: ChangeLog =================================================================== --- ChangeLog (revision 38112) +++ ChangeLog (revision 38113) @@ -1,3 +1,11 @@ +Sat Dec 1 18:16:49 2012 Nobuyoshi Nakada <nobu@r...> + + * id.c (Init_id), template/id.h.tmpl: add initialize_{copy,clone,dup} + and respond_to_missing?. + + * vm_method.c (rb_method_entry_make): make above methods private. + [Feature #6539] + Sat Dec 1 16:40:22 2012 KOSAKI Motohiro <kosaki.motohiro@g...> * test/ruby/test_thread.rb: move ConditionVariable related test Index: vm_method.c =================================================================== --- vm_method.c (revision 38112) +++ vm_method.c (revision 38113) @@ -190,7 +190,9 @@ if (!FL_TEST(klass, FL_SINGLETON) && type != VM_METHOD_TYPE_NOTIMPLEMENTED && type != VM_METHOD_TYPE_ZSUPER && - (mid == rb_intern("initialize") || mid == rb_intern("initialize_copy"))) { + (mid == idInitialize || mid == idInitialize_copy || + mid == idInitialize_clone || mid == idInitialize_dup || + mid == idRespond_to_missing)) { noex = NOEX_PRIVATE | noex; } Index: id.c =================================================================== --- id.c (revision 38112) +++ id.c (revision 38113) @@ -26,6 +26,7 @@ REGISTER_SYMID(idIFUNC, "<IFUNC>"); REGISTER_SYMID(idCFUNC, "<CFUNC>"); REGISTER_SYMID(idRespond_to, "respond_to?"); + REGISTER_SYMID(idRespond_to_missing, "respond_to_missing?"); REGISTER_SYMID(id_core_set_method_alias, "core#set_method_alias"); REGISTER_SYMID(id_core_set_variable_alias, "core#set_variable_alias"); @@ -54,5 +55,8 @@ REGISTER_SYMID(idSend, "send"); REGISTER_SYMID(id__send__, "__send__"); REGISTER_SYMID(idInitialize, "initialize"); + REGISTER_SYMID(idInitialize_copy, "initialize_copy"); + REGISTER_SYMID(idInitialize_clone, "initialize_clone"); + REGISTER_SYMID(idInitialize_dup, "initialize_dup"); REGISTER_SYMID(idUScore, "_"); } Index: test/ruby/test_method.rb =================================================================== --- test/ruby/test_method.rb (revision 38112) +++ test/ruby/test_method.rb (revision 38113) @@ -1,3 +1,4 @@ +# -*- coding: us-ascii -*- require 'test/unit' require_relative 'envutil' @@ -31,6 +32,10 @@ end class T def initialize; end + def initialize_copy(*) super end + def initialize_clone(*) super end + def initialize_dup(*) super end + def respond_to_missing?(*) super end def normal_method; end end module M @@ -329,6 +334,10 @@ def test_default_accessibility assert T.public_instance_methods.include?(:normal_method), 'normal methods are public by default' assert !T.public_instance_methods.include?(:initialize), '#initialize is private' + assert !T.public_instance_methods.include?(:initialize_copy), '#initialize_copy is private' + assert !T.public_instance_methods.include?(:initialize_clone), '#initialize_clone is private' + assert !T.public_instance_methods.include?(:initialize_dup), '#initialize_dup is private' + assert !T.public_instance_methods.include?(:respond_to_missing?), '#respond_to_missing? is private' assert !M.public_instance_methods.include?(:func), 'module methods are private by default' assert M.public_instance_methods.include?(:meth), 'normal methods are public by default' end Index: template/id.h.tmpl =================================================================== --- template/id.h.tmpl (revision 38112) +++ template/id.h.tmpl (revision 38113) @@ -28,6 +28,9 @@ Send __send__ Initialize + Initialize_copy + Initialize_clone + Initialize_dup UScore Bitblt Answer @@ -42,6 +45,7 @@ preserved_ids = %w[ NULL Respond_to + Respond_to_missing IFUNC CFUNC _core_set_method_alias -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/