1.9 trunk の proc{}[1,] 問題

先日は各種 1.9 対応用パッチを投げましたが、Ramazeさんへのパッチは追記したようにどうにもマズいものでした。

各種1.9対応パッチ投げますよ! - ¬¬日常日記

これを受けて manveru さんが ruby-core に投げたメールは次のものです。

[ruby-core:18560] Re: [ANN] Ruby 1.9.1 feature freeze

このメールにある例はちょっと長いのでより分かりやすいように最小の例を挙げておきます。

[1,] #=> [1]
proc{}[1,] # => syntax error, unexpected ']'

つまり、#[ ] によるメソッド呼び出しの場合、引数の末尾に","を付けると統語違反になってしまうのがどうなのかが問題提起されているわけです。もちろん通常どのメソッドも末尾に","を付けると統語違反なのですが、#[ ] については、配列の記法から類推してまるで首尾一貫しない統語規則になっているかのように見えてしまうことが問題です。しかも 1.8 においては #[ ] の時には引数の末尾に","を付けても統語違反になりませんから、その点からも 1.9 の振舞いは不満となるわけです。

ruby-core には現在のところこれに対する答えが出ていないので、parse.y を読むことにしたいと思います。ざっと見た感想を書きますと、parse.y は複雑で大変な感じですね。私は果たしてこれを把握できるでしょうか。