👋
[bugs.ruby][Bug #20319] ネストした特異クラスを参照しているときに frozen の情報が反映されないバグ報告
[Bug #20319] Singleton class is being frozen lazily in some cases
- 通常であれば
#freeze
するとそのオブジェクトの特異クラスもfreeze
される
object = Object.new
klass = object.singleton_class
object.freeze
pp klass.frozen? # => true
- しかし、次のように
singleton_class
をネストして参照している場合に意図しないタイミングでfreeze
されるというバグ報告
object = Object.new
klass = object.singleton_class.singleton_class
object.freeze
# ここでは false を返す
pp klass.frozen? # => false
# 特異クラスを参照し直すと
object.singleton_class.singleton_class
# true を返すようになる
pp klass.frozen? # => true
- これ自体はバグなんですが、他の対応として『そのオブジェクトのみを freeze する』みたいなシンプルな仕様にする案もでていますね
Discussion