summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-03-31 14:12:47 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-03-31 14:12:47 +0900
commitd7c29322b8fea584cb8940b9d216b9e11bdf94f9 (patch)
tree2c7abd2083914794b653defdbb6f8f5715f0cb98
parent4c2969910f16389c0e3d602a99ded0a3d0b6e256 (diff)
downloadmruby-d7c29322b8fea584cb8940b9d216b9e11bdf94f9.tar.gz
mruby-d7c29322b8fea584cb8940b9d216b9e11bdf94f9.zip
singleton class needs to set __outer__; fixed #1983
-rw-r--r--src/class.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/class.c b/src/class.c
index a214d7b27..54cf598a3 100644
--- a/src/class.c
+++ b/src/class.c
@@ -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);
}