@@ -359,34 +359,9 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
359
359
}
360
360
361
361
fn report_similar_impl_candidates ( & self ,
362
- trait_ref : ty:: PolyTraitRef < ' tcx > ,
362
+ impl_candidates : Vec < ty:: TraitRef < ' tcx > > ,
363
363
err : & mut DiagnosticBuilder )
364
364
{
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
-
390
365
if impl_candidates. is_empty ( ) {
391
366
return ;
392
367
}
@@ -574,11 +549,8 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
574
549
} else {
575
550
// If we can't show anything useful, try to find
576
551
// 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) ;
582
554
}
583
555
err
584
556
}
0 commit comments