@@ -81,7 +81,6 @@ obtained the type `Foo`, we would never match this method.
81
81
82
82
83
83
use middle:: subst:: Subst ;
84
- use middle:: resolve;
85
84
use middle:: ty:: * ;
86
85
use middle:: ty;
87
86
use middle:: typeck:: astconv:: AstConv ;
@@ -396,28 +395,10 @@ impl<'a> LookupContext<'a> {
396
395
// If the method being called is associated with a trait, then
397
396
// find all the impls of that trait. Each of those are
398
397
// candidates.
399
- let trait_map: & resolve:: TraitMap = & self . fcx . ccx . trait_map ;
400
- let opt_applicable_traits = trait_map. find ( & self . expr . id ) ;
401
- for applicable_traits in opt_applicable_traits. iter ( ) {
402
- let applicable_traits = applicable_traits. borrow ( ) ;
403
- for trait_did in applicable_traits. get ( ) . iter ( ) {
404
- ty:: populate_implementations_for_trait_if_necessary (
405
- self . tcx ( ) ,
406
- * trait_did) ;
407
-
408
- // Look for explicit implementations.
409
- let trait_impls = self . tcx ( ) . trait_impls . borrow ( ) ;
410
- let opt_impl_infos = trait_impls. get ( ) . find ( trait_did) ;
411
- for impl_infos in opt_impl_infos. iter ( ) {
412
- let impl_infos = impl_infos. borrow ( ) ;
413
- for impl_info in impl_infos. get ( ) . iter ( ) {
414
- let mut extension_candidates =
415
- self . extension_candidates . borrow_mut ( ) ;
416
- self . push_candidates_from_impl (
417
- extension_candidates. get ( ) , * impl_info) ;
418
-
419
- }
420
- }
398
+ let opt_applicable_traits = self . fcx . ccx . trait_map . find ( & self . expr . id ) ;
399
+ for applicable_traits in opt_applicable_traits. move_iter ( ) {
400
+ for trait_did in applicable_traits. iter ( ) {
401
+ self . push_extension_candidate ( * trait_did) ;
421
402
}
422
403
}
423
404
}
0 commit comments