From 6b34166ba58fa8503a6a7805d39dd29c4b3c8445 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 19 Sep 2014 02:41:20 +0900 Subject: const_defined? to check superclasses; ref #2593 --- src/variable.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/variable.c b/src/variable.c index 440a33948..e9f77b8d9 100644 --- a/src/variable.c +++ b/src/variable.c @@ -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) { -- cgit v1.2.3