compile.c: do not emit numeric literal range in void context

A fix-up for r56316. Fix stack consistency error on '1..3; nil'.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57105 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
rhe 2016-12-17 08:25:34 +00:00
Родитель c49060b1d9
Коммит 451e0a6ee1
1 изменённых файлов: 5 добавлений и 3 удалений

Просмотреть файл

@ -6001,9 +6001,11 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *node, int poppe
NODE *b = node->nd_beg;
NODE *e = node->nd_end;
if (number_literal_p(b) && number_literal_p(e)) {
VALUE val = rb_range_new(b->nd_lit, e->nd_lit, excl);
iseq_add_mark_object_compile_time(iseq, val);
ADD_INSN1(ret, line, putobject, val);
if (!popped) {
VALUE val = rb_range_new(b->nd_lit, e->nd_lit, excl);
iseq_add_mark_object_compile_time(iseq, val);
ADD_INSN1(ret, line, putobject, val);
}
break;
}
COMPILE(ret, "min", (NODE *) node->nd_beg);