1
Fork 0

Move diagnostics code out of the critical path

This commit is contained in:
Esteban Küber 2019-10-10 19:34:56 -07:00
parent 898f36c83c
commit 5bb0a03fa7

View file

@ -213,12 +213,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
segment, segment,
); );
if result.illegal_sized_bound {
let mut needs_mut = false; let mut needs_mut = false;
if let ty::Ref(region, t_type, mutability) = self_ty.kind { if let ty::Ref(region, t_type, mutability) = self_ty.kind {
let trait_type = self.tcx.mk_ref(region, ty::TypeAndMut { let trait_type = self.tcx.mk_ref(region, ty::TypeAndMut {
ty: t_type, ty: t_type,
mutbl: mutability.invert(), mutbl: mutability.invert(),
}); });
// We probe again to see if there might be a borrow mutability discrepancy.
match self.lookup_probe( match self.lookup_probe(
span, span,
segment.ident, segment.ident,
@ -233,7 +235,6 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
} }
} }
if result.illegal_sized_bound {
// 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 candidates = match self.lookup_probe(
span, span,