まつもと ゆきひろです

In message "Re: [ruby-dev:35968] Re: [ruby-cvs:26052] Ruby:r18834 (trunk): * compile.c (defined_expr): should handle NODE_{AND,OR} as"
    on Mon, 25 Aug 2008 23:11:15 +0900, SASADA Koichi <ko1 / atdot.net> writes:

|Yukihiro Matsumoto wrote:
|> | これは,中身を一切実行せずに,って話ですか?
|> 
|> そうです。
|
| これは,互換性とか,色々大事なモノを削ってる気がしますが,いいで
|しょうか.

もともとdefined?は「やりすぎ感」あふれる演算子でしたし、苦労
する割に苦労した部分を使っていないというのも現実でした。まあ、
基本的な部分である

  * メソッド存在チェック
  * 変数存在チェック
  * superチェック
  * ブロックチェック

がちゃんと動作してるなら、後の複合的な部分は「expression」で
いいかなあと。

|> | 直すなら,今,わざわざ偽かどうかを判断しているところを削って,常に
|> |"expression" を返すという変更が楽かと思います.
|
| これは,実行した結果を「偽かどうか判断しているところ」という意味
|で,1.8 の挙動にするのがいいのでは,ということでした.



| ただ,今回の変更で defined? の挙動が簡単になったことも事実なので,
|これでいいのだったらそれはそれで嬉しいです.このための特殊な処理も不
|要になりますし(ISEQ_TYPE_DEFINED_GUARD).

もうちょっと様子を見て、誰からも文句がでないようならば、削っ
ちゃっていいんじゃないでしょうか。

                                まつもと ゆきひろ /:|)