зеркало из https://github.com/github/ruby.git
compile_next: do not goto into a branch
I'm not necessarily against every goto in general, but jumping into a branch is definitely a bad idea. Better refactor.
This commit is contained in:
Родитель
cc1e9b8e11
Коммит
cf29de7e6e
|
@ -6651,11 +6651,6 @@ compile_next(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, in
|
||||||
ADD_INSN(ret, line, putnil);
|
ADD_INSN(ret, line, putnil);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (iseq->body->type == ISEQ_TYPE_EVAL) {
|
|
||||||
next_in_eval:
|
|
||||||
COMPILE_ERROR(ERROR_ARGS "Can't escape from eval with next");
|
|
||||||
return COMPILE_NG;
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
const rb_iseq_t *ip = iseq;
|
const rb_iseq_t *ip = iseq;
|
||||||
|
|
||||||
|
@ -6674,7 +6669,8 @@ compile_next(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, in
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (ip->body->type == ISEQ_TYPE_EVAL) {
|
else if (ip->body->type == ISEQ_TYPE_EVAL) {
|
||||||
goto next_in_eval;
|
COMPILE_ERROR(ERROR_ARGS "Can't escape from eval with next");
|
||||||
|
return COMPILE_NG;
|
||||||
}
|
}
|
||||||
|
|
||||||
ip = ip->body->parent_iseq;
|
ip = ip->body->parent_iseq;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче