summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-14 18:53:40 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-14 18:53:40 +0000
commita48f90b05b654cc98727a91c5fd9952c5a86221c (patch)
tree1f1c3bfccf90207a542fce694d9040315457bfe1 /test/ruby
parent766df600db46f3cc8a2bd0c0af2dfceeec2d8fb3 (diff)
* hash.c (rb_hash): always return a fixnum value because a return
value of rb_hash may be used as a hash value itself and bignums have no unique VALUE. * test/ruby/test_hash.rb: add a test for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22308 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_hash.rb11
1 files changed, 11 insertions, 0 deletions
diff --git a/test/ruby/test_hash.rb b/test/ruby/test_hash.rb
index 5a17ac4fb5..50a34b8160 100644
--- a/test/ruby/test_hash.rb
+++ b/test/ruby/test_hash.rb
@@ -849,4 +849,15 @@ class TestHash < Test::Unit::TestCase
def test_hash_hash
assert_equal({0=>2,11=>1}.hash, {11=>1,0=>2}.hash)
end
+
+ def test_hash_bignum_hash
+ x = 2<<(32-3)-1
+ assert_equal({x=>1}.hash, {x=>1}.hash)
+ x = 2<<(64-3)-1
+ assert_equal({x=>1}.hash, {x=>1}.hash)
+
+ o = Object.new
+ def o.hash; 2<<100; end
+ assert_equal({x=>1}.hash, {x=>1}.hash)
+ end
end