👏

[Bug #20217] begin ~ rescue ~ end を利用すると void な値を代入できるバグ報告

2024/03/26に公開

[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
GitHubで編集を提案

Discussion