singleton class needs to set __outer__; fixed #1983

This commit is contained in:
Yukihiro "Matz" Matsumoto
2014-03-31 14:12:47 +09:00
parent 4c2969910f
commit d7c29322b8
+4
View File
@@ -982,6 +982,10 @@ mrb_singleton_class(mrb_state *mrb, mrb_value v)
}
obj = mrb_basic_ptr(v);
prepare_singleton_class(mrb, obj);
if (mrb->c && mrb->c->ci && mrb->c->ci->target_class) {
mrb_obj_iv_set(mrb, (struct RObject*)obj->c, mrb_intern_lit(mrb, "__outer__"),
mrb_obj_value(mrb->c->ci->target_class));
}
return mrb_obj_value(obj->c);
}