🍣

[Bug #20607] スレッドローカルの情報にアクセスするメソッドのエラーメッセージに一貫性がないバグ報告

2024/07/07に公開

[Bug #20607] Exception messages are inconsistent when thread-local variables are accessed

  • スレッドローカルの情報にアクセスするメソッドのエラーメッセージに一貫性がないバグ報告
  • 以下の場合は 123 is not a symbol (TypeError) のようなエラーメッセージが出力される
t = Thread.new {}.join

t.thread_variable_set(123, 42)   # error: 123 is not a symbol (TypeError)
t.thread_variable?(123)          # error: 123 is not a symbol (TypeError)
t.thread_variable_get(123)       # error: 123 is not a symbol (TypeError)
t[123] = 42                      # error: 123 is not a symbol (TypeError)
  • 一方で以下は 123 is not a symbol nor a string (TypeError) とエラーになる
t = Thread.new {}.join

t.fetch(123)   # error: 123 is not a symbol nor a string (TypeError)
t.key?(123)    # error: 123 is not a symbol nor a string (TypeError)
t[123]         # error: 123 is not a symbol nor a string (TypeError)
  • 前者は string の文言がなくて後者は string の文言がついてる違いですね
  • 厳密に言えば string も渡すことができるので後者の方が正しそう
  • これを対応する PR はでています
GitHubで編集を提案

Discussion