@@ -285,7 +285,7 @@ def add_attribute attribute
285285 # unless it later sees <tt>class Container</tt>. +add_class+ automatically
286286 # upgrades +given_name+ to a class in this case.
287287
288- def add_class class_type , given_name , superclass = '::Object'
288+ def add_class class_type , given_name , superclass = '::Object' , type_parameters = [ ]
289289 # superclass +nil+ is passed by the C parser in the following cases:
290290 # - registering Object in 1.8 (correct)
291291 # - registering BasicObject in 1.9 (correct)
@@ -373,6 +373,7 @@ def add_class class_type, given_name, superclass = '::Object'
373373 klass . superclass = superclass
374374 end
375375 end
376+ klass . type_parameters = type_parameters
376377 else
377378 # this is a new class
378379 mod = @store . modules_hash . delete full_name
@@ -382,10 +383,10 @@ def add_class class_type, given_name, superclass = '::Object'
382383
383384 klass . superclass = superclass unless superclass . nil?
384385 else
385- klass = class_type . new name , superclass
386+ klass = class_type . new name , superclass , type_parameters
386387
387388 enclosing . add_class_or_module ( klass , enclosing . classes_hash ,
388- @store . classes_hash )
389+ @store . classes_hash , type_parameters )
389390 end
390391 end
391392
@@ -401,12 +402,13 @@ def add_class class_type, given_name, superclass = '::Object'
401402 # unless #done_documenting is +true+. Sets the #parent of +mod+
402403 # to +self+, and its #section to #current_section. Returns +mod+.
403404
404- def add_class_or_module mod , self_hash , all_hash
405+ def add_class_or_module mod , self_hash , all_hash , type_parameters = [ ]
405406 mod . section = current_section # TODO declaring context? something is
406407 # wrong here...
407408 mod . parent = self
408409 mod . full_name = nil
409410 mod . store = @store
411+ mod . type_parameters = type_parameters
410412
411413 unless @done_documenting then
412414 self_hash [ mod . name ] = mod
@@ -503,14 +505,15 @@ def add_method method
503505 # Adds a module named +name+. If RDoc already knows +name+ is a class then
504506 # that class is returned instead. See also #add_class.
505507
506- def add_module ( class_type , name )
508+ def add_module ( class_type , name , type_parameters = [ ] )
507509 mod = @classes [ name ] || @modules [ name ]
510+ mod . type_parameters = type_parameters if mod
508511 return mod if mod
509512
510513 full_name = child_name name
511514 mod = @store . modules_hash [ full_name ] || class_type . new ( name )
512515
513- add_class_or_module mod , @modules , @store . modules_hash
516+ add_class_or_module mod , @modules , @store . modules_hash , type_parameters
514517 end
515518
516519 ##
0 commit comments