🍣
[Bug #20607] スレッドローカルの情報にアクセスするメソッドのエラーメッセージに一貫性がないバグ報告
[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 はでています
Discussion