まつもと ゆきひろです

In message "Re: [ruby-dev:33095] Coerce via aliased methods"
    on Mon, 14 Jan 2008 22:27:03 +0900, Yugui <yugui / yugui.sakura.ne.jp> writes:

|Fixnumのcoerceする演算は、エイリアス経由で使用すると例 
|外を生じるようです。
|次のコードは1.8では"successfully coerced"と出力し 
|ますが、trunkではNoMethodErrorを投げます。

|rb_num_coerce_binの実装において、
|rb_frame_this_func()がエイリアスのほうの名前(この場 
|合、:plus)を返すためのようです。
|
|coerceの意味から言って呼び出し時の名前を使うというのはもっと 
|もらしい気もする一方、
|「aliasすると挙動が変わるメソッド」というのはちょっと異 
|様です。

考えてみましたが、元の名前を使うべきでしょうね。で、これをど
う直すべきかですが。

  * rb_frame_this_func()を直す(のは大変であると前にささだく
    んから__caller__がらみで聞いた気がする)

  * rb_num_coerce_bin()を直す。具体的には明示的にメソッド名
    を指定する。APIが変わるがどうせrb_num_coerce_bin()はほと
    んどの人が使ってないから。

どっちですかねえ。