From c8deddbba6d4e9e0b7c9f939e7302977e4e4242e Mon Sep 17 00:00:00 2001 From: yugui Date: Sat, 8 Aug 2009 15:34:26 +0000 Subject: merges r24405 from trunk into ruby_1_9_1. -- * 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: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_9_1@24469 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- range.c | 4 ++-- test/ruby/test_range.rb | 4 ++++ version.h | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/range.c b/range.c index c418128af..1e66bba85 100644 --- a/range.c +++ b/range.c @@ -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 b4c078915..9dfd29012 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 diff --git a/version.h b/version.h index e2395aedf..5bd5e2e55 100644 --- a/version.h +++ b/version.h @@ -1,5 +1,5 @@ #define RUBY_VERSION "1.9.1" -#define RUBY_PATCHLEVEL 273 +#define RUBY_PATCHLEVEL 274 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_TEENY 1 -- cgit