From: Yusuke ENDOH Date: 2007-07-23T18:01:14+09:00 Subject: [ruby-dev:31282] Re: +:x doesn't raise exception 遠藤です。 > リテラルの単項+は無視してるんですが、エラーのほうがいいでしょ > うか。ついでに単項−も可能なら変換するようにしてみましたが。 その最適化は Fixnum#+@ の再定義を無視していますがいいのでしょうか。 $ ./ruby -ve 'class Fixnum; def +@; nil; end; end; p(+1)' ruby 1.8.6 (2007-07-19 patchlevel 5000) [i686-linux] 1 $ ./ruby -ve 'class Fixnum; def +@; nil; end; end; p(+(1))' ruby 1.8.6 (2007-07-19 patchlevel 5000) [i686-linux] nil 実用上は無視して問題なさそうなので一つの手だとは思いますが、 それなら Fixnum#+ や Fixnum#* の再定義も無視して定数畳み込み 最適化を実装するともっと嬉しそうです。 -- Yusuke ENDOH