Do not suggest same trait over again

This commit is contained in:
Michael Goulet 2022-07-11 05:21:41 +00:00
parent 0c39762dd6
commit 88f2140d87
2 changed files with 3 additions and 7 deletions

View File

@ -20,8 +20,8 @@ use rustc_hir::def_id::DefId;
use rustc_infer::infer::{self, InferOk}; use rustc_infer::infer::{self, InferOk};
use rustc_middle::ty::subst::Subst; use rustc_middle::ty::subst::Subst;
use rustc_middle::ty::subst::{InternalSubsts, SubstsRef}; use rustc_middle::ty::subst::{InternalSubsts, SubstsRef};
use rustc_middle::ty::GenericParamDefKind;
use rustc_middle::ty::{self, ToPredicate, Ty, TypeVisitable}; use rustc_middle::ty::{self, ToPredicate, Ty, TypeVisitable};
use rustc_middle::ty::{DefIdTree, GenericParamDefKind};
use rustc_span::symbol::Ident; use rustc_span::symbol::Ident;
use rustc_span::Span; use rustc_span::Span;
use rustc_trait_selection::traits; use rustc_trait_selection::traits;
@ -221,7 +221,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
} }
// We probe again, taking all traits into account (not only those in scope). // We probe again, taking all traits into account (not only those in scope).
let candidates = match self.lookup_probe( let mut candidates = match self.lookup_probe(
span, span,
segment.ident, segment.ident,
self_ty, self_ty,
@ -243,6 +243,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
.collect(), .collect(),
_ => Vec::new(), _ => Vec::new(),
}; };
candidates.retain(|candidate| *candidate != self.tcx.parent(result.callee.def_id));
return Err(IllegalSizedBound(candidates, needs_mut, span)); return Err(IllegalSizedBound(candidates, needs_mut, span));
} }

View File

@ -6,11 +6,6 @@ LL | fn wait(&self) where Self: Sized;
... ...
LL | arg.wait(); LL | arg.wait();
| ^^^^ | ^^^^
|
help: another candidate was found in the following trait, perhaps add a `use` for it:
|
LL | use private::Future;
|
error: aborting due to previous error error: aborting due to previous error