Merge pull request #5495 from dearblue/eval.2

Fixed finding variables defined in the upper proc failed
This commit is contained in:
Yukihiro "Matz" Matsumoto
2021-06-27 14:32:43 +09:00
committed by GitHub
3 changed files with 1005 additions and 1001 deletions
+6 -4
View File
@@ -807,10 +807,12 @@ search_upvar(codegen_scope *s, mrb_sym id, int *idx)
int i;
const mrb_sym *v = ir->lv;
for (i=1; n > 1; n--, v++, i++) {
if (*v == id) {
*idx = i;
return lv - 1;
if (v) {
for (i=1; n > 1; n--, v++, i++) {
if (*v == id) {
*idx = i;
return lv - 1;
}
}
}
if (MRB_PROC_SCOPE_P(u)) break;
+4 -3
View File
@@ -286,9 +286,10 @@ local_var_p(parser_state *p, mrb_sym sym)
const mrb_sym *v = ir->lv;
int i;
if (!v) break;
for (i=0; i+1 < ir->nlocals; i++) {
if (v[i] == sym) return TRUE;
if (v) {
for (i=0; i+1 < ir->nlocals; i++) {
if (v[i] == sym) return TRUE;
}
}
if (MRB_PROC_SCOPE_P(u)) break;
u = u->upper;
File diff suppressed because it is too large Load Diff