From c135fd1fba81fc7a080236d636ec6fc1084c4161 Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 26 Jul 2007 13:37:13 +0000 Subject: * range.c (range_eqq): call_super() in === does not work well since Enumerable#=== has different behavior. [ruby-dev:31296] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@12849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ range.c | 23 ++++++++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 162ecec85..3d3cd943d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Jul 26 20:40:25 2007 Yukihiro Matsumoto + + * range.c (range_eqq): call_super() in === does not work well + since Enumerable#=== has different behavior. [ruby-dev:31296] + Thu Jul 26 13:57:45 2007 Nobuyoshi Nakada * dln.c (load_1, dln_find_1): constified. diff --git a/range.c b/range.c index 15615a46b..0d00c93ca 100644 --- a/range.c +++ b/range.c @@ -629,8 +629,6 @@ range_inspect(VALUE range) /* * call-seq: * rng === obj => true or false - * rng.member?(val) => true or false - * rng.include?(val) => true or false * * Returns true if obj is an element of * rng, false otherwise. Conveniently, @@ -648,6 +646,25 @@ range_inspect(VALUE range) * high */ +static VALUE +range_eqq(VALUE range, VALUE val) +{ + return rb_funcall(range, rb_intern("include?"), 1, val); +} + + +/* + * call-seq: + * rng.member?(val) => true or false + * rng.include?(val) => true or false + * + * Returns true if obj is an element of + * rng, false otherwise. + * + * ("a".."z").include?("g") # => true + * ("a".."z").include?("A") # => false + */ + static VALUE range_include(VALUE range, VALUE val) { @@ -769,7 +786,7 @@ Init_Range(void) rb_include_module(rb_cRange, rb_mEnumerable); rb_define_method(rb_cRange, "initialize", range_initialize, -1); rb_define_method(rb_cRange, "==", range_eq, 1); - rb_define_method(rb_cRange, "===", range_include, 1); + rb_define_method(rb_cRange, "===", range_eqq, 1); rb_define_method(rb_cRange, "eql?", range_eql, 1); rb_define_method(rb_cRange, "hash", range_hash, 0); rb_define_method(rb_cRange, "each", range_each, 0); -- cgit