🙌
[Bug #21698] エラーメッセージに Object# が付与されているバグ報告
[Bug #21698] Should simple ArgumentError refer to Object?
- Ruby 3.4 で次のようなコードを実行した場合に
'foo'というメソッド名を参照してエラーメッセージを出力する
def foo(x, y)
end
foo(1)
# Ruby 3.4 => error: 'foo': wrong number of arguments (given 1, expected 2) (ArgumentError)
- これが開発版の Ruby 4.0-dev では
'Object#foo'のような名称で出力される
def foo(x, y)
end
foo(1)
# Ruby 4.0 => 'Object#foo': wrong number of arguments (given 1, expected 2) (ArgumentError)
- この表示したいは間違っていないがコード上に
Objectという名前はどこにも存在しないので混乱する、という旨のチケット - これなんですが Ruby 3.4 で対応された Feature #19117: Include the method owner in backtraces, not just the method name で意図的に変更されたものになる
- 次のようなコードであれば Ruby 3.4
def foo
raise
end
foo
# => error: 'Object#foo': unhandled exception
- ただし
"wrong number of arguments"エラーの場合はObject#の部分が表示されないバグがあったみたいで Ruby 3.4 時点では最初に提示されたコートではObject#が表示されずにバグを修正した結果Object#が表示されるようになったみたい - 最終的には NEWS の方にその旨を反映することでこのチケットは閉じられている
Discussion