Extract repeating NODE references as a local variable

This commit is contained in:
Nobuyoshi Nakada 2024-01-09 13:04:26 +09:00
Родитель 37ed86fd3c
Коммит a4406bc89a
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 3582D74E1FEE4465
1 изменённых файлов: 7 добавлений и 5 удалений

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

@ -6850,11 +6850,13 @@ assocs : assoc
assocs = tail;
}
else if (tail) {
if (RNODE_LIST(assocs)->nd_head &&
!RNODE_LIST(tail)->nd_head && nd_type_p(RNODE_LIST(tail)->nd_next, NODE_LIST) &&
nd_type_p(RNODE_LIST(RNODE_LIST(tail)->nd_next)->nd_head, NODE_HASH)) {
/* DSTAR */
tail = RNODE_HASH(RNODE_LIST(RNODE_LIST(tail)->nd_next)->nd_head)->nd_head;
if (RNODE_LIST(assocs)->nd_head) {
NODE *n = RNODE_LIST(tail)->nd_next;
if (!RNODE_LIST(tail)->nd_head && nd_type_p(n, NODE_LIST) &&
nd_type_p((n = RNODE_LIST(n)->nd_head), NODE_HASH)) {
/* DSTAR */
tail = RNODE_HASH(n)->nd_head;
}
}
assocs = list_concat(assocs, tail);
}