ruby-trunk-changes r36966 - r36975

今日は nkf の最新版のマージ(不具合修正)と parse.y のリファクタリングがありました。札幌RubyKaigi の開催中ですが意外にコミットありましたね。
また咳さんの LT で ruby trunk changes の宣伝をしていただいたようです。ありがとうございます。

naruse:r36966 2012-09-15 01:07:49 +0900

ext/nkf/nkf.c の警告除去、とコメントにはあります。この差分にでてくる result という変数は nkf.c で宣言されている static 変数で変換中にそこに結果を入れているようなのです。 putchar() を rb_nkf_putchar() に置き換えていてそこで result が利用されているようです。しかし putchar() を利用しているところがみつからない……。とにかく result はあまり利用せず kanji_convert() の部分でだけ格納しておくようにしています。

svn:r36967 2012-09-15 01:07:57 +0900

version.h の日付更新。

naruse:r36968 2012-09-15 02:26:39 +0900

nkf を本家からマージしています。 CP50221 から CP932 への変換に失敗する文字があるという不具合の修正を取り込んでいるようです。 [ruby-dev:46128] [Bug #7005]

eregon:r36969 2012-09-15 02:29:40 +0900

configure.in のメッセージ部分の typo を修正。

eregon:r36970 2012-09-15 02:29:59 +0900

pack.c の rb_bug() のメッセージ部分の typo 修正。

nobu:r36971 2012-09-15 18:26:21 +0900

test_parse.rb の eval/instance_eval の第2、3引数に __FILE__, __LINE__+1 を渡すことでエラー時の位置の表示に実際のファイル位置を反映させるようにしています。

nobu:r36972 2012-09-15 18:26:26 +0900

parse.y で定義されている lex_state_name() というデバッグ用の関数で parser(lexer) の状態を文字列化するのに switch 文で書いていたのをテーブル化しています。この関数はデバッガから使う用ですね。

nobu:r36973 2012-09-15 18:26:28 +0900

parse.y の gettable_gen() と assignable_gen() で if-else の連続で書かれていた部分を switch 文に書き換えています。

nobu:r36974 2012-09-15 18:26:31 +0900

同じく parse.y で代入に関する処理の重複している部分を new_op_assign() という関数として切り出して再利用するようにしています。

nobu:r36975 2012-09-15 18:26:33 +0900

同じく parse.y で代入っぽいメソッド(foo= のように = で終わるメソッド)の処理が微妙な文法の違い毎に重複していたのを new_attr_op_assign() という関数に切り出しています。