summaryrefslogtreecommitdiff
path: root/variable.c
diff options
context:
space:
mode:
Diffstat (limited to 'variable.c')
-rw-r--r--variable.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/variable.c b/variable.c
index d127bd11ea..8cb507628c 100644
--- a/variable.c
+++ b/variable.c
@@ -2848,7 +2848,7 @@ rb_const_remove(VALUE mod, ID id)
undefined_constant(mod, ID2SYM(id));
}
- rb_clear_constant_cache_for_id(id);
+ rb_clear_constant_cache();
val = ce->value;
if (val == Qundef) {
@@ -3132,7 +3132,7 @@ rb_const_set(VALUE klass, ID id, VALUE val)
struct rb_id_table *tbl = RCLASS_CONST_TBL(klass);
if (!tbl) {
RCLASS_CONST_TBL(klass) = tbl = rb_id_table_create(0);
- rb_clear_constant_cache_for_id(id);
+ rb_clear_constant_cache();
ce = ZALLOC(rb_const_entry_t);
rb_id_table_insert(tbl, id, (VALUE)ce);
setup_const_entry(ce, klass, val, CONST_PUBLIC);
@@ -3210,7 +3210,7 @@ const_tbl_update(struct autoload_const *ac)
struct autoload_data_i *ele = current_autoload_data(klass, id, &ac);
if (ele) {
- rb_clear_constant_cache_for_id(id);
+ rb_clear_constant_cache();
ac->value = val; /* autoload_i is non-WB-protected */
ac->file = rb_source_location(&ac->line);
@@ -3238,11 +3238,11 @@ const_tbl_update(struct autoload_const *ac)
"previous definition of %"PRIsVALUE" was here", name);
}
}
- rb_clear_constant_cache_for_id(id);
+ rb_clear_constant_cache();
setup_const_entry(ce, klass, val, visibility);
}
else {
- rb_clear_constant_cache_for_id(id);
+ rb_clear_constant_cache();
ce = ZALLOC(rb_const_entry_t);
rb_id_table_insert(tbl, id, (VALUE)ce);
@@ -3297,6 +3297,10 @@ set_const_visibility(VALUE mod, int argc, const VALUE *argv,
VALUE val = argv[i];
id = rb_check_id(&val);
if (!id) {
+ if (i > 0) {
+ rb_clear_constant_cache();
+ }
+
undefined_constant(mod, val);
}
if ((ce = rb_const_lookup(mod, id))) {
@@ -3311,12 +3315,15 @@ set_const_visibility(VALUE mod, int argc, const VALUE *argv,
ac->flag |= flag;
}
}
- rb_clear_constant_cache_for_id(id);
}
else {
+ if (i > 0) {
+ rb_clear_constant_cache();
+ }
undefined_constant(mod, ID2SYM(id));
}
}
+ rb_clear_constant_cache();
}
void