@@ -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 ( " " )
0 commit comments