oop/freeze_singleton_class.rb

tests/_examples/oop/freeze_singleton_class.rb in the metorex repository.

target = Object.new
singleton = target.singleton_class

puts singleton.frozen?
target.freeze
puts singleton.frozen?
puts target.frozen?

begin
  target.instance_variable_set(:@name, "set")
rescue RuntimeError => error
  puts error.class
end

puts Complex(1.3, 3.1).frozen?
puts Rational(1, 3).frozen?
puts 1.frozen?
puts 1.2.frozen?
puts :sym.frozen?
puts nil.frozen?

plain = Object.new
puts plain.frozen?
puts plain.freeze.equal?(plain)
puts plain.frozen?

Output:

false
true
true
FrozenError
true
true
true
true
true
true
false
true
true