ruby-changes:12689
From: matz <ko1@a...>
Date: Wed, 5 Aug 2009 14:01:30 +0900 (JST)
Subject: [ruby-changes:12689] Ruby:r24405 (trunk): * range.c (range_eql, range_eq): fixed equality to work for
matz 2009-08-05 14:01:12 +0900 (Wed, 05 Aug 2009) New Revision: 24405 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24405 Log: * 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. Modified files: trunk/ChangeLog trunk/range.c trunk/test/ruby/test_range.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 24404) +++ ChangeLog (revision 24405) @@ -72,6 +72,14 @@ * enc/encdb.c (ENC_SET_BASE): fix typo. patch by ujihisa [ruby-dev:39004] +Tue Aug 4 11:57:39 2009 Yukihiro Matsumoto <matz@r...> + + * 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@r...> * enc/big5.c (EncLen_Big5): back to original Big5 table. Index: range.c =================================================================== --- range.c (revision 24404) +++ range.c (revision 24405) @@ -125,7 +125,7 @@ { 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 @@ { 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))) Index: test/ruby/test_range.rb =================================================================== --- test/ruby/test_range.rb (revision 24404) +++ test/ruby/test_range.rb (revision 24405) @@ -89,6 +89,8 @@ 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 @@ 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 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/