💡
[Bug #21003] 意図せず『ブロック引数を参照していない』警告が出るバグ報告
[Bug #21003] unexpected warning about ignored block
- 以下のようなコードで意図せず警告が出力されるというバグ報告
$VERBOSE = true
def foo(*, &block) = block.call
def bar(buz, ...) = foo(buz, ...)
# warning: the block passed to 'Object#bar' defined at test.rb:4 may be ignored
p bar(:test) { 1 + 2 } # => 3
- これは Ruby 3.4 で追加された『ブロックを使用していないメソッドにブロック引数を渡した時の警告』になります
- 例えば以下のような感じです
$VERBOSE = true
def hoge
end
# hoge メソッドではブロック引数を参照していないのでブロック引数を渡すと警告が出る
# warning: the block passed to 'Object#hoge' defined at test.rb:3 may be ignored
hoge {}
- 最小のコードだと
foo
にブロック引数をフォワードしているので『ブロック引数を参照している』はずなのに意図せず警告が出ている感じですね - このバグは開発版の Ruby 3.5-dev で修正済みです
Discussion