wanabe さん
遠藤です。

2009年10月18日6:16 wanabe <s.wanabe / gmail.com>:
> case 文の式が省略され、かつ when 節に配列展開があるときの挙動、
> より具体的には NODE_ARGSCAT, NODE_ARGSPUSH の
> コンパイル結果が正しくないように思います。
> 通常の NODE_CASE と同じように処理するのはどうでしょうか。

2010年1月29日2:37 _ wanabe <redmine / ruby-lang.org>:
> まつもとさん(あるいはささださん?)
> このチケットについて、よろしければ意見をお聞きしたいのですがどうでしょうか。
> (バグではない、バグだがパッチが正しくない、コミットしてよい、など)


確かにバグだと思いますし、ワナベさんのパッチで正しいと思います。
反対もないようなので、コミットしちゃってください。


ただ、一応、以下の点が非互換になるようです。

  $ ruby -ve 'case; when true, *x; p :ok; end'
  ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
  :ok

  $ ./ruby -ve 'case; when true, *x; p :ok; end'
  ruby 1.9.2dev (2010-04-16 trunk 27359) [i686-linux]
  -e:1:in `<main>': undefined local variable or method `x' for
main:Object (NameError)

といっても、NODE_CASE の方ではワナベさんのパッチの前から非互換な
ようです。

  $ ruby -ve 'case "foo"; when "foo", *x; p :ok; end'
  ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
  :ok

  $ ./ruby -ve 'case "foo"; when "foo", *x; p :ok; end'
  ruby 1.9.2dev (2010-04-16 trunk 27359) [i686-linux]
  -e:1:in `<main>': undefined local variable or method `x' for
main:Object (NameError)

実害はほぼないと思うのですが、もし暇だったら見てやってください。

-- 
Yusuke ENDOH <mame / tsg.ne.jp>