const_defined? to check superclasses; ref #2593

This commit is contained in:
Yukihiro "Matz" Matsumoto
2014-09-19 02:41:20 +09:00
parent 50f54529f2
commit 6b34166ba5
+6 -10
View File
@@ -854,16 +854,6 @@ mrb_vm_cv_set(mrb_state *mrb, mrb_sym sym, mrb_value v)
mrb_mod_cv_set(mrb, c, sym, v);
}
MRB_API mrb_bool
mrb_const_defined(mrb_state *mrb, mrb_value mod, mrb_sym sym)
{
struct RClass *m = mrb_class_ptr(mod);
iv_tbl *t = m->iv;
if (!t) return FALSE;
return iv_get(mrb, t, sym, NULL);
}
static void
mod_const_check(mrb_state *mrb, mrb_value mod)
{
@@ -1113,6 +1103,12 @@ retry:
return FALSE;
}
MRB_API mrb_bool
mrb_const_defined(mrb_state *mrb, mrb_value mod, mrb_sym id)
{
return mrb_const_defined_0(mrb, mrb_class_ptr(mod), id, TRUE, TRUE);
}
MRB_API mrb_bool
mrb_const_defined_at(mrb_state *mrb, struct RClass *klass, mrb_sym id)
{