Bug #2995: TestHash#test_recursive_check fails
http://redmine.ruby-lang.org/issues/show/2995

起票者: Shugo Maeda
ステータス: Open, 優先度: Normal
担当者: Nobuyoshi Nakada, カテゴリ: core, Target version: 1.9.2
ruby -v: ruby 1.9.2dev (2010-03-23 trunk 27020) [i686-linux]

前田です。

以下の変更(r26961)で、TestHash#test_recursive_checkが失敗するようになっている
のですが、この変更は意図的でしょうか。

Wed Mar 17 16:25:53 2010  Nobuyoshi Nakada  <nobu / ruby-lang.org>

        * hash.c (rb_hash_aset): allow recursive key.  [ruby-core:24648]

[ruby-core:24648]を見ると、

  >> h={}
  => {}
  >> h[:key] = h
  => {:key=>{....}}
  >> h.hash
  ArgumentError: recursive key for hash

のように値に自分自身を含むHashのhashメソッド呼び出しで例外が起こるという話で、

  h[h] = :foo

のようにキーに自分自身を与えるというのとは違う話のように読めます。

また、test_recursive_checkにあるように

  h = {}
  h[h] = :foo

のようなコードを実行しても、h[h]で:fooは取得できません。
r26961はどういう意図の変更なのでしょうか。


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