diff --git a/prism_compile.c b/prism_compile.c index 71361e9aa98ef3..e65568840113d7 100644 --- a/prism_compile.c +++ b/prism_compile.c @@ -3621,8 +3621,6 @@ pm_compile_call(rb_iseq_t *iseq, const pm_call_node_t *call_node, LINK_ANCHOR *c const pm_node_location_t location = PM_LOCATION_START_LOCATION(scope_node->parser, message_loc, call_node->base.node_id); - LINK_ELEMENT *opt_new_prelude = LAST_ELEMENT(ret); - LABEL *else_label = NEW_LABEL(location.line); LABEL *end_label = NEW_LABEL(location.line); LABEL *retry_end_l = NEW_LABEL(location.line); @@ -3661,6 +3659,8 @@ pm_compile_call(rb_iseq_t *iseq, const pm_call_node_t *call_node, LINK_ANCHOR *c add_trace_branch_coverage(iseq, ret, &code_location, node_id, 0, "then", branches); } + LINK_ELEMENT *opt_new_prelude = LAST_ELEMENT(ret); + int flags = 0; struct rb_callinfo_kwarg *kw_arg = NULL; diff --git a/test/ruby/test_optimization.rb b/test/ruby/test_optimization.rb index d1cf7652475e5f..e39eafa5e50bb9 100644 --- a/test/ruby/test_optimization.rb +++ b/test/ruby/test_optimization.rb @@ -1216,6 +1216,11 @@ def == x RUBY end + def test_opt_new_with_safe_navigation + payload = nil + assert_nil payload&.new + end + def test_opt_new pos_initialize = " def initialize a, b