From: Tanaka Akira Date: 2011-11-20T09:44:25+09:00 Subject: [ruby-dev:44892] method redefined warning depends GC? test-all を -w をつけて動かしたときに、 TC_Enumerable#test_to_set = (eval):2: warning: method redefined; discarding old initialize /extdisk/chkbuild/chkbuild/tmp/build/ruby-trunk/20111119T160600Z/ruby/lib/set.rb:613: warning: previous definition of initialize was here という警告が出たり出なかったりすることで気がついたのですが、以下のプログラムの、 GC.start の有無で警告が出るか出ないか変わります。 以下のように、GC.start を呼ばない場合、警告が出ません。 % ./ruby -w -e ' class C def m() end alias m2 m remove_method :m2 #GC.start def m() end end ' 以下のように、GC.start を呼ぶ場合、警告が出ます。 % ./ruby -w -e ' class C def m() end alias m2 m remove_method :m2 GC.start def m() end end ' -e:7: warning: method redefined; discarding old m -e:3: warning: previous definition of m was here これはそういうものなんでしょうか? % ./ruby -v ruby 2.0.0dev (2011-11-19 trunk 33791) [x86_64-linux] -- [田中 哲][たなか あきら][Tanaka Akira]