diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-10-08 08:27:51 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-10-08 08:27:51 +0000 |
commit | 02fe713b46a5f2365a2eccf0064b6116d7117e8e (patch) | |
tree | 9123de4e6dd6eb357a642e3d251707fcd7d040c4 | |
parent | 1ba17d0e91bb22f22586868e94ec1acfb3bba565 (diff) |
constant.h: constant visibilities
* constant.h (RB_CONST_PRIVATE_P, RB_CONST_PUBLIC_P): macros to
predicate constant visibilities.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47846 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | constant.h | 8 | ||||
-rw-r--r-- | variable.c | 6 |
2 files changed, 10 insertions, 4 deletions
diff --git a/constant.h b/constant.h index 8c854bfffa..c7de5da533 100644 --- a/constant.h +++ b/constant.h @@ -13,9 +13,15 @@ typedef enum { CONST_PUBLIC = 0x00, - CONST_PRIVATE = 0x01 + CONST_PRIVATE, + CONST_VISIBILITY_MAX } rb_const_flag_t; +#define RB_CONST_PRIVATE_P(ce) \ + ((ce)->flag == CONST_PRIVATE) +#define RB_CONST_PUBLIC_P(ce) \ + ((ce)->flag == CONST_PUBLIC) + typedef struct rb_const_entry_struct { rb_const_flag_t flag; int line; diff --git a/variable.c b/variable.c index b32a6ffe59..b3ae3bdde7 100644 --- a/variable.c +++ b/variable.c @@ -1836,7 +1836,7 @@ rb_const_get_0(VALUE klass, ID id, int exclude, int recurse, int visibility) rb_const_entry_t *ce; while ((ce = rb_const_lookup(tmp, id))) { - if (visibility && ce->flag == CONST_PRIVATE) { + if (visibility && RB_CONST_PRIVATE_P(ce)) { rb_name_error(id, "private constant %"PRIsVALUE"::%"PRIsVALUE" referenced", rb_class_name(klass), QUOTE_ID(id)); } @@ -2029,7 +2029,7 @@ list_i(st_data_t key, st_data_t value, VALUE ary) { ID sym = (ID)key; rb_const_entry_t *ce = (rb_const_entry_t *)value; - if (ce->flag != CONST_PRIVATE) rb_ary_push(ary, ID2SYM(sym)); + if (RB_CONST_PUBLIC_P(ce)) rb_ary_push(ary, ID2SYM(sym)); return ST_CONTINUE; } @@ -2093,7 +2093,7 @@ rb_const_defined_0(VALUE klass, ID id, int exclude, int recurse, int visibility) retry: while (tmp) { if ((ce = rb_const_lookup(tmp, id))) { - if (visibility && ce->flag == CONST_PRIVATE) { + if (visibility && RB_CONST_PRIVATE_P(ce)) { return (int)Qfalse; } if (ce->value == Qundef && !check_autoload_required(tmp, id, 0) && !rb_autoloading_value(tmp, id, 0)) |