Turned `recur` into `int` [Feature #15777]

This commit is contained in:
Nobuyoshi Nakada 2019-06-21 17:21:34 +09:00
Родитель fb85a42860
Коммит 5b7cc63d11
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4BC7D6DF58D8DF60
3 изменённых файлов: 5 добавлений и 6 удалений

Просмотреть файл

@ -2200,7 +2200,7 @@ VALUE rb_search_class_path(VALUE);
VALUE rb_attr_delete(VALUE, ID);
VALUE rb_ivar_lookup(VALUE obj, ID id, VALUE undef);
void rb_autoload_str(VALUE mod, ID id, VALUE file);
VALUE rb_autoload_at_p(VALUE, ID, VALUE);
VALUE rb_autoload_at_p(VALUE, ID, int);
void rb_deprecate_constant(VALUE mod, const char *name);
NORETURN(VALUE rb_mod_const_missing(VALUE,VALUE));
rb_gvar_getter_t *rb_gvar_getter_function_of(const struct rb_global_entry *);

3
load.c
Просмотреть файл

@ -1169,9 +1169,8 @@ rb_mod_autoload(VALUE mod, VALUE sym, VALUE file)
static VALUE
rb_mod_autoload_p(int argc, VALUE *argv, VALUE mod)
{
rb_check_arity(argc, 1, 2);
int recur = (rb_check_arity(argc, 1, 2) == 1) ? TRUE : RTEST(argv[1]);
VALUE sym = argv[0];
VALUE recur = (argc == 1) ? Qtrue : argv[1];
ID id = rb_check_id(&sym);
if (!id) {

Просмотреть файл

@ -2332,17 +2332,17 @@ rb_autoload_load(VALUE mod, ID id)
VALUE
rb_autoload_p(VALUE mod, ID id)
{
return rb_autoload_at_p(mod, id, Qtrue);
return rb_autoload_at_p(mod, id, TRUE);
}
VALUE
rb_autoload_at_p(VALUE mod, ID id, VALUE recur)
rb_autoload_at_p(VALUE mod, ID id, int recur)
{
VALUE load;
struct autoload_data_i *ele;
while (!autoload_defined_p(mod, id)) {
if (!RTEST(recur)) return Qnil;
if (!recur) return Qnil;
mod = RCLASS_SUPER(mod);
if (!mod) return Qnil;
}