diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-08-05 05:01:12 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-08-05 05:01:12 +0000 |
commit | da19797648fae92b0e283ce4cdf84fb20bfc89a6 (patch) | |
tree | a5f81abc527c9cccf66c40cda97abb27732a32aa | |
parent | c82826ce5f90f2b678b5e42309c4fd226863230f (diff) | |
download | ruby-da19797648fae92b0e283ce4cdf84fb20bfc89a6.tar.gz |
* range.c (range_eql, range_eq): fixed equality to work for
subclasses of Range. a patch from Marc-Andre Lafortune.
[ruby-core:22190]
* test/ruby/test_range.rb: add assertions for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24405 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | range.c | 4 | ||||
-rw-r--r-- | test/ruby/test_range.rb | 4 |
3 files changed, 14 insertions, 2 deletions
@@ -72,6 +72,14 @@ Tue Aug 4 12:40:45 2009 NARUSE, Yui <naruse@ruby-lang.org> * enc/encdb.c (ENC_SET_BASE): fix typo. patch by ujihisa [ruby-dev:39004] +Tue Aug 4 11:57:39 2009 Yukihiro Matsumoto <matz@ruby-lang.org> + + * range.c (range_eql, range_eq): fixed equality to work for + subclasses of Range. a patch from Marc-Andre Lafortune. + [ruby-core:22190] + + * test/ruby/test_range.rb: add assertions for above. + Tue Aug 4 09:41:11 2009 NARUSE, Yui <naruse@ruby-lang.org> * enc/big5.c (EncLen_Big5): back to original Big5 table. @@ -125,7 +125,7 @@ range_eq(VALUE range, VALUE obj) { if (range == obj) return Qtrue; - if (!rb_obj_is_instance_of(obj, rb_obj_class(range))) + if (!rb_obj_is_kind_of(obj, rb_cRange)) return Qfalse; if (!rb_equal(RANGE_BEG(range), RANGE_BEG(obj))) @@ -187,7 +187,7 @@ range_eql(VALUE range, VALUE obj) { if (range == obj) return Qtrue; - if (!rb_obj_is_instance_of(obj, rb_obj_class(range))) + if (!rb_obj_is_kind_of(obj, rb_cRange)) return Qfalse; if (!rb_eql(RANGE_BEG(range), RANGE_BEG(obj))) diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb index b4c078915d..9dfd29012a 100644 --- a/test/ruby/test_range.rb +++ b/test/ruby/test_range.rb @@ -89,6 +89,8 @@ class TestRange < Test::Unit::TestCase assert(r != (1..2)) assert(r != (0..2)) assert(r != (0...1)) + subclass = Class.new(Range) + assert(r == subclass.new(0,1)) end def test_eql @@ -99,6 +101,8 @@ class TestRange < Test::Unit::TestCase assert(!r.eql?(1..2)) assert(!r.eql?(0..2)) assert(!r.eql?(0...1)) + subclass = Class.new(Range) + assert(r.eql?(subclass.new(0,1))) end def test_hash |