Skip to content

Commit 805494d

Browse files
committed
Set superclass if unknown
1 parent f5576c3 commit 805494d

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

History.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
* Fixed issue with <!-- --> style comments
2424
* Lowercase words are no longer rdoc'd as methods without leading #, as
2525
described in the documentation
26+
* RDoc now correctly sets superclasses if they were originally unknown
2627

2728
=== 2.0.0 / 2008-04-10
2829

lib/rdoc/code_objects.rb

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ def defined_in?(file)
264264
end
265265

266266
def add_class(class_type, name, superclass)
267-
add_class_or_module(@classes, class_type, name, superclass)
267+
add_class_or_module @classes, class_type, name, superclass
268268
end
269269

270270
def add_module(class_type, name)
@@ -550,22 +550,26 @@ def full_name
550550
def add_class_or_module(collection, class_type, name, superclass)
551551
cls = collection[name]
552552

553-
if cls
553+
if cls then
554554
puts "Reusing class/module #{name}" #if $DEBUG_RDOC
555555
else
556-
if class_type == NormalModule
556+
if class_type == NormalModule then
557557
all = @@all_modules
558558
else
559559
all = @@all_classes
560560
end
561561

562562
cls = all[name]
563563

564-
if !cls
564+
unless cls then
565565
cls = class_type.new(name, superclass)
566566
all[name] = cls unless @done_documenting
567567
end
568568

569+
if NormalClass === cls and cls.superclass.nil? then
570+
cls.superclass = superclass
571+
end
572+
569573
puts "Adding class/module #{name} to #{@name}" if $DEBUG_RDOC
570574

571575
collection[name] = cls unless @done_documenting
@@ -628,6 +632,8 @@ class ClassModule < Context
628632

629633
attr_accessor :diagram
630634

635+
attr_writer :superclass
636+
631637
def initialize(name, superclass = nil)
632638
@name = name
633639
@diagram = nil
@@ -673,12 +679,12 @@ def superclass
673679

674680
scope = self
675681

676-
until TopLevel === scope do
682+
begin
677683
superclass = scope.classes.find { |c| c.name == @superclass }
678684

679685
return superclass.full_name if superclass
680686
scope = scope.parent
681-
end
687+
end until scope.nil? or TopLevel === scope
682688

683689
@superclass
684690
end
@@ -807,9 +813,7 @@ def param_seq
807813
if (block = block_params)
808814
# If this method has explicit block parameters, remove any
809815
# explicit &block
810-
$stderr.puts p
811816
p.sub!(/,?\s*&\w+/)
812-
$stderr.puts p
813817

814818
block.gsub!(/\s*\#.*/, '')
815819
block = block.tr("\n", " ").squeeze(" ")

lib/rdoc/parser/c.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,13 +482,14 @@ def handle_class_module(var_name, class_mod, class_name, parent, in_module)
482482
enclosure = @top_level
483483
end
484484

485-
if class_mod == "class"
485+
if class_mod == "class" then
486486
cm = enclosure.add_class RDoc::NormalClass, class_name, parent_name
487487
@stats.num_classes += 1
488488
else
489489
cm = enclosure.add_module RDoc::NormalModule, class_name
490490
@stats.num_modules += 1
491491
end
492+
492493
cm.record_location(enclosure.toplevel)
493494

494495
find_class_comment(cm.full_name, cm)

0 commit comments

Comments
 (0)