Skip to content

Commit

Permalink
try
Browse files Browse the repository at this point in the history
  • Loading branch information
eregon committed Oct 12, 2024
1 parent 5f7de85 commit 36c800f
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 4 deletions.
2 changes: 1 addition & 1 deletion lib/zeitwerk/cref.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def initialize(mod, cname)

# @sig () -> String
def path
@path ||= Object.equal?(@mod) ? @cname.name : "#{real_mod_name(@mod)}::#{@cname.name}".freeze
@path ||= Object.equal?(@mod) ? @cname.name : "#{real_mod_name_with_workaround(@mod)}::#{@cname.name}".freeze
end

# @sig () -> String?
Expand Down
2 changes: 1 addition & 1 deletion lib/zeitwerk/explicit_namespace.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class << self
if Object.equal?(mod)
@loaders.delete(cname)
else
@loaders.delete("#{real_mod_name(mod)}::#{cname}")
@loaders.delete("#{real_mod_name_with_workaround(mod)}::#{cname}")
end
end

Expand Down
3 changes: 2 additions & 1 deletion lib/zeitwerk/loader/callbacks.rb
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,8 @@ module Zeitwerk::Loader::Callbacks
# @private
# @sig (Module) -> void
def on_namespace_loaded(namespace)
if dirs = namespace_dirs.delete(real_mod_name(namespace))
name = real_mod_name_with_workaround(namespace)
if dirs = namespace_dirs.delete(name)
dirs.each do |dir|
define_autoloads_for_dir(dir, namespace)
end
Expand Down
14 changes: 13 additions & 1 deletion lib/zeitwerk/real_mod_name.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,25 @@ def real_mod_name(mod)
name = UNBOUND_METHOD_MODULE_NAME.bind_call(mod)
# https://github.com/oracle/truffleruby/issues/3683
if name && name.start_with?('Object::')
name = name[8..-1]
p name
puts caller, nil
end
name
end

def real_mod_name_with_workaround(mod)
n = mod.name
if n && n.start_with?('Object::')
return n[8..-1]
end

real_mod_name(mod)
end
else
def real_mod_name(mod)
UNBOUND_METHOD_MODULE_NAME.bind_call(mod)
end

alias_method :real_mod_name_with_workaround, :real_mod_name
end
end

0 comments on commit 36c800f

Please sign in to comment.