From 42051ceb162b8e69bcc9df580974ccff8f22f3c8 Mon Sep 17 00:00:00 2001 From: Michael Woerister Date: Tue, 16 May 2017 17:12:00 +0200 Subject: [PATCH] Use tcx.type_of(impl) instead of TraitRef::self_ty() for getting Self in relevant_impls_for(). --- src/librustc/ty/trait_def.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/librustc/ty/trait_def.rs b/src/librustc/ty/trait_def.rs index eb60f9d10107..865297c7ecbf 100644 --- a/src/librustc/ty/trait_def.rs +++ b/src/librustc/ty/trait_def.rs @@ -170,12 +170,12 @@ pub(super) fn trait_impls_of_provider<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, .map(|&node_id| tcx.hir.local_def_id(node_id)); for impl_def_id in local_impls.chain(remote_impls.into_iter()) { - let impl_trait_ref = tcx.impl_trait_ref(impl_def_id).unwrap(); - if impl_def_id.is_local() && impl_trait_ref.references_error() { + let impl_self_ty = tcx.type_of(impl_def_id); + if impl_def_id.is_local() && impl_self_ty.references_error() { continue } - if fast_reject::simplify_type(tcx, impl_trait_ref.self_ty(), false).is_some() { + if fast_reject::simplify_type(tcx, impl_self_ty, false).is_some() { non_blanket_impls.push(impl_def_id); } else { blanket_impls.push(impl_def_id); @@ -201,9 +201,9 @@ pub(super) fn relevant_trait_impls_provider<'a, 'tcx>( .iter() .cloned() .filter(|&impl_def_id| { - let impl_trait_ref = tcx.impl_trait_ref(impl_def_id).unwrap(); + let impl_self_ty = tcx.type_of(impl_def_id); let impl_simple_self_ty = fast_reject::simplify_type(tcx, - impl_trait_ref.self_ty(), + impl_self_ty, false).unwrap(); impl_simple_self_ty == self_ty })