Bug #2699 closed
"foo" + :bar should be rejected
Added by mame (Yusuke Endoh) over 15 years ago.
Updated over 14 years ago.
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 mame@tsg.ne.jp
=end
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
=begin
2010/1/31 Yusuke ENDOH mame@tsg.ne.jp :
1.9.1 にも p129 くらいからバックポートされてしまっているようなので、
revert する必要があると思います > Yugui さん
間違いではありますが、深刻に古いプログラムを壊すものではないと思います。
むしろrevertすると現行のプログラムを壊す虞があるのでrevertしません。
--
Yuki Sonoda (Yugui)
yugui@yugui.jp
http://yugui.jp
=end
=begin
遠藤です。
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
=end
Also available in: Atom
PDF
Like 0
Like 0 Like 0 Like 0