aboutsummaryrefslogtreecommitdiffstats
path: root/range.c
diff options
context:
space:
mode:
authoreregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-04-25 11:42:43 +0000
committereregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-04-25 11:42:43 +0000
commit4c637ebf285e444b23945edf3f65e8f99246a1f1 (patch)
tree8bd48e8ebc2c1be3254f139d33b1140baf2781c8 /range.c
parentef968551c8a52f33939d46db20557320f4a2ecc9 (diff)
downloadruby-4c637ebf285e444b23945edf3f65e8f99246a1f1.tar.gz
no longer rescue exceptions of #<=> when initializing a Range
* range.c (range_init): no longer hide the user exception with a ArgumentError, just let the user exception go through. * test/ruby/test_range.rb (test_new): add tests. [Feature #7688] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'range.c')
-rw-r--r--range.c17
1 files changed, 2 insertions, 15 deletions
diff --git a/range.c b/range.c
index 422ed29f15..837fdb5d9c 100644
--- a/range.c
+++ b/range.c
@@ -34,19 +34,6 @@ static VALUE r_cover_p(VALUE, VALUE, VALUE, VALUE);
#define EXCL(r) RTEST(RANGE_EXCL(r))
-static VALUE
-range_failed(void)
-{
- rb_raise(rb_eArgError, "bad value for range");
- return Qnil; /* dummy */
-}
-
-static VALUE
-range_check(VALUE *args)
-{
- return rb_funcall(args[0], id_cmp, 1, args[1]);
-}
-
static void
range_init(VALUE range, VALUE beg, VALUE end, VALUE exclude_end)
{
@@ -58,9 +45,9 @@ range_init(VALUE range, VALUE beg, VALUE end, VALUE exclude_end)
if (!FIXNUM_P(beg) || !FIXNUM_P(end)) {
VALUE v;
- v = rb_rescue(range_check, (VALUE)args, range_failed, 0);
+ v = rb_funcall(beg, id_cmp, 1, end);
if (NIL_P(v))
- range_failed();
+ rb_raise(rb_eArgError, "bad value for range");
}
RANGE_SET_EXCL(range, exclude_end);