зеркало из https://github.com/github/ruby.git
Revert "Fix Range#{max,minmax} for range with integer beginning and non-integer end"
This reverts commit 8900a25581
.
This commit is contained in:
Родитель
e080a4cdee
Коммит
4db4faef0f
21
range.c
21
range.c
|
@ -1235,13 +1235,6 @@ range_max(int argc, VALUE *argv, VALUE range)
|
|||
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)
|
|||
}
|
||||
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)
|
|||
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;
|
||||
}
|
||||
|
|
|
@ -107,13 +107,11 @@ class TestRange < Test::Unit::TestCase
|
|||
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
|
|||
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
|
|||
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
|
||||
|
|
Загрузка…
Ссылка в новой задаче