ruby-trunk-changes 2022-10-09

今日は主に昨日追加された error tolerant parser の実装やテストのリファクタリングや修正がありました。

[50f5223236] yui-knk 2022-10-08 09:53:41 UTC

メソッドの引数に無名の rest 引数やブロック引数があると --dump=parsetree などで AST を出力させようとした時に異常終了するようになっていたのを修正しています。

[8483737bbf] yui-knk 2022-10-08 12:04:23 UTC

昨日の 342d4c16d963408905fd08118d1908fe197f2364 の変更などで end に対応する開始トークンの位置を記録するための変数や関数群の名前の "localtions" を "locations" に修正しています。

[b22a2803a8] Peter Zhu 2022-10-08 19:04:18 UTC

3df904d1a8dc614589295dfdf30a781114b3a7fcad0def7f259f793ce02400a8d6144f86b3615dddデバッグ用のメッセージを仕込んでいた RGenGC のテスト test_thrashing_for_young_objects で fork した子プロセスで最初に大量のオブジェクトを生成して heap を増やしておくようにしています。

[561b6c4fa0] yui-knk 2022-10-09 02:01:04 UTC

node.h の NEW_PREEXE() というマクロはだいぶ前から (r61837 52a5f76e8b1ab02ee6e259a7cff9e8c5475744e8)未使用になってたみたいなので削除しています。

[43f692248e] Nobuyoshi Nakada 2022-10-09 07:23:16 UTC

fbbdbdd8911ffb24d98bb71c7c33d24609ce7dfe 以降の RubyVM::AbstrctSyntaxTree.parse のテストで AST の内容の確認のために PP を利用していたのが端末のサイズに依存していたということで PP.pp に明示的に端末幅を指定する引数を渡すようにしています。

[f178ff3933] Nobuyoshi Nakada 2022-10-09 07:08:09 UTC

52eaffde8604b64279208242444894dd69780c24コマンドラインオプション --dump の yydebug, parsetree, parsetree_with_comment などに +error_tolerant で error tolerant なパースを行う指定に対応しましたが、--dump の引数は前方一致で省略できるのでその場合でもオプションが有効になるように対応しているようです。

[d9e2ef6000] Nobuyoshi Nakada 2022-10-09 09:01:54 UTC

RubyVM::AbstractSyntxTree.parse の error_tolerant キーワード引数対応のテストのチェック方法を assert_error_tolerant という専用の assertion メソッドとして切り出すリファクタリング

[546566d34b] Nobuyoshi Nakada 2022-10-09 08:43:16 UTC

fbbdbdd8911ffb24d98bb71c7c33d24609ce7dfe の RubyVM::AbstractSyntaxTree.parse にキーワード引数 error_tolerant: true を渡して SyntaxError の発生を抑制した時でも ec->errinfo が設定されていたため $! には例外が漏れていたので error_tolerant: true の時は errinfo の設定も抑制するように修正しています。