diff --git a/parse.y b/parse.y index c93b8eda59..0a2aa6f1bc 100644 --- a/parse.y +++ b/parse.y @@ -4948,7 +4948,16 @@ opt_rescue : k_rescue exc_list exc_var then $$ = NEW_RESBODY($2, $3 ? block_append(p, node_assign(p, $3, NEW_ERRINFO(&@3), NO_LEX_CTXT, &@3), $5) : $5, $6, &@$); - fixpos($$, $2?$2:$5); + + if ($2) { + fixpos($$, $2); + } + else if ($3) { + fixpos($$, $3); + } + else { + fixpos($$, $5); + } /*% %*/ /*% ripper: rescue!(escape_Qundef($2), escape_Qundef($3), escape_Qundef($5), escape_Qundef($6)) %*/ }