Add print_trait_sugared
This commit is contained in:
parent
8a7b2035f8
commit
b97ff8eb16
17 changed files with 91 additions and 56 deletions
|
@ -184,14 +184,7 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> {
|
|||
flags.push((sym::cause, Some("MainFunctionType".to_string())));
|
||||
}
|
||||
|
||||
if let Some(kind) = self.tcx.fn_trait_kind_from_def_id(trait_ref.def_id)
|
||||
&& let ty::Tuple(args) = trait_ref.args.type_at(1).kind()
|
||||
{
|
||||
let args = args.iter().map(|ty| ty.to_string()).collect::<Vec<_>>().join(", ");
|
||||
flags.push((sym::Trait, Some(format!("{}({args})", kind.as_str()))));
|
||||
} else {
|
||||
flags.push((sym::Trait, Some(trait_ref.print_only_trait_path().to_string())));
|
||||
}
|
||||
flags.push((sym::Trait, Some(trait_ref.print_trait_sugared().to_string())));
|
||||
|
||||
// Add all types without trimmed paths or visible paths, ensuring they end up with
|
||||
// their "canonical" def path.
|
||||
|
|
|
@ -622,7 +622,7 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> {
|
|||
span.shrink_to_hi(),
|
||||
format!(
|
||||
"the trait `{}` is implemented for fn pointer `{}`, try casting using `as`",
|
||||
cand.print_only_trait_path(),
|
||||
cand.print_trait_sugared(),
|
||||
cand.self_ty(),
|
||||
),
|
||||
format!(" as {}", cand.self_ty()),
|
||||
|
@ -1785,7 +1785,7 @@ impl<'tcx> InferCtxtPrivExt<'tcx> for TypeErrCtxt<'_, 'tcx> {
|
|||
ct_op: |ct| ct.normalize(self.tcx, ty::ParamEnv::empty()),
|
||||
});
|
||||
err.highlighted_help(vec![
|
||||
(format!("the trait `{}` ", cand.print_only_trait_path()), Style::NoStyle),
|
||||
(format!("the trait `{}` ", cand.print_trait_sugared()), Style::NoStyle),
|
||||
("is".to_string(), Style::Highlight),
|
||||
(" implemented for `".to_string(), Style::NoStyle),
|
||||
(cand.self_ty().to_string(), Style::Highlight),
|
||||
|
@ -1821,7 +1821,7 @@ impl<'tcx> InferCtxtPrivExt<'tcx> for TypeErrCtxt<'_, 'tcx> {
|
|||
_ => (" implemented for `", ""),
|
||||
};
|
||||
err.highlighted_help(vec![
|
||||
(format!("the trait `{}` ", cand.print_only_trait_path()), Style::NoStyle),
|
||||
(format!("the trait `{}` ", cand.print_trait_sugared()), Style::NoStyle),
|
||||
("is".to_string(), Style::Highlight),
|
||||
(desc.to_string(), Style::NoStyle),
|
||||
(cand.self_ty().to_string(), Style::Highlight),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue