diff options
| author | Michael Woerister <michaelwoerister@posteo.net> | 2017-05-16 17:12:00 +0200 |
|---|---|---|
| committer | Michael Woerister <michaelwoerister@posteo.net> | 2017-05-16 17:12:11 +0200 |
| commit | 42051ceb162b8e69bcc9df580974ccff8f22f3c8 (patch) | |
| tree | f9f5d72fa75c43e80c0f92dcc83b4b1bf90e6781 | |
| parent | 0a77a588578b69497caac7a507f875c8f258c9aa (diff) | |
| download | rust-42051ceb162b8e69bcc9df580974ccff8f22f3c8.tar.gz rust-42051ceb162b8e69bcc9df580974ccff8f22f3c8.zip | |
Use tcx.type_of(impl) instead of TraitRef::self_ty() for getting Self in relevant_impls_for().
| -rw-r--r-- | src/librustc/ty/trait_def.rs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/librustc/ty/trait_def.rs b/src/librustc/ty/trait_def.rs index eb60f9d1010..865297c7ecb 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 }) |
