🙆

[Bug #21374] frozen オブジェクトに対して特異メソッドを定義した時のエラーメッセージのバグ報告

に公開

[Bug #21374] FrozenError message is inconsistent when a singleton method is defined on a frozen object

  • frozen オブジェクトに対して特異メソッドを定義した場合のエラーメッセージが矛盾してるというバグ報告
  • 例えば次のように frozen オブジェクトを変更するとエラーメッセージには クラス名オブジェクト が含まれる
    • can't modify frozen <class>: <object#inspect>
object = [];
object.freeze;

object.instance_variable_set(:@a, 42)
# error: 'Kernel#instance_variable_set': can't modify frozen Array: [] (FrozenError)
  • しかし、特異メソッドを定義した場合はその限りではない
object = [];
object.freeze;

# 本来であれば Array になってほいしいが object という名前になっている
def object.x; end
# error: '<main>': can't modify frozen object: [] (FrozenError)
GitHubで編集を提案

Discussion