From: nobu.nokada@... Date: 2004-03-31T07:53:09+09:00 Subject: Re: patch to delegate.rb to disable warning Hi, At Wed, 31 Mar 2004 04:59:24 +0900, Simon Strandgaard wrote in [ruby-talk:96156]: > server> ruby a.rb > /home/neoneye/stow/ruby/lib/ruby/1.8/delegate.rb:110: warning: method redefined; discarding old __getobj__ > server> expand -t2 a.rb > require 'delegate' > class MockA < DelegateClass(String) > def initialize; super('a') end > end > class MockB < DelegateClass(String) > def initialize; super('b') end > end > server> > > I uncommented the "redefined" method and the warning went away.. > I cannot tell if it has consequences for the functionality of delegate? I think it should be like followings. Index: delegate.rb =================================================================== RCS file: /cvs/ruby/src/ruby/lib/delegate.rb,v retrieving revision 1.16 diff -u -2 -p -r1.16 delegate.rb --- delegate.rb 29 Mar 2004 07:54:31 -0000 1.16 +++ delegate.rb 30 Mar 2004 22:46:16 -0000 @@ -92,4 +92,10 @@ def DelegateClass(superclass) @_dc_obj = obj end + def __getobj__ + @_dc_obj + end + def __setobj__(obj) + @_dc_obj = obj + end EOS for method in methods @@ -109,11 +115,5 @@ def DelegateClass(superclass) end end - def __getobj__ - @_dc_obj - end - def __setobj__(obj) - @_dc_obj = obj - end - return klass; + return klass end -- Nobu Nakada