新井です。

多重代入の挙動を調べていました。2003-08-28 の変更で return 
の挙動がおかしくなった部分があるように思われます。

多重代入、ブロックパラメータ、return はそれぞれ同じ挙動を示
すものと考えていたのですが実際のところ空の return は return
nil の省略形になっているのですね。

以下の結果が望ましいものなのかどうかご確認ください。

*a = *[]; p a
def f;  yield; end; f {|*a| p a}
def r; return; end; *a = r(); p a
=> ruby 1.6.8 (2003-08-03) [i586-linux]
   []
   [nil]
   [nil]
=> ruby 1.8.0 (2003-08-04) [i586-linux]
   []
   []
   [nil]
=> ruby 1.8.0 (2003-08-28) [i586-linux]
   []
   []
   [nil]

         *a = *[]; p a
def f;  yield *[]; end; f {|*a| p a}
def r; return *[]; end; *a = r(); p a
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.6.8 (2003-08-03) [i586-linux]
   []
   []
   []
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-04) [i586-linux]
   []
   []
   [nil]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-28) [i586-linux]
   []
   []
   [nil]

         *a = *[1,2]; p a
def f;  yield *[1,2]; end; f {|*a| p a}
def r; return *[1,2]; end; *a = r(); p a
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.6.8 (2003-08-03) [i586-linux]
   [1, 2]
   [1, 2]
   [1, 2]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-04) [i586-linux]
   [1, 2]
   [1, 2]
   [1, 2]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-28) [i586-linux]
   [1, 2]
   [1, 2]
   [[1, 2]]

         *a = *[*[]]; p a
def f;  yield *[*[]]; end; f {|*a| p a}
def r; return *[*[]]; end; *a = r(); p a
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.6.8 (2003-08-03) [i586-linux]
   []
   []
   []
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-04) [i586-linux]
   []
   []
   [nil]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-28) [i586-linux]
   []
   []
   [nil]

         *a = *[*[1,2]]; p a
def f;  yield *[*[1,2]]; end; f {|*a| p a}
def r; return *[*[1,2]]; end; *a = r(); p a
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.6.8 (2003-08-03) [i586-linux]
   [1, 2]
   [1, 2]
   [1, 2]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-04) [i586-linux]
   [1, 2]
   [1, 2]
   [1, 2]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-28) [i586-linux]
   [1, 2]
   [1, 2]
   [[1, 2]]

     a,b,*c = *[[]]; p [a,b,c]
def f;  yield *[[]]; end; f {|a,b,*c| p [a,b,c]}
def r; return *[[]]; end; a,b,*c = r(); p [a,b,c]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.6.8 (2003-08-03) [i586-linux]
   [[], nil, []]
   [nil, nil, []]
   [[], nil, []]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-04) [i586-linux]
   [nil, nil, []]
   [nil, nil, []]
   [nil, nil, []]
=> -:2: warning: `*' interpreted as argument prefix
   ruby 1.8.0 (2003-08-28) [i586-linux]
   [[], nil, []]
   [[], nil, []]
   [nil, nil, []]

--
新井康司 (Koji Arai)