diff options
-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)) |