Skip to content

Commit a97aed7

Browse files
committed
Remove unnecessary logic when finding simpilar impl candidates.
1 parent 83fe48d commit a97aed7

File tree

1 file changed

+3
-31
lines changed

1 file changed

+3
-31
lines changed

src/librustc/traits/error_reporting.rs

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -359,34 +359,9 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
359359
}
360360

361361
fn report_similar_impl_candidates(&self,
362-
trait_ref: ty::PolyTraitRef<'tcx>,
362+
impl_candidates: Vec<ty::TraitRef<'tcx>>,
363363
err: &mut DiagnosticBuilder)
364364
{
365-
let simp = fast_reject::simplify_type(self.tcx,
366-
trait_ref.skip_binder().self_ty(),
367-
true);
368-
let mut impl_candidates = Vec::new();
369-
let trait_def = self.tcx.lookup_trait_def(trait_ref.def_id());
370-
371-
match simp {
372-
Some(simp) => trait_def.for_each_impl(self.tcx, |def_id| {
373-
let imp = self.tcx.impl_trait_ref(def_id).unwrap();
374-
let imp_simp = fast_reject::simplify_type(self.tcx,
375-
imp.self_ty(),
376-
true);
377-
if let Some(imp_simp) = imp_simp {
378-
if simp != imp_simp {
379-
return;
380-
}
381-
}
382-
impl_candidates.push(imp);
383-
}),
384-
None => trait_def.for_each_impl(self.tcx, |def_id| {
385-
impl_candidates.push(
386-
self.tcx.impl_trait_ref(def_id).unwrap());
387-
})
388-
};
389-
390365
if impl_candidates.is_empty() {
391366
return;
392367
}
@@ -574,11 +549,8 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
574549
} else {
575550
// If we can't show anything useful, try to find
576551
// similar impls.
577-
let impl_candidates =
578-
self.find_similar_impl_candidates(trait_ref);
579-
if impl_candidates.len() > 0 {
580-
self.report_similar_impl_candidates(trait_ref, &mut err);
581-
}
552+
let impl_candidates = self.find_similar_impl_candidates(trait_ref);
553+
self.report_similar_impl_candidates(impl_candidates, &mut err);
582554
}
583555
err
584556
}

0 commit comments

Comments
 (0)