遠藤です。

2010年2月1日0:56 Yugui <yugui / yugui.jp>:
> 2010/1/31 Yusuke ENDOH <mame / tsg.ne.jp>:
>> 1.9.1 にも p129 くらいからバックポートされてしまっているようなので、
>> revert する必要があると思います > Yugui さん
>
> 間違いではありますが、深刻に古いプログラムを壊すものではないと思います。
> むしろrevertすると現行のプログラムを壊す虞があるのでrevertしません。


すみません、重大性が伝わらない報告でした。

"foo" + :bar は大したことのない例なんですが、StringValue が Symbol を
受け入れてしまうというバグだったため、StringValue を使っている箇所
すべてに影響します。

例えば、File.join("foo", :bar) とか、Encoding.find(:filesystem) とかが
動いてしまっていました。

Symbol を暗黙的に String に変換しないという仕様は、Symbol < String の
時の激しい議論の末に否定された結論だと聞きました。
放っておくとどんどん誤った使い方が広まってしまいます。実際、test-all に
1 箇所、rubyspec に 5 箇所、この挙動に依存する箇所がありました (すべて
修正済です) 。


なので、

- 1.9.1 に早くバックポートして誤った使い方をやめさせる
- 議論の結論を捨て、1.9 系列ではこの挙動を認めることを宣言する

のどちらかにするべきだと思います。

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