[PRISM] prevent underflow on popped splatarray (#8657)

prevent underflow on popped splatarray

This only emits the splat array node when not popped
This commit is contained in:
Adam Hess 2023-10-16 05:22:07 -07:00 коммит произвёл GitHub
Родитель 06a4011964
Коммит 6e88b72d7b
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 7 добавлений и 3 удалений

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

@ -2397,9 +2397,9 @@ pm_compile_node(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *const ret,
PM_COMPILE(splat_node->expression);
}
ADD_INSN1(ret, &dummy_line_node, splatarray, Qtrue);
PM_POP_IF_POPPED;
if (!popped) {
ADD_INSN1(ret, &dummy_line_node, splatarray, Qtrue);
}
return;
}
case PM_STATEMENTS_NODE: {

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

@ -325,6 +325,10 @@ module Prism
test_prism_eval("[ Prism: [:b, :c]]")
end
def test_SplatNode
test_prism_eval("*b = []")
end
############################################################################
# Jumps #
############################################################################