Bug #7166 ยป hashdup.diff
hash.c | ||
---|---|---|
return ST_CONTINUE;
|
||
}
|
||
static VALUE
|
||
rb_hash_initialize_copy(VALUE hash, VALUE hash2)
|
||
{
|
||
Check_Type(hash2, T_HASH);
|
||
if (!RHASH_EMPTY_P(hash2))
|
||
RHASH(hash)->ntbl = st_copy(RHASH(hash2)->ntbl);
|
||
if (FL_TEST(hash2, HASH_PROC_DEFAULT)) {
|
||
FL_SET(hash, HASH_PROC_DEFAULT);
|
||
}
|
||
RHASH_IFNONE(hash) = RHASH_IFNONE(hash2);
|
||
return hash;
|
||
}
|
||
/*
|
||
* call-seq:
|
||
* hsh.replace(other_hash) -> hsh
|
||
... | ... | |
rb_define_singleton_method(rb_cHash, "[]", rb_hash_s_create, -1);
|
||
rb_define_singleton_method(rb_cHash, "try_convert", rb_hash_s_try_convert, 1);
|
||
rb_define_method(rb_cHash,"initialize", rb_hash_initialize, -1);
|
||
rb_define_method(rb_cHash,"initialize_copy", rb_hash_replace, 1);
|
||
rb_define_method(rb_cHash,"initialize_copy", rb_hash_initialize_copy, 1);
|
||
rb_define_method(rb_cHash,"rehash", rb_hash_rehash, 0);
|
||
rb_define_method(rb_cHash,"to_hash", rb_hash_to_hash, 0);
|
test/ruby/test_hash.rb | ||
---|---|---|
$VERBOSE = @verbose
|
||
end
|
||
def test_bad_initialize_copy
|
||
h = Class.new(Hash) {
|
||
def initialize_copy(h)
|
||
super(Object.new)
|
||
end
|
||
}.new
|
||
assert_raises(TypeError) { h.dup }
|
||
end
|
||
def test_s_AREF
|
||
h = @cls["a" => 100, "b" => 200]
|
||
assert_equal(100, h['a'])
|