Warn local variables which conflict with new numbered parameters

This commit is contained in:
Nobuyoshi Nakada 2019-08-29 22:07:45 +09:00
Родитель 092f31e7e2
Коммит 3754e15530
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4BC7D6DF58D8DF60
2 изменённых файлов: 17 добавлений и 0 удалений

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

@ -57,6 +57,19 @@ firstline, predefined = __LINE__+1, %[\
nil
_ UScore
# MUST be successive
_0 NUMPARAM_0
_1 NUMPARAM_1
_2 NUMPARAM_2
_3 NUMPARAM_3
_4 NUMPARAM_4
_5 NUMPARAM_5
_6 NUMPARAM_6
_7 NUMPARAM_7
_8 NUMPARAM_8
_9 NUMPARAM_9
"/*NULL*/" NULL
empty?
eql?

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

@ -11652,6 +11652,10 @@ arg_var(struct parser_params *p, ID id)
static void
local_var(struct parser_params *p, ID id)
{
if (id >= idNUMPARAM_0 && id <= idNUMPARAM_9) {
rb_warn1("`_%d' is used as numbered parameter",
WARN_I((int)(id - idNUMPARAM_0)));
}
vtable_add(p->lvtbl->vars, id);
if (p->lvtbl->used) {
vtable_add(p->lvtbl->used, (ID)p->ruby_sourceline);