summaryrefslogtreecommitdiff
path: root/lib/rdoc
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2022-03-16 15:05:26 +0900
committergit <svn-admin@ruby-lang.org>2022-03-16 15:05:41 +0900
commitebcbca96fb93c100da48f411515d9d8802d60b2b (patch)
tree6a65f62ebcb558956c76112144fade71ac3160e2 /lib/rdoc
parentfc6e4ce62bfa95b6a0d4d4898e1128c1fce4db8a (diff)
[ruby/rdoc] Fix full name of known class
Properly set the name of `File::Constants`, which is the only name with a namespace in `RDoc::KNOWN_CLASSES`, and fixes longstanding bug that `File::Constants` becomes `File::File::Constants`. When it is generated by `rb_file_const` in dir.c, `name` is set to the qualified name as same as `full_name`, and generated in the normal way in file.c later, already set `full_name` is cleared and `name` will be constructed from the enclosing namespace and the `name`. It will results in duplicated namespace, `File::File::Constants`. https://github.com/ruby/rdoc/commit/3a8d6df562
Diffstat (limited to 'lib/rdoc')
-rw-r--r--lib/rdoc/parser/c.rb5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/rdoc/parser/c.rb b/lib/rdoc/parser/c.rb
index 075f4a072b..b1bbf22f16 100644
--- a/lib/rdoc/parser/c.rb
+++ b/lib/rdoc/parser/c.rb
@@ -667,13 +667,14 @@ class RDoc::Parser::C < RDoc::Parser
##
# Finds a RDoc::NormalClass or RDoc::NormalModule for +raw_name+
- def find_class(raw_name, name)
+ def find_class(raw_name, name, base_name = nil)
unless @classes[raw_name]
if raw_name =~ /^rb_m/
container = @top_level.add_module RDoc::NormalModule, name
else
container = @top_level.add_class RDoc::NormalClass, name
end
+ container.name = base_name if base_name
container.record_location @top_level
@classes[raw_name] = container
@@ -911,7 +912,7 @@ class RDoc::Parser::C < RDoc::Parser
return unless class_name
- class_obj = find_class var_name, class_name
+ class_obj = find_class var_name, class_name, class_name[/::\K[^:]+\z/]
unless class_obj then
@options.warn 'Enclosing class or module %p is not known' % [const_name]