[PRISM] Account for RescueNodes with no statements
We need a PUTNIL if a RescueNode has no statements.
This commit is contained in:
parent
d6584a0201
commit
2a8d9c59ff
@ -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);
|
ADD_GETLOCAL(ret, &dummy_line_node, LVAR_ERRINFO, 0);
|
||||||
PM_COMPILE((pm_node_t *)rescue_node->reference);
|
PM_COMPILE((pm_node_t *)rescue_node->reference);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rescue_node->statements) {
|
if (rescue_node->statements) {
|
||||||
PM_COMPILE((pm_node_t *)rescue_node->statements);
|
PM_COMPILE((pm_node_t *)rescue_node->statements);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
PM_PUTNIL;
|
||||||
|
}
|
||||||
|
|
||||||
ADD_INSN(ret, &dummy_line_node, leave);
|
ADD_INSN(ret, &dummy_line_node, leave);
|
||||||
ADD_LABEL(ret, rescue_end);
|
ADD_LABEL(ret, rescue_end);
|
||||||
|
|
||||||
|
@ -792,6 +792,12 @@ module Prism
|
|||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
end
|
end
|
||||||
CODE
|
CODE
|
||||||
|
assert_prism_eval(<<~CODE)
|
||||||
|
begin
|
||||||
|
raise StandardError
|
||||||
|
rescue StandardError => e
|
||||||
|
end
|
||||||
|
CODE
|
||||||
assert_prism_eval(<<~CODE)
|
assert_prism_eval(<<~CODE)
|
||||||
begin
|
begin
|
||||||
1
|
1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user