👏
[Bug #20217] begin ~ rescue ~ end を利用すると void な値を代入できるバグ報告
[Bug #20217] void value not checked for begin/ensure/rescue
- 以下のように単純に
return
の結果を代入しようとするとシンタックスエラーになる
# error: void value expression (SyntaxError)
foo = return
# error: void value expression (SyntaxError)
foo = begin
return
end
- しかし次のように
begin ~ ensure ~ end
を介すとシンタックスエラーにならないというバグ報告
# no error
foo = begin
return
ensure
end
- これは開発版だと修正済み
# Ruby 3.3 => no error
# Ruby 3.4 => void value expression (SyntaxError)
foo = begin
return
ensure
end
Discussion