Commit ca2cfc6f authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto Committed by GitHub

Merge pull request #3746 from christopheraue/mod_singleton_class_p

Implemented Module#singleton_class?
parents 645b0fb5 dd52b881
...@@ -9,12 +9,19 @@ mrb_mod_name(mrb_state *mrb, mrb_value self) ...@@ -9,12 +9,19 @@ mrb_mod_name(mrb_state *mrb, mrb_value self)
return mrb_nil_p(name)? name : mrb_str_dup(mrb, name); return mrb_nil_p(name)? name : mrb_str_dup(mrb, name);
} }
static mrb_value
mrb_mod_singleton_class_p(mrb_state *mrb, mrb_value self)
{
return mrb_bool_value(mrb_type(self) == MRB_TT_SCLASS);
}
void void
mrb_mruby_class_ext_gem_init(mrb_state *mrb) mrb_mruby_class_ext_gem_init(mrb_state *mrb)
{ {
struct RClass *mod = mrb->module_class; struct RClass *mod = mrb->module_class;
mrb_define_method(mrb, mod, "name", mrb_mod_name, MRB_ARGS_NONE()); mrb_define_method(mrb, mod, "name", mrb_mod_name, MRB_ARGS_NONE());
mrb_define_method(mrb, mod, "singleton_class?", mrb_mod_singleton_class_p, MRB_ARGS_NONE());
} }
void void
......
...@@ -22,3 +22,13 @@ assert 'Module#name' do ...@@ -22,3 +22,13 @@ assert 'Module#name' do
assert_nil mod.name assert_nil mod.name
assert_nil cls.name assert_nil cls.name
end end
assert 'Module#singleton_class?' do
mod = Module.new
cls = Class.new
scl = cls.singleton_class
assert_false mod.singleton_class?
assert_false cls.singleton_class?
assert_true scl.singleton_class?
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment