[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]