ruby-trunk-changes r60981 - r60992

今日は Refinements の不具合修正や NODE の位置情報の修正などがありました。

naruse: r60981 2017-12-03 00:41:07 +0900

ext/-test-/string/depend に r60979 で追加したテスト用ソースのぶんの new.o の依存関係を追記しています。

naruse: r60982 2017-12-03 00:41:08 +0900

同じく r60979 で追加した ext/-test-/string/new.c の関数に static を付加しています。

svn: r60983 2017-12-03 00:41:08 +0900

version.h の日付更新。

shugo: r60984 2017-12-03 09:39:26 +0900

r60980 の追加修正? Refinements で Module を refine した時に superclass に IClass を生成してた処理を refinement_superclass() という関数に切り出して r60980 の部分も同じ処理を利用するようにしています。たぶん同じことをしていることになると思うのですが VM_CHECK_MODE が 2 に設定してコンパイルされた時に VM_ASSERT() のチェックにひっかかってたそうです。

nobu: r60985 2017-12-03 13:41:06 +0900

win32/setup.mak で BASERUBY の変数を setup.mk 自体の変数としてたのを、生成する Makefile の中の変数として定義するようにしている? みたいです。 よくわかってませんが to make Makefile stable とのこと。

yui-knk: r60986 2017-12-03 13:53:05 +0900

後置 while や後置 until、not や ! による論理否定の時の条件部分の NODE の範囲が式全体になっていた不具合を修正しています。

nobu: r60987 2017-12-03 14:08:17 +0900

common.mk で revision.h の生成時のコマンドで tool/file2lastrev.rb の実行に失敗した時にも revision.h への移動が実行されるようにしていたので、継続させないようにコマンド先頭の - を削っています。

nobu: r60988 2017-12-03 15:14:58 +0900

parse.y で top_stmt というノードで BEGIN { } で括られたコードブロックの NODE を NODE_BEGIN で wrap するようにしています。どうも NODE の位置情報のためみたいですけどなんでだろ。

yui-knk: r60989 2017-12-03 15:53:18 +0900

not() 文で呼ばれてる new_nil() で位置情報を受け取って NODE_NIL に位置情報をセットするように修正しています。

shugo: r60990 2017-12-03 17:02:56 +0900

ext/-test-/ のテスト用の拡張ライブラリの Init_ 関数で名前にファイルパスの構造を反映させて関数名の重複を防ぐようにしています。

shugo: r60991 2017-12-03 17:10:42 +0900

IO#putc の rdoc 用コメントに multi byte 文字はエンコーディングは無視して最初の byte のみ書き出すとあるけど実際にはエンコーディングを意識して1文字だけ書き出すようになっているので、truncate されるという記述を削除しています。 [ruby-core:82019] [Bug #13741]

shugo: r60992 2017-12-03 17:35:44 +0900

doc/syntax/refinements.rdoc に Module#refine で refinements を定義した Module を include した Module を using した時にも refinements は有効になることを追記しています。 [ruby-core:79880] [Bug #13271]