ruby-trunk-changes r55882 - r55888

今日は代入文の亜種の右辺に後置 rescue つきの引数なしのメソッド呼び出しがあった時の結合順の変更などがありました。

suke: r55882 2016-08-13 07:54:23 +0900

拡張ライブラリ win32ole の WIN32OLE::Variant への Fixnum からの変換で VT_I4 でオーバフローした時に VT_I8 を利用するようにする修正。

svn: r55883 2016-08-13 07:54:24 +0900

version.h の日付更新。

nobu: r55884 2016-08-13 10:21:29 +0900

r55846 の vm_getivar() への ALWAYS_INLINE() マクロの付加でマクロの引数として prototype 宣言を入れるように修正しています。

nobu: r55885 2016-08-13 10:26:24 +0900

拡張ライブラリ socket の ext/socket/getnameinfo.c で rubysocket.h というヘッダも include するようにしています。 inet_ntop() の代替実装が必要な場合にこのヘッダが必要だったようです。

nobu: r55886 2016-08-13 10:49:16 +0900

r55882 の再修正。 拡張ライブラリ win32ole の WIN32OLE::Variant への変換時のオーバフローの考慮で SIZEOF_LONG が 4 より大きい時だけ分岐するように preprocessor での分岐を追加しています。 NUM2LONG() での変換も long 型の v に代入しているからこれも使いまわせるんじゃないですかね?

nobu: r55887 2016-08-13 10:52:22 +0900

r55851 の代入文の右辺値にかっこなしで引数を受け取るメソッド呼び出しと後置 rescue があった時の優先度の問題が、 +=, -= のような op assignement や定数への代入、[]= メソッドやそれの op assignment 版(a[i] += 1 みたいなの)などなどの類似の文法群でも同様の問題があったので、全て command_call, arg ノードを command_rhs, arg_rhs ノードに変えて対策しています。つまりこれらのケースで これまでと r55851 と同様に parse 結果が変わります。 [ruby-core:75621] [Bug #12402]

nobu: r55888 2016-08-13 11:10:11 +0900

[Bug #12402] の代入文と後置 rescue の問題と似てますが op assignment 系の代入を含む複数の代入が連なった式に後置 rescue を置くと SyntaxError になることがあった不具合を修正しています。 差分さっとみた感じだと代入系の式を stmt のルールから command_asgn というルールにひとつネストさせてまとめて扱うようにしているようです。ううーむ、これは 2.3 以前からですね。後置 rescue の件は変更したくないけどこれは直せるなら直したほうがいいので、これは困った…。 [ruby-core:76835] [Bug #12669]