@@ -285,7 +285,7 @@ def add_attribute attribute
285
285
# unless it later sees <tt>class Container</tt>. +add_class+ automatically
286
286
# upgrades +given_name+ to a class in this case.
287
287
288
- def add_class class_type , given_name , superclass = '::Object'
288
+ def add_class class_type , given_name , superclass = '::Object' , type_parameters = [ ]
289
289
# superclass +nil+ is passed by the C parser in the following cases:
290
290
# - registering Object in 1.8 (correct)
291
291
# - registering BasicObject in 1.9 (correct)
@@ -373,6 +373,7 @@ def add_class class_type, given_name, superclass = '::Object'
373
373
klass . superclass = superclass
374
374
end
375
375
end
376
+ klass . type_parameters = type_parameters
376
377
else
377
378
# this is a new class
378
379
mod = @store . modules_hash . delete full_name
@@ -382,10 +383,10 @@ def add_class class_type, given_name, superclass = '::Object'
382
383
383
384
klass . superclass = superclass unless superclass . nil?
384
385
else
385
- klass = class_type . new name , superclass
386
+ klass = class_type . new name , superclass , type_parameters
386
387
387
388
enclosing . add_class_or_module ( klass , enclosing . classes_hash ,
388
- @store . classes_hash )
389
+ @store . classes_hash , type_parameters )
389
390
end
390
391
end
391
392
@@ -401,12 +402,13 @@ def add_class class_type, given_name, superclass = '::Object'
401
402
# unless #done_documenting is +true+. Sets the #parent of +mod+
402
403
# to +self+, and its #section to #current_section. Returns +mod+.
403
404
404
- def add_class_or_module mod , self_hash , all_hash
405
+ def add_class_or_module mod , self_hash , all_hash , type_parameters = [ ]
405
406
mod . section = current_section # TODO declaring context? something is
406
407
# wrong here...
407
408
mod . parent = self
408
409
mod . full_name = nil
409
410
mod . store = @store
411
+ mod . type_parameters = type_parameters
410
412
411
413
unless @done_documenting then
412
414
self_hash [ mod . name ] = mod
@@ -503,14 +505,15 @@ def add_method method
503
505
# Adds a module named +name+. If RDoc already knows +name+ is a class then
504
506
# that class is returned instead. See also #add_class.
505
507
506
- def add_module ( class_type , name )
508
+ def add_module ( class_type , name , type_parameters = [ ] )
507
509
mod = @classes [ name ] || @modules [ name ]
510
+ mod . type_parameters = type_parameters if mod
508
511
return mod if mod
509
512
510
513
full_name = child_name name
511
514
mod = @store . modules_hash [ full_name ] || class_type . new ( name )
512
515
513
- add_class_or_module mod , @modules , @store . modules_hash
516
+ add_class_or_module mod , @modules , @store . modules_hash , type_parameters
514
517
end
515
518
516
519
##
0 commit comments