ruby-trunk-changes r50398 - r50401

今日は for 文が命令列にコンパイルされる方法のリファクタリングなどがありました。
昨日、一昨日は ruby-trunk-changes の開始以来初めて 2日間コミットがなくてお休みでした。

nobu: r50398 2015-04-29 12:48:26 +0900

for 文の AST ノードを ISeq にコンパイルする時に ITER ノードと同じだったのを、パース時に行なっていた多重代入の処理(length などのメソッド呼び出しと条件分岐を含む AST を生成)をコンパイル時に行なうようにしています。余分な NODE オブジェクトの生成を抑制するためでしょうか。

nobu: r50399 2015-04-29 12:49:05 +0900

r50398 の for 文の parse 処理の分岐を switch 文で書き代えるリファクタリング

svn: r50400 2015-04-29 12:49:05 +0900

version.h の日付更新。

nobu: r50401 2015-04-29 22:22:34 +0900

標準添付ライブラリ cgicgi/cookie.rb の rdoc 用コメントのサンプルコードで最後の引数のあとに "," を追加して引数の追加時に最後の行の変更をしなくていいようにしています。またテストコードでも同様に最後の引数の後に "," を追加しています。
つまり

obj.m(
  a,
  b,
  c,
)

のようにしておくことで c の後に引数を追加する時に "c," の行に "," を追加するだけの変更をしなくて良くなるってことですが、メソッド呼び出しの引数は m() のようなかっこつきの呼び出しの時に限って最後の余分な "," が許容されるんですね。いや、なんか知っていたような気もしますがあんまりこれに依存しないほうがいいような気がしてこういうコードは書かないようにしてました。