⛳
[Bug #21338] 特定のメソッドで TracePoint で #block_given? がトリガーされなくなったというバグ報告
[Bug #21338] TracePoint Not Triggered for Kernel#block_given?
- 一部のメソッドを呼び出したときに
TracePointでKernel#block_given?がトリガーされなくなったというバグ報告
@trace = []
# 呼び出されたイベントのメソッドを保存
TracePoint.new { @trace << _1.method_id }.enable { 42.times }
# Ruby 3.3 では block_given? が呼ばれるが 3.4 では呼ばれない
pp @trace.index(:block_given?)
# Ruby 3.3 => 4
# Ruby 3.4 => nil
- 起因は 3dccb716daaee74d2ae00a5766fe1779fe220a81 で
Integer#timesなどの実装の内部で#block_given?を呼び出していたものを呼び出さなくなった変更による影響みたいですね- これは
#block_given?が再定義されている場合でも問題なく動作するように対応 - https://bugs.ruby-lang.org/issues/21338#note-4
- これは
- なのでこれ自体は意図する変更になる
Discussion