From: Shugo Maeda Date: 2010-03-25T12:17:49+09:00 Subject: [ruby-dev:40751] Re: [Bug #2995] TestHash#test_recursive_check fails 前田です。 2010年3月24日17:08 Nobuyoshi Nakada : > > 以下の変更(r26961)で、TestHash#test_recursive_checkが失敗するようになっている > > のですが、この変更は意図的でしょうか。 > > 一応意図的ですが、検討不足でした。 > > > また、test_recursive_checkにあるように > > > > h = {} > > h[h] = :foo > > > > のようなコードを実行しても、h[h]で:fooは取得できません。 > > rehashすれば取得できるようですが、キーで再帰するHashはreplaceや > updateでも作れるので、エラーにするなら以下のようにするべきでしょ > うか。 なるほど、[]=の中でselfとキーが同じオブジェクトだった時は、[]=の内部で rehashするといいんですかね。 > > r26961はどういう意図の変更なのでしょうか。 > > http://twitter.com/lchin/status/10610389214 > http://twitter.com/lchin/status/10610640493 > あたりです。r24943での変更漏れかと思ったのですが。 Hashのキーにすると危ないものは他にもあるので、このケースだけエラーに する必要もないかなと思います。 1.8との互換性という意味でもエラーにしない方がいいかもしれないですね。 とくに異論がなければ、テストの方を修正するということでどうでしょうか。 -- Shugo Maeda