デバッグ。きりがない。
諸悪の根源、継続を手当てするべきなんだろうか。
それとは別にソースの整理。
parse.y: remove global variables ruby_eval_tree and ruby_eval_tree_begin.
parse.yからグローバル変数を無くす修正に取り掛かる。まだ先は遠いが。 しかし、bisonを要求するようになるのはどうなんだろう。
hash.c (rb_hash_fetch): returns KeyError instead of IndexError.
Enumerable#each_with_indexから飛び火。
問題は「Hashのkeyをindexと見るかどうか」。 indexと見るならばEnumerable#each_with_indexはkeyを与えるべき。 見ないならばfetchなどがIndexErrorを返すのはおかしい。
私の結論としては「indexとして見ない」、「IndexErrorを新設のKeyErrorに変更」とした。 ただし、互換性の点からKeyErrorはIndexErrorのサブクラス。