summaryrefslogtreecommitdiffhomepage
path: root/src/class.c
diff options
context:
space:
mode:
authorYukihiro Matsumoto <[email protected]>2012-08-03 19:56:14 +0900
committerYukihiro Matsumoto <[email protected]>2012-08-03 19:56:14 +0900
commit77aa261f3bcb9ab93e1ea9a9d89f8cba51b98873 (patch)
tree5712441fc04b74c7cd9735b657db75b021cceede /src/class.c
parentf121558f9379c92a20051e3d87489d4c8125e9f9 (diff)
downloadmruby-77aa261f3bcb9ab93e1ea9a9d89f8cba51b98873.tar.gz
mruby-77aa261f3bcb9ab93e1ea9a9d89f8cba51b98873.zip
mrb_singleton_class should raise TypeError for immediate objects
Diffstat (limited to 'src/class.c')
-rw-r--r--src/class.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/class.c b/src/class.c
index 13c2d0469..29ec18e13 100644
--- a/src/class.c
+++ b/src/class.c
@@ -807,11 +807,16 @@ mrb_singleton_class(mrb_state *mrb, mrb_value v)
switch (mrb_type(v)) {
case MRB_TT_FALSE:
+ if (mrb_nil_p(v))
+ return mrb_obj_value(mrb->nil_class);
+ return mrb_obj_value(mrb->false_class);
case MRB_TT_TRUE:
+ return mrb_obj_value(mrb->true_class);
case MRB_TT_SYMBOL:
case MRB_TT_FIXNUM:
case MRB_TT_FLOAT:
- return mrb_nil_value(); /* should raise TypeError */
+ mrb_raise(mrb, E_TYPE_ERROR, "can't define singleton");
+ return mrb_nil_value(); /* not reached */
default:
break;
}