diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-09-19 02:41:20 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-09-19 02:41:20 +0900 |
| commit | 6b34166ba58fa8503a6a7805d39dd29c4b3c8445 (patch) | |
| tree | 19e7a64fc3e340cf28a7aa57986fbdd082c6770e /src | |
| parent | 50f54529f25c688c83cd8a281d415f3dc2314184 (diff) | |
| download | mruby-6b34166ba58fa8503a6a7805d39dd29c4b3c8445.tar.gz mruby-6b34166ba58fa8503a6a7805d39dd29c4b3c8445.zip | |
const_defined? to check superclasses; ref #2593
Diffstat (limited to 'src')
| -rw-r--r-- | src/variable.c | 16 |
1 files changed, 6 insertions, 10 deletions
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) { @@ -1114,6 +1104,12 @@ retry: } 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) { return mrb_const_defined_0(mrb, klass, id, TRUE, FALSE); |
