Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 93c60f2

Browse files
jam1garnernikomatsakis
authored andcommitted
Fix missing generic parameters from future_prelude_collision lint suggestion
1 parent eb5e0af commit 93c60f2

File tree

1 file changed

+13
-1
lines changed
  • compiler/rustc_typeck/src/check/method

1 file changed

+13
-1
lines changed

compiler/rustc_typeck/src/check/method/mod.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -544,7 +544,19 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
544544
if let probe::PickKind::TraitPick = pick.kind {
545545
if !matches!(tcx.crate_name(pick.item.def_id.krate), sym::std | sym::core) {
546546
tcx.struct_span_lint_hir(FUTURE_PRELUDE_COLLISION, expr_id, span, |lint| {
547-
let trait_name = tcx.def_path_str(pick.item.container.assert_trait());
547+
let trait_def_id = pick.item.container.assert_trait();
548+
let trait_generics = tcx.generics_of(trait_def_id);
549+
let parameter_count = trait_generics.count() - (trait_generics.has_self as usize);
550+
551+
let trait_name = if parameter_count == 0 {
552+
tcx.def_path_str(trait_def_id)
553+
} else {
554+
format!(
555+
"{}<{}>",
556+
tcx.def_path_str(trait_def_id),
557+
std::iter::repeat("_").take(parameter_count).collect::<Vec<_>>().join(", ")
558+
)
559+
};
548560

549561
let mut lint = lint.build(&format!(
550562
"trait-associated function `{}` will become ambiguous in Rust 2021",

0 commit comments

Comments
 (0)