mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Raise TypeError with super inside instance_eval / class_eval
Commit d0f60182af introduced an exception as a limitation of mruby.
Subsequent CRuby-2.7 has changed its behavior to raise an exception.
ref: https://github.com/ruby/ruby/commit/55b7ba368696033f2e89b77cbcd4a05dec97b139
This commit is contained in:
@@ -1725,13 +1725,12 @@ RETRY_TRY_BLOCK:
|
||||
else if (target_class->tt == MRB_TT_MODULE) {
|
||||
target_class = mrb_vm_ci_target_class(ci);
|
||||
if (target_class->tt != MRB_TT_ICLASS) {
|
||||
mrb_value exc = mrb_exc_new_lit(mrb, E_RUNTIME_ERROR, "superclass info lost [mruby limitations]");
|
||||
mrb_exc_set(mrb, exc);
|
||||
goto L_RAISE;
|
||||
goto super_typeerror;
|
||||
}
|
||||
}
|
||||
recv = regs[0];
|
||||
if (!mrb_obj_is_kind_of(mrb, recv, target_class)) {
|
||||
super_typeerror: ;
|
||||
mrb_value exc = mrb_exc_new_lit(mrb, E_TYPE_ERROR,
|
||||
"self has wrong type to call super in this context");
|
||||
mrb_exc_set(mrb, exc);
|
||||
|
||||
Reference in New Issue
Block a user