Assert not to be UNDEF visibility

Any defined methods, bound to any classes/modules and not being
UNDEFINED_METHOD_ENTRY_P, should not be METHOD_VISI_UNDEF.
This commit is contained in:
Nobuyoshi Nakada 2021-09-01 18:45:03 +09:00
Родитель f9bdb17c02
Коммит 10ebf87428
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 7CD2805BFA3770C6
2 изменённых файлов: 2 добавлений и 0 удалений

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

@ -1435,6 +1435,7 @@ method_entry_i(ID key, VALUE value, void *data)
}
else {
type = METHOD_ENTRY_VISI(me);
RUBY_ASSERT(type != METHOD_VISI_UNDEF);
}
st_add_direct(arg->list, key, (st_data_t)type);
}

1
proc.c
Просмотреть файл

@ -1657,6 +1657,7 @@ mnew_internal(const rb_method_entry_t *me, VALUE klass, VALUE iclass,
}
if (visi == METHOD_VISI_UNDEF) {
visi = METHOD_ENTRY_VISI(me);
RUBY_ASSERT(visi != METHOD_VISI_UNDEF); /* !UNDEFINED_METHOD_ENTRY_P(me) */
if (scope && (visi != METHOD_VISI_PUBLIC)) {
if (!error) return Qnil;
rb_print_inaccessible(klass, id, visi);