Use `token_seen` and simplify `comment_at_top`

Instead of scanning before the current comment.
This commit is contained in:
Nobuyoshi Nakada 2024-01-25 14:33:53 +09:00
Родитель 2b9719ea30
Коммит ff55d6b8e1
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 3582D74E1FEE4465
1 изменённых файлов: 3 добавлений и 8 удалений

11
parse.y
Просмотреть файл

@ -9630,16 +9630,11 @@ parser_set_encode(struct parser_params *p, const char *name)
#endif #endif
} }
static int static bool
comment_at_top(struct parser_params *p) comment_at_top(struct parser_params *p)
{ {
const char *ptr = p->lex.pbeg, *ptr_end = p->lex.pcur - 1; if (p->token_seen) return false;
if (p->line_count != (p->has_shebang ? 2 : 1)) return 0; return (p->line_count == (p->has_shebang ? 2 : 1));
while (ptr < ptr_end) {
if (!ISSPACE(*ptr)) return 0;
ptr++;
}
return 1;
} }
typedef long (*rb_magic_comment_length_t)(struct parser_params *p, const char *name, long len); typedef long (*rb_magic_comment_length_t)(struct parser_params *p, const char *name, long len);