mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Revert "Drop unnecessary upper procs linked from class/module/def syntax"
Fix #5528 This reverts commit 59201b59046b9e73c309508350cd3c0fafd20e4d; #5497
This commit is contained in:
@@ -1066,19 +1066,6 @@ get_send_args(mrb_state *mrb, mrb_int argc, mrb_value *regs)
|
||||
return mrb_ary_new_from_values(mrb, argc, regs);
|
||||
}
|
||||
|
||||
static void
|
||||
proc_adjust_upper(struct RProc *p)
|
||||
{
|
||||
/* skip upper procs while unnamed blocks and method closures */
|
||||
while (p->upper) {
|
||||
if (MRB_FLAG_TEST(p->upper, MRB_PROC_SCOPE) &&
|
||||
!MRB_FLAG_TEST(p->upper, MRB_PROC_STRICT)) {
|
||||
break;
|
||||
}
|
||||
p->upper = p->upper->upper;
|
||||
}
|
||||
}
|
||||
|
||||
mrb_value mrb_obj_missing(mrb_state *mrb, mrb_value mod);
|
||||
void mrb_hash_check_kdict(mrb_state *mrb, mrb_value self);
|
||||
void mrb_method_added(mrb_state *mrb, struct RClass *c, mrb_sym mid);
|
||||
@@ -2717,7 +2704,6 @@ RETRY_TRY_BLOCK:
|
||||
p->flags |= MRB_PROC_SCOPE;
|
||||
}
|
||||
if (c & OP_L_STRICT) p->flags |= MRB_PROC_STRICT;
|
||||
if (c == OP_L_METHOD) proc_adjust_upper(p);
|
||||
regs[a] = mrb_obj_value(p);
|
||||
mrb_gc_arena_restore(mrb, ai);
|
||||
NEXT;
|
||||
@@ -2797,7 +2783,6 @@ RETRY_TRY_BLOCK:
|
||||
mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)proc);
|
||||
MRB_PROC_SET_TARGET_CLASS(p, mrb_class_ptr(recv));
|
||||
p->flags |= MRB_PROC_SCOPE;
|
||||
proc_adjust_upper(p);
|
||||
|
||||
/* prepare call stack */
|
||||
cipush(mrb, a, a, mrb_class_ptr(recv), p, 0, 0);
|
||||
|
||||
Reference in New Issue
Block a user