ruby-trunk-changes 2023-10-07

今日は主に parser まわりのリファクタリングがありました。

[7b8d472100] Nobuyoshi Nakada 2023-10-06 10:03:51 UTC

doc/packed_data.rdoc の Array#pack/String#unpack の指示子についてのドキュメントの環境によってサイズが異なるものについての記述を強化しています。

[b1a3c11c86] yui-knk 2023-10-07 00:46:01 UTC

parse.y で AST の NODE_MASGN 型の node に NODE 型がまだ利用されていたところを専用の構造体型 rb_node_masgn_t を利用するようにリファクタリングしています。

[f28d380374] yui-knk 2023-10-07 00:52:06 UTC

AST の NODE_REQUIRED_KEYWORD 型の NODE の判定をする NODE_REQUIRED_KEYWORD_P() というマクロに渡す node を親の node から nd_value メンバーを辿ったものを渡すようにしてマクロ内で辿るのをやめています。

[b7ee728a83] yui-knk 2023-10-07 01:10:45 UTC

parse.y で nd_value や nd_vid といった node 用の構造体のメンバーにアクセスする時に型に応じて適切なキャストつきでアクセスするようにするためのヘルパー関数 get_nd_value()、set_nd_value()、get_nd_vid() を導入するリファクタリング

[fbd534679f] yui-knk 2023-10-07 01:24:50 UTC

b7ee728a8332645220d4d4732e035a6700216261 と同様に node の構造体のメンバー nd_value と nd_vid に適切なキャストつきでアクセスする関数を compile.c にも追加しています。わざわざ別に定義していて内容もちょっと違っているのは universal parser 関連で parse.y で ruby 本体の関数に依存しないようにするためでしょうか。

[529a651f82] yui-knk 2023-10-07 01:37:33 UTC

ast.c の node_children() で代入関係の node NODE_{DASGN,IASGN,CVASGN,GASGN} をまとめて処理していたのを分岐して適切なキャストをするようにしています。

[5810304c2e] yui-knk 2023-10-07 01:46:08 UTC

AST の node の種類毎の構造体から不要なメンバーを削除しています。