From: Nobuyoshi Nakada Date: 2010-02-05T16:39:42+09:00 Subject: [ruby-dev:40327] Re: [Bug #2679](Open) rubyspec: SimpleDelegator when frozen creates a frozen clone ERROR なかだです。 At Thu, 4 Feb 2010 12:43:19 +0900, Yusuke Endoh wrote in [ruby-dev:40314]: > # 2) frozen? が delegate 元の freeze 状態を返す (これはむしろ改善?) > > $ ./ruby -rdelegate -e ' > p SimpleDelegator.new([1, :foo].freeze).frozen? > ' > true # 以前は false これはどっちのほうがいいんでしょうねぇ。 > # 4) delegate 元の private method が普通に呼び出せてしまう (重大) > > $ ./ruby -rdelegate -e ' > class C > def foo > p :foo! > end > private :foo > end > SimpleDelegator.new(C.new).foo # 以前は例外 > ' > foo! > # 5) delegate 元の private method は以前は send でも呼び出せなかった > > $ ./ruby -rdelegate -e ' > class C > def foo > p :foo! > end > private :foo > end > SimpleDelegator.new(C.new).send(:foo) # 以前は例外 > ' > foo! むしろsendでも呼べないほうがバグじゃないかという気がしますが、 method_missingではどう呼び出されたかは分からないので#4と#5で違う 動作にはできませんね。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦