[PRISM] Account for RescueNodes with no statements

We need a PUTNIL if a RescueNode has no statements.
This commit is contained in:
Jemma Issroff 2023-12-01 13:00:20 -05:00
Родитель d6584a0201
Коммит 2a8d9c59ff
2 изменённых файлов: 11 добавлений и 0 удалений

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

@ -3658,9 +3658,14 @@ pm_compile_node(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *const ret,
ADD_GETLOCAL(ret, &dummy_line_node, LVAR_ERRINFO, 0);
PM_COMPILE((pm_node_t *)rescue_node->reference);
}
if (rescue_node->statements) {
PM_COMPILE((pm_node_t *)rescue_node->statements);
}
else {
PM_PUTNIL;
}
ADD_INSN(ret, &dummy_line_node, leave);
ADD_LABEL(ret, rescue_end);

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

@ -792,6 +792,12 @@ module Prism
rescue StandardError => e
end
CODE
assert_prism_eval(<<~CODE)
begin
raise StandardError
rescue StandardError => e
end
CODE
assert_prism_eval(<<~CODE)
begin
1