mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* complex.c (nucomp_hash), rational.c (nurat_hash): not to use
hash value of class so that equality against subclasses can work. [ruby-dev:38850] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24270 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
4fd615943e
commit
d6ab828369
5 changed files with 19 additions and 8 deletions
|
@ -1,3 +1,9 @@
|
|||
Sat Jul 25 13:44:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* complex.c (nucomp_hash), rational.c (nurat_hash): not to use
|
||||
hash value of class so that equality against subclasses can
|
||||
work. [ruby-dev:38850]
|
||||
|
||||
Sat Jul 25 01:05:59 2009 NARUSE, Yui <naruse@ruby-lang.org>
|
||||
|
||||
* enc/big5.c: Fix EncLen_BIG5 for Big5-HKSCS. see [ruby-core:24390]
|
||||
|
|
|
@ -1156,15 +1156,14 @@ nucomp_numerator(VALUE self)
|
|||
static VALUE
|
||||
nucomp_hash(VALUE self)
|
||||
{
|
||||
long v, h[3];
|
||||
long v, h[2];
|
||||
VALUE n;
|
||||
|
||||
get_dat1(self);
|
||||
h[0] = rb_hash(rb_obj_class(self));
|
||||
n = rb_hash(dat->real);
|
||||
h[1] = NUM2LONG(n);
|
||||
h[0] = NUM2LONG(n);
|
||||
n = rb_hash(dat->imag);
|
||||
h[2] = NUM2LONG(n);
|
||||
h[1] = NUM2LONG(n);
|
||||
v = rb_memhash(h, sizeof(h));
|
||||
return LONG2FIX(v);
|
||||
}
|
||||
|
|
|
@ -1360,15 +1360,14 @@ nurat_to_r(VALUE self)
|
|||
static VALUE
|
||||
nurat_hash(VALUE self)
|
||||
{
|
||||
long v, h[3];
|
||||
long v, h[2];
|
||||
VALUE n;
|
||||
|
||||
get_dat1(self);
|
||||
h[0] = rb_hash(rb_obj_class(self));
|
||||
n = rb_hash(dat->num);
|
||||
h[1] = NUM2LONG(n);
|
||||
h[0] = NUM2LONG(n);
|
||||
n = rb_hash(dat->den);
|
||||
h[2] = NUM2LONG(n);
|
||||
h[1] = NUM2LONG(n);
|
||||
v = rb_memhash(h, sizeof(h));
|
||||
return LONG2FIX(v);
|
||||
}
|
||||
|
|
|
@ -36,6 +36,9 @@ class Complex_Test < Test::Unit::TestCase
|
|||
assert_instance_of(ComplexSub, c5)
|
||||
end
|
||||
|
||||
c1 = Complex(1)
|
||||
assert_equal(c1.hash, c.hash, '[ruby-dev:38850]')
|
||||
assert_equal([true, true], [c.eql?(c1), c1.eql?(c)])
|
||||
end
|
||||
|
||||
def test_eql_p
|
||||
|
|
|
@ -35,6 +35,10 @@ class Rational_Test < Test::Unit::TestCase
|
|||
assert_equal(c, c5)
|
||||
assert_instance_of(RationalSub, c5)
|
||||
end
|
||||
|
||||
c1 = Rational(1)
|
||||
assert_equal(c1.hash, c.hash, '[ruby-dev:38850]')
|
||||
assert_equal([true, true], [c.eql?(c1), c1.eql?(c)])
|
||||
end
|
||||
|
||||
def test_eql_p
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue