Project

General

Profile

Actions

Bug #21330

open

Namespace: Class and Module frozen status is not namespaced

Added by byroot (Jean Boussier) about 17 hours ago. Updated about 15 hours ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:122042]

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?

cc @tagomoris (Satoshi Tagomori)

Actions #1

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

Also available in: Atom PDF

Like0
Like0Like0