From 5cd8a2addaf4aae55c52fb9af5fdb36243295070 Mon Sep 17 00:00:00 2001 From: Michael Woerister Date: Thu, 10 Mar 2022 16:19:33 +0100 Subject: debuginfo: Fix bug in type name generation for dyn types with associated types but no other generic arguments. --- compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'compiler/rustc_codegen_ssa/src/debuginfo') diff --git a/compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs b/compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs index 62a297937d4..93df1ec9aac 100644 --- a/compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs +++ b/compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs @@ -212,13 +212,18 @@ fn push_debuginfo_type_name<'tcx>( if projection_bounds.len() != 0 { if principal_has_generic_params { // push_generic_params_internal() above added a `>` but we actually - // want to add more items to that list, so remove that again. + // want to add more items to that list, so remove that again... pop_close_angle_bracket(output); + // .. and add a comma to separate the regular generic args from the + // associated types. + push_arg_separator(cpp_like_debuginfo, output); + } else { + // push_generic_params_internal() did not add `<...>`, so we open + // angle brackets here. + output.push('<'); } for (item_def_id, ty) in projection_bounds { - push_arg_separator(cpp_like_debuginfo, output); - if cpp_like_debuginfo { output.push_str("assoc$<"); push_item_name(tcx, item_def_id, false, output); @@ -230,8 +235,10 @@ fn push_debuginfo_type_name<'tcx>( output.push('='); push_debuginfo_type_name(tcx, ty, true, output, visited); } + push_arg_separator(cpp_like_debuginfo, output); } + pop_arg_separator(output); push_close_angle_bracket(cpp_like_debuginfo, output); } -- cgit 1.4.1-3-g733a5