mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
Revert "range.c: prohibit (1..nil)
"
This reverts commit a44c010764a16ae09aaed49d76eec055ca0057c8. Refs #14845. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63649 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
4f4ed3e9ea
commit
606d6b3470
4 changed files with 41 additions and 35 deletions
14
range.c
14
range.c
|
@ -37,7 +37,7 @@ static VALUE r_cover_p(VALUE, VALUE, VALUE, VALUE);
|
|||
static void
|
||||
range_init(VALUE range, VALUE beg, VALUE end, VALUE exclude_end)
|
||||
{
|
||||
if ((!FIXNUM_P(beg) || !FIXNUM_P(end)) && end != Qundef) {
|
||||
if ((!FIXNUM_P(beg) || !FIXNUM_P(end)) && !NIL_P(end)) {
|
||||
VALUE v;
|
||||
|
||||
v = rb_funcall(beg, id_cmp, 1, end);
|
||||
|
@ -47,16 +47,15 @@ range_init(VALUE range, VALUE beg, VALUE end, VALUE exclude_end)
|
|||
|
||||
RANGE_SET_EXCL(range, exclude_end);
|
||||
RANGE_SET_BEG(range, beg);
|
||||
RANGE_SET_END(range, end == Qundef ? Qnil : end);
|
||||
RANGE_SET_END(range, end);
|
||||
}
|
||||
|
||||
VALUE
|
||||
rb_range_new(VALUE beg, VALUE end, int flag)
|
||||
rb_range_new(VALUE beg, VALUE end, int exclude_end)
|
||||
{
|
||||
VALUE range = rb_obj_alloc(rb_cRange);
|
||||
|
||||
if (flag & 2) end = Qundef;
|
||||
range_init(range, beg, end, RBOOL(flag & 1));
|
||||
range_init(range, beg, end, RBOOL(exclude_end));
|
||||
return range;
|
||||
}
|
||||
|
||||
|
@ -86,7 +85,6 @@ range_initialize(int argc, VALUE *argv, VALUE range)
|
|||
|
||||
rb_scan_args(argc, argv, "21", &beg, &end, &flags);
|
||||
range_modify(range);
|
||||
if (NIL_P(end)) end = Qundef;
|
||||
range_init(range, beg, end, RBOOL(RTEST(flags)));
|
||||
return Qnil;
|
||||
}
|
||||
|
@ -1341,7 +1339,7 @@ range_dumper(VALUE range)
|
|||
|
||||
rb_ivar_set(v, id_excl, RANGE_EXCL(range));
|
||||
rb_ivar_set(v, id_beg, RANGE_BEG(range));
|
||||
if (!NIL_P(RANGE_END(range))) rb_ivar_set(v, id_end, RANGE_END(range));
|
||||
rb_ivar_set(v, id_end, RANGE_END(range));
|
||||
return v;
|
||||
}
|
||||
|
||||
|
@ -1356,7 +1354,7 @@ range_loader(VALUE range, VALUE obj)
|
|||
|
||||
range_modify(range);
|
||||
beg = rb_ivar_get(obj, id_beg);
|
||||
end = rb_ivar_lookup(obj, id_end, Qundef);
|
||||
end = rb_ivar_get(obj, id_end);
|
||||
excl = rb_ivar_get(obj, id_excl);
|
||||
if (!NIL_P(excl)) {
|
||||
range_init(range, beg, end, RBOOL(RTEST(excl)));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue