Bug #2699
closed"foo" + :bar should be rejected
Description
=begin
なかださん
遠藤です。
現在、"foo" + :bar ができてしまいます。
$ ./ruby -ve 'p "foo" + :bar'
ruby 1.9.2dev (2010-01-31 trunk 26518) [i686-linux]
"foobar"
r22606 でどさくさにコミットされているのですが、何かの間違いですよね。
ここだけ revert しようと思います。
1.9.1 にも p129 くらいからバックポートされてしまっているようなので、
revert する必要があると思います > Yugui さん
--
Yusuke ENDOH [email protected]
=end
Updated by mame (Yusuke Endoh) over 15 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
=begin
This issue was solved with changeset r26525.
Yusuke, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
=end
Updated by yugui (Yuki Sonoda) over 15 years ago
=begin
2010/1/31 Yusuke ENDOH [email protected]:
1.9.1 にも p129 くらいからバックポートされてしまっているようなので、
revert する必要があると思います > Yugui さん
間違いではありますが、深刻に古いプログラムを壊すものではないと思います。
むしろrevertすると現行のプログラムを壊す虞があるのでrevertしません。
--
Yuki Sonoda (Yugui)
[email protected]
http://yugui.jp
=end
Updated by mame (Yusuke Endoh) over 15 years ago
=begin
遠藤です。
2010年2月1日0:56 Yugui [email protected]:
2010/1/31 Yusuke ENDOH [email protected]:
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 [email protected]
=end