Skip to content

Commit

Permalink
Refactor candidate selection
Browse files Browse the repository at this point in the history
  • Loading branch information
fhahn committed Jan 2, 2016
1 parent 25e4389 commit a8d6070
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions src/librustc/middle/traits/error_reporting.rs
Expand Up @@ -240,23 +240,24 @@ pub fn report_selection_error<'a, 'tcx>(infcx: &InferCtxt<'a, 'tcx>,
let mut impl_candidates = Vec::new();
let trait_def = infcx.tcx.lookup_trait_def(trait_ref.def_id());

trait_def.for_each_impl(infcx.tcx, |def_id| {
let imp = infcx.tcx.impl_trait_ref(def_id).unwrap();
if let Some(simp) = simp {
match simp {
Some(simp) => trait_def.for_each_impl(infcx.tcx, |def_id| {
let imp = infcx.tcx.impl_trait_ref(def_id).unwrap();
let imp_simp = fast_reject::simplify_type(infcx.tcx,
imp.self_ty(),
true);
if let Some(imp_simp) = imp_simp {
if simp == imp_simp {
impl_candidates.push(imp);
if simp != imp_simp {
return;
}
} else {
impl_candidates.push(imp);
}
} else {
impl_candidates.push(imp);
}
});
}),
None => trait_def.for_each_impl(infcx.tcx, |def_id| {
impl_candidates.push(
infcx.tcx.impl_trait_ref(def_id).unwrap());
})
};

if impl_candidates.len() > 0 {
err.fileline_help(
Expand All @@ -266,7 +267,7 @@ pub fn report_selection_error<'a, 'tcx>(infcx: &InferCtxt<'a, 'tcx>,
let end = cmp::min(4, impl_candidates.len());
for candidate in &impl_candidates[0..end] {
err.fileline_help(obligation.cause.span,
candidate);
&format!(" {:?}", candidate));
}
if impl_candidates.len() > 4 {
err.fileline_help(obligation.cause.span,
Expand Down

0 comments on commit a8d6070

Please sign in to comment.