🙆
[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)
- これ自体は前者に一貫すること自体は matz も承認している
- PR も出ているがまだマージはされていない
Discussion