mirror of
https://github.com/ruby/ruby.git
synced 2025-09-17 09:33:59 +02:00
[ruby/rdoc] Fix prism_ruby superclass resolve order
(https://github.com/ruby/rdoc/pull/1267)
RDoc::Parser::PrismRuby wrongly resolves superclass of `class Cipher < Cipher; end` that exist in openssl.
Superclass resolve should be done before adding class.
57a4615a92
This commit is contained in:
parent
fb73be1f2a
commit
23018c2fb4
2 changed files with 23 additions and 2 deletions
|
@ -642,14 +642,16 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|||
|
||||
owner, name = find_or_create_constant_owner_name(module_name)
|
||||
if is_class
|
||||
mod = owner.classes_hash[name] || owner.add_class(RDoc::NormalClass, name, superclass_name || '::Object')
|
||||
|
||||
# RDoc::NormalClass resolves superclass name despite of the lack of module nesting information.
|
||||
# We need to fix it when RDoc::NormalClass resolved to a wrong constant name
|
||||
if superclass_name
|
||||
superclass_full_path = resolve_constant_path(superclass_name)
|
||||
superclass = @store.find_class_or_module(superclass_full_path) if superclass_full_path
|
||||
superclass_full_path ||= superclass_name
|
||||
end
|
||||
# add_class should be done after resolving superclass
|
||||
mod = owner.classes_hash[name] || owner.add_class(RDoc::NormalClass, name, superclass_name || '::Object')
|
||||
if superclass_name
|
||||
if superclass
|
||||
mod.superclass = superclass
|
||||
elsif mod.superclass.is_a?(String) && mod.superclass != superclass_full_path
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue