1
Fork 0

debuginfo: Fix bug in type name generation for dyn types with associated types but no other generic arguments.

This commit is contained in:
Michael Woerister 2022-03-10 16:19:33 +01:00
parent 282778aee2
commit 5cd8a2adda
2 changed files with 26 additions and 3 deletions

View file

@ -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);
}