チケット #2965 が更新されました。 (by Kenta Murata)


String に限らず、=== が再定義されるだけで発生します。
隠しオブジェクト用のメソッドテーブルが必要なんじゃないでしょうか?

$ ruby -ve '
class Float
  def ===(x)
    true
  end
end
case true
when ""
end'
ruby 1.9.2dev (2010-03-17 trunk 26960) [x86_64-darwin10.2.0]
-e:1: warning: method redefined; discarding old ===
-e:1:in `<main>': method `===' called on hidden T_STRING object (0x00000100856f00 flags=0x500805 klass=0x0) (NotImplementedError)

----------------------------------------
http://redmine.ruby-lang.org/issues/show/2965

----------------------------------------
http://redmine.ruby-lang.org