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

ruby-changes:62799

From: Jeremy <ko1@a...>
Date: Wed, 2 Sep 2020 02:53:03 +0900 (JST)
Subject: [ruby-changes:62799] 4db4faef0f (master): Revert "Fix Range#{max, minmax} for range with integer beginning and non-integer end"

https://git.ruby-lang.org/ruby.git/commit/?id=4db4faef0f

From 4db4faef0f96bfd3504f5eac454a0308c618ccd6 Mon Sep 17 00:00:00 2001
From: Jeremy Evans <code@j...>
Date: Tue, 1 Sep 2020 09:19:03 -0700
Subject: Revert "Fix Range#{max,minmax} for range with integer beginning and
 non-integer end"

This reverts commit 8900a25581822759daca528d46a75e0b743fc22e.

diff --git a/range.c b/range.c
index 124d9fa..5e1103c 100644
--- a/range.c
+++ b/range.c
@@ -1235,13 +1235,6 @@ range_max(int argc, VALUE *argv, VALUE range) https://github.com/ruby/ruby/blob/trunk/range.c#L1235
         if (c > 0)
             return Qnil;
         if (EXCL(range)) {
-            if (RB_INTEGER_TYPE_P(b) && !RB_INTEGER_TYPE_P(e)) {
-                VALUE end = e;
-                e = rb_funcall(e, rb_intern("floor"), 0);
-                if (!RTEST(rb_funcall(e, rb_intern("=="), 1, end))) {
-                    return e;
-                }
-            }
             if (!RB_INTEGER_TYPE_P(e)) {
                 rb_raise(rb_eTypeError, "cannot exclude non Integer end value");
             }
@@ -1254,9 +1247,6 @@ range_max(int argc, VALUE *argv, VALUE range) https://github.com/ruby/ruby/blob/trunk/range.c#L1247
             }
             return rb_funcall(e, '-', 1, INT2FIX(1));
         }
-        if (RB_INTEGER_TYPE_P(b) && !RB_INTEGER_TYPE_P(e)) {
-            e = rb_funcall(e, rb_intern("floor"), 0);
-        }
         return e;
     }
 }
@@ -1604,14 +1594,9 @@ r_cover_range_p(VALUE range, VALUE beg, VALUE end, VALUE val) https://github.com/ruby/ruby/blob/trunk/range.c#L1594
     else if (cmp_end >= 0) {
         return TRUE;
     }
-    if (RB_INTEGER_TYPE_P(val_beg) && RB_INTEGER_TYPE_P(beg) &&
-            RB_INTEGER_TYPE_P(val_end) != RB_INTEGER_TYPE_P(end)) {
-        val_max = val_end;
-    }
-    else {
-        val_max = rb_rescue2(r_call_max, val, 0, Qnil, rb_eTypeError, (VALUE)0);
-        if (val_max == Qnil) return FALSE;
-    }
+
+    val_max = rb_rescue2(r_call_max, val, 0, Qnil, rb_eTypeError, (VALUE)0);
+    if (val_max == Qnil) return FALSE;
 
     return r_less(end, val_max) >= 0;
 }
diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb
index 0b3f6c6..07a0928 100644
--- a/test/ruby/test_range.rb
+++ b/test/ruby/test_range.rb
@@ -107,13 +107,11 @@ class TestRange < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_range.rb#L107
     assert_equal(1, (1...2).max)
     assert_raise(RangeError) { (1..).max }
     assert_raise(RangeError) { (1...).max }
-    assert_equal(2, (1..2.1).max)
-    assert_equal(2, (1...2.1).max)
 
     assert_equal(2.0, (1.0..2.0).max)
     assert_equal(nil, (2.0..1.0).max)
     assert_raise(TypeError) { (1.0...2.0).max }
-    assert_equal(1, (1...1.5).max)
+    assert_raise(TypeError) { (1...1.5).max }
     assert_raise(TypeError) { (1.5...2).max }
 
     assert_equal(-0x80000002, ((-0x80000002)...(-0x80000001)).max)
@@ -139,13 +137,11 @@ class TestRange < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_range.rb#L137
     assert_equal([1, 1], (1...2).minmax)
     assert_raise(RangeError) { (1..).minmax }
     assert_raise(RangeError) { (1...).minmax }
-    assert_equal([1, 2], (1..2.1).minmax)
-    assert_equal([1, 2], (1...2.1).minmax)
 
     assert_equal([1.0, 2.0], (1.0..2.0).minmax)
     assert_equal([nil, nil], (2.0..1.0).minmax)
     assert_raise(TypeError) { (1.0...2.0).minmax }
-    assert_equal([1, 1], (1..1.5).minmax)
+    assert_raise(TypeError) { (1...1.5).minmax }
     assert_raise(TypeError) { (1.5...2).minmax }
 
     assert_equal([-0x80000002, -0x80000002], ((-0x80000002)...(-0x80000001)).minmax)
@@ -660,12 +656,7 @@ class TestRange < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_range.rb#L656
     assert_not_operator(1..10, :cover?, 3...2)
     assert_not_operator(1..10, :cover?, 3...3)
     assert_not_operator('aa'..'zz', :cover?, 'aa'...'zzz')
-
     assert_not_operator(1..10, :cover?, 1...10.1)
-    assert_not_operator(1...10.1, :cover?, 1..10.1)
-    assert_operator(1..10.1, :cover?, 1...10.1)
-    assert_operator(1..10.1, :cover?, 1...10)
-    assert_operator(1..10.1, :cover?, 1..10)
   end
 
   def test_beg_len
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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