diff options
| author | Michael Woerister <michaelwoerister@posteo> | 2022-03-10 16:19:33 +0100 |
|---|---|---|
| committer | Michael Woerister <michaelwoerister@posteo> | 2022-03-10 17:04:05 +0100 |
| commit | 5cd8a2addaf4aae55c52fb9af5fdb36243295070 (patch) | |
| tree | 1dcac222d5e2070f97744a1d579f8a358028e926 /compiler/rustc_codegen_ssa/src/debuginfo | |
| parent | 282778aee26166754315815552bae454fc968960 (diff) | |
| download | rust-5cd8a2addaf4aae55c52fb9af5fdb36243295070.tar.gz rust-5cd8a2addaf4aae55c52fb9af5fdb36243295070.zip | |
debuginfo: Fix bug in type name generation for dyn types with associated types but no other generic arguments.
Diffstat (limited to 'compiler/rustc_codegen_ssa/src/debuginfo')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs | 13 |
1 files changed, 10 insertions, 3 deletions
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); } |
