Skip to content

Commit dc4d1a1

Browse files
committed
Fix class/module alias document having wrong name
Stop aliased class/module document file overwrite original one. Fix aliasing-to-toplevel check.
1 parent 890d5da commit dc4d1a1

File tree

4 files changed

+26
-7
lines changed

4 files changed

+26
-7
lines changed

lib/rdoc/code_object/class_module.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -807,11 +807,13 @@ def update_aliases
807807
cm_alias = cm.dup
808808
cm_alias.name = const.name
809809

810-
# Don't move top-level aliases under Object, they look ugly there
811-
unless RDoc::TopLevel === cm_alias.parent then
810+
if full_name == 'Object'
811+
# Don't move top-level aliases under Object, they look ugly there
812+
cm_alias.parent = top_level
813+
else
812814
cm_alias.parent = self
813-
cm_alias.full_name = nil # force update for new parent
814815
end
816+
cm_alias.full_name = nil # force update for new parent
815817

816818
cm_alias.aliases.clear
817819
cm_alias.is_alias_for = cm

lib/rdoc/generator/darkfish.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,9 @@ def generate_class_files
356356

357357
current = nil
358358

359-
@classes.each do |klass|
359+
# Document files are generated only for non-alias classes/modules
360+
@classes.reject(&:is_alias_for).each do |klass|
361+
360362
current = klass
361363

362364
generate_class klass, template_file

test/rdoc/generator/aliki_test.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,13 @@ def setup
3434
@top_level.parser = RDoc::Parser::Ruby
3535
@klass = @top_level.add_class RDoc::NormalClass, 'Klass'
3636

37+
@alias_constant = RDoc::Constant.new 'A', nil, ''
38+
@alias_constant.record_location @top_level
39+
40+
@top_level.add_constant @alias_constant
41+
42+
@klass.add_module_alias @klass, @klass.name, @alias_constant, @top_level
43+
3744
@meth = RDoc::AnyMethod.new nil, 'method'
3845
@meth_with_html_tag_yield = RDoc::AnyMethod.new nil, 'method_with_html_tag_yield'
3946
@meth_with_html_tag_yield.block_params = '%<<script>alert("atui")</script>>, yield_arg'
@@ -57,6 +64,12 @@ def test_inheritance_and_template_dir
5764
assert_match %r{/template/aliki\z}, @g.template_dir.to_s
5865
end
5966

67+
def test_aliased_classes_full_name
68+
@g.generate
69+
70+
assert_equal(%w[Klass Klass::A Object], @g.classes.map(&:full_name).sort)
71+
end
72+
6073
def test_write_style_sheet_copies_css_and_js_only
6174
@g.generate
6275

test/rdoc/generator/darkfish_test.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -297,11 +297,13 @@ def test_install_rdoc_static_file_missing
297297
def test_setup
298298
@g.setup
299299

300-
assert_equal [@klass_alias, @ignored, @klass, @object],
300+
assert_equal %w[Ignored Klass Klass::A Object],
301+
[@ignored, @klass, @klass_alias, @object].map(&:full_name)
302+
assert_equal [@ignored, @klass, @klass_alias, @object],
301303
@g.classes.sort_by { |klass| klass.full_name }
302304
assert_equal [@top_level], @g.files
303305
assert_equal [@meth, @meth, @meth_bang, @meth_bang, @meth_with_html_tag_yield, @meth_with_html_tag_yield], @g.methods
304-
assert_equal [@klass_alias, @klass, @object], @g.modsort
306+
assert_equal [@klass, @klass_alias, @object], @g.modsort
305307
end
306308

307309
def test_template_for
@@ -338,7 +340,7 @@ def test_generated_method_with_html_tag_yield
338340

339341
@g.generate
340342

341-
path = File.join @tmpdir, 'A.html'
343+
path = File.join @tmpdir, 'Klass.html'
342344

343345
f = open(path)
344346
internal_file = f.read

0 commit comments

Comments
 (0)