Actions
Bug #21330
openNamespace: Class and Module frozen status is not namespaced
Description
File.write("/tmp/test.rb", <<~'RUBY')
Hash.freeze
RUBY
ns = Namespace.new
ns.require("/tmp/test.rb")
class Hash
def monkey_patch
end
end
Expected behavior:
Since the monkey patch is in a different namespace, I'd expect it to not impact code that is running in another namespace.
Actual behavior:
test.rb:9:in '<class:Hash>': can't modify frozen class: Hash (FrozenError)
The class is frozen globally, breaking code in other namespaces.
Is this by design, or does that mean the frozen status need to be moved in the classext_t
as well?
Updated by byroot (Jean Boussier) about 17 hours ago
- Subject changed from Namespace: Class and Module frozen status is not namespace to Namespace: Class and Module frozen status is not namespaced
Updated by tagomoris (Satoshi Tagomori) about 15 hours ago
The frozen flag is what I missed. I think we should move the flag to rb_classext_t
.
Actions
Like0
Like0Like0