From: KUBO Takehiro Date: 2007-03-03T23:39:45+09:00 Subject: [ruby-dev:30475] Re: unsupported: th_call0 in 1.9 久保です。 試験するの遅れてすみません。 On 2/26/07, Nobuyoshi Nakada wrote: > なかだです。 > > At Wed, 21 Feb 2007 22:33:56 +0900, > KUBO Takehiro wrote in [ruby-dev:30396]: > > ruby 1.9 で以下の条件のとき、[BUG] unsupported: th_call0 となりました。 > > > > 1. private なメソッドをサブクラスで public にする。 > > 2. 拡張ライブラリからサブクラスで public にしたメソッドを rb_funcall > > で呼び出す。 > > これでどうでしょうか。 svn trunk にパッチを当ててやってみたところ、以下のようになりました。 $ ruby mytest.rb mytest.rb:14:in `run': super: no superclass method `run' (NoMethodError) from mytest.rb:14:in `
' mytest.c で定義してるのと同じクラスを ruby で書く(mytest.c の先頭の コメントの書かれているコードを使う)と、エラーにならず、 $ ruby mytest.rb OK となります。 また、mytest.rb の class B < A public :run end の部分を class B < A def run super end end に変えても正常に動きました。(patchあり/なし両方とも) 親クラスで private なメソッドをサブクラスで public :メソッド名 でスコープを変更したときだけ、かつ、拡張ライブラリから 問題のメソッドを直接呼び出したときだけ起こる問題なのかな?