diff --git a/lib/rdoc_plugin/parser.rb b/lib/rdoc_plugin/parser.rb index 4f02e04e4..ee267d3d6 100644 --- a/lib/rdoc_plugin/parser.rb +++ b/lib/rdoc_plugin/parser.rb @@ -52,14 +52,27 @@ def parse_member(decl:, context:, outer_name: nil) def parse_class_decl(decl:, context:, outer_name: nil) full_name = fully_qualified_name(outer_name: outer_name, decl: decl) - klass = context.add_class(RDoc::NormalClass, full_name.to_s, decl.super_class&.name&.to_s || "::Object") + klass = context.add_class(RDoc::NormalClass, full_name.to_s, decl.super_class&.name&.to_s || "::Object", + decl.type_params.map do |type_param| + RDoc::TypeParameter.new(type_param.name.to_s, + type_param.variance, + type_param.unchecked?, + type_param.upper_bound&.name&.to_s) + end + ) klass.add_comment(construct_comment(context: context, comment: comment_string(decl)), context) if decl.comment decl.members.each { |member| parse_member(decl: member, context: context, outer_name: full_name) } end def parse_module_decl(decl:, context:, outer_name: nil) full_name = fully_qualified_name(outer_name: outer_name, decl: _ = decl) - kmodule = context.add_module(RDoc::NormalModule, full_name.to_s) + kmodule = context.add_module(RDoc::NormalModule, full_name.to_s, + decl.type_params.map do |type_param| + RDoc::TypeParameter.new(type_param.name.to_s, + type_param.variance, + type_param.unchecked?, + type_param.upper_bound&.name&.to_s) + end) kmodule.add_comment(construct_comment(context: context, comment: comment_string(decl)), context) if decl.comment decl.members.each { |member| parse_member(decl: member, context: context, outer_name: full_name) } end diff --git a/stdlib/rdoc/0/rdoc.rbs b/stdlib/rdoc/0/rdoc.rbs index 73ec3458d..89f360cff 100644 --- a/stdlib/rdoc/0/rdoc.rbs +++ b/stdlib/rdoc/0/rdoc.rbs @@ -228,7 +228,7 @@ module RDoc # later sees `class Container`. `add_class` automatically upgrades `given_name` # to a class in this case. # - def add_class: (class_types class_type, ::String given_name, ?::String superclass) -> (RDoc::NormalClass | RDoc::SingleClass) + def add_class: (class_types class_type, ::String given_name, ?::String superclass, ?Array[RDoc::TypeParameter]) -> (RDoc::NormalClass | RDoc::SingleClass) # # RDoc statistics collector which prints a summary and report of a project's # documentation totals.