原です。

>原です。

>(3)

>まつもとさんの[ruby-dev:13503]を読んでみたんですが、
>
>    a = *[] #=> nil
>
>だけが新しいところで、後は今まで(1.6.4以前)と変わってないと思いました。
>それでいいですよね?

これは間違いでした。実際に動かしてみないでモノを言ってました。(^^;
1.6.4で動かしてみると fail するのは以下の通りでした。

#12 failed Assertion: <[]> == <nil>
a = *[]; assert(a, nil)

#13 failed Assertion: <[1]> == <1>
a = *[1]; assert(a, 1)

#14 failed Assertion: <[nil]> == <nil>
a = *[nil]; assert(a, nil)

#15 failed Assertion: <[[]]> == <[]>
a = *[[]]; assert(a, [])

#16 failed Assertion: <[]> == <nil>
a = *[*[]]; assert(a, nil)

#17 failed Assertion: <[1]> == <1>
a = *[*[1]]; assert(a, 1)

#19 failed Assertion: <[nil]> == <[]>
*a = nil; assert(a, [])

#28 failed Assertion: <[nil]> == <[]>
*a = *nil; assert(a, [])

#32 failed Assertion: <[nil]> == <[]>
*a = *[nil]; assert(a, [])

#33 failed Assertion: <[[]]> == <[]>
*a = *[[]]; assert(a, [])

#51 failed Assertion: <[[], nil, []]> == <[nil, nil, []]>
a,b,*c = *[[]]; assert([a,b,c], [nil, nil, []])

#62 failed Assertion: <1> == <[1]>
def f; yield [*[1]]; end; f {|a| assert(a, [1])}

#64 failed Assertion: <[]> == <nil>
def f; yield *nil; end; f {|a| assert(a, nil)}

#66 failed Assertion: <[]> == <nil>
def f; yield *[]; end; f {|a| assert(a, nil)}

#70 failed Assertion: <[]> == <nil>
def f; yield *[*[]]; end; f {|a| assert(a, nil)}

#73 failed Assertion: <[nil]> == <[]>
def f; yield nil; end; f {|*a| assert(a, [])}

#86 failed Assertion: <[nil]> == <[]>
def f; yield *[nil]; end; f {|*a| assert(a, [])}

やっぱりバグらしきものやら、a = *[] #=> a = nil という新仕様や
色んなケースが入り交じっていますね。

そしてこの[ruby-dev:13503]で提出されている仕様はかなり納得の
いくものだと思いました。これでいいのではないでしょうか、これで
行きましょう!