Project

General

Profile

Actions

Bug #2699

closed

"foo" + :bar should be rejected

Added by mame (Yusuke Endoh) over 15 years ago. Updated about 14 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
Backport:
[ruby-dev:40274]

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
=end

Actions #1

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

Actions #2

Updated by yugui (Yuki Sonoda) over 15 years ago

=begin
2010/1/31 Yusuke ENDOH :

1.9.1 にも p129 くらいからバックポートされてしまっているようなので、
revert する必要があると思います > Yugui さん

間違いではありますが、深刻に古いプログラムを壊すものではないと思います。
むしろrevertすると現行のプログラムを壊す虞があるのでrevertしません。

--
Yuki Sonoda (Yugui)

http://yugui.jp

=end

Actions #3

Updated by mame (Yusuke Endoh) over 15 years ago

=begin
遠藤です。

2010年2月1日0:56 Yugui :

2010/1/31 Yusuke ENDOH :

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

=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0