@@ -380,7 +380,7 @@ pub(crate) fn lookup_method(
380
380
traits_in_scope : & FxHashSet < TraitId > ,
381
381
visible_from_module : Option < ModuleId > ,
382
382
name : & Name ,
383
- ) -> Option < ( Ty , FunctionId ) > {
383
+ ) -> Option < ( Canonical < Ty > , FunctionId ) > {
384
384
iterate_method_candidates (
385
385
ty,
386
386
db,
@@ -421,7 +421,7 @@ pub fn iterate_method_candidates<T>(
421
421
visible_from_module : Option < ModuleId > ,
422
422
name : Option < & Name > ,
423
423
mode : LookupMode ,
424
- mut callback : impl FnMut ( & Ty , AssocItemId ) -> Option < T > ,
424
+ mut callback : impl FnMut ( & Canonical < Ty > , AssocItemId ) -> Option < T > ,
425
425
) -> Option < T > {
426
426
let mut slot = None ;
427
427
iterate_method_candidates_dyn (
@@ -454,7 +454,7 @@ pub fn iterate_method_candidates_dyn(
454
454
visible_from_module : Option < ModuleId > ,
455
455
name : Option < & Name > ,
456
456
mode : LookupMode ,
457
- callback : & mut dyn FnMut ( & Ty , AssocItemId ) -> ControlFlow < ( ) > ,
457
+ callback : & mut dyn FnMut ( & Canonical < Ty > , AssocItemId ) -> ControlFlow < ( ) > ,
458
458
) -> ControlFlow < ( ) > {
459
459
match mode {
460
460
LookupMode :: MethodCall => {
@@ -520,7 +520,7 @@ fn iterate_method_candidates_with_autoref(
520
520
traits_in_scope : & FxHashSet < TraitId > ,
521
521
visible_from_module : Option < ModuleId > ,
522
522
name : Option < & Name > ,
523
- mut callback : & mut dyn FnMut ( & Ty , AssocItemId ) -> ControlFlow < ( ) > ,
523
+ mut callback : & mut dyn FnMut ( & Canonical < Ty > , AssocItemId ) -> ControlFlow < ( ) > ,
524
524
) -> ControlFlow < ( ) > {
525
525
iterate_method_candidates_by_receiver (
526
526
& deref_chain[ 0 ] ,
@@ -580,7 +580,7 @@ fn iterate_method_candidates_by_receiver(
580
580
traits_in_scope : & FxHashSet < TraitId > ,
581
581
visible_from_module : Option < ModuleId > ,
582
582
name : Option < & Name > ,
583
- mut callback : & mut dyn FnMut ( & Ty , AssocItemId ) -> ControlFlow < ( ) > ,
583
+ mut callback : & mut dyn FnMut ( & Canonical < Ty > , AssocItemId ) -> ControlFlow < ( ) > ,
584
584
) -> ControlFlow < ( ) > {
585
585
// We're looking for methods with *receiver* type receiver_ty. These could
586
586
// be found in any of the derefs of receiver_ty, so we have to go through
@@ -622,7 +622,7 @@ fn iterate_method_candidates_for_self_ty(
622
622
traits_in_scope : & FxHashSet < TraitId > ,
623
623
visible_from_module : Option < ModuleId > ,
624
624
name : Option < & Name > ,
625
- mut callback : & mut dyn FnMut ( & Ty , AssocItemId ) -> ControlFlow < ( ) > ,
625
+ mut callback : & mut dyn FnMut ( & Canonical < Ty > , AssocItemId ) -> ControlFlow < ( ) > ,
626
626
) -> ControlFlow < ( ) > {
627
627
iterate_inherent_methods (
628
628
self_ty,
@@ -645,7 +645,7 @@ fn iterate_trait_method_candidates(
645
645
traits_in_scope : & FxHashSet < TraitId > ,
646
646
name : Option < & Name > ,
647
647
receiver_ty : Option < & Canonical < Ty > > ,
648
- callback : & mut dyn FnMut ( & Ty , AssocItemId ) -> ControlFlow < ( ) > ,
648
+ callback : & mut dyn FnMut ( & Canonical < Ty > , AssocItemId ) -> ControlFlow < ( ) > ,
649
649
) -> ControlFlow < ( ) > {
650
650
let receiver_is_array = matches ! ( self_ty. value. kind( & Interner ) , chalk_ir:: TyKind :: Array ( ..) ) ;
651
651
// if ty is `dyn Trait`, the trait doesn't need to be in scope
@@ -697,7 +697,7 @@ fn iterate_trait_method_candidates(
697
697
}
698
698
known_implemented = true ;
699
699
// FIXME: we shouldn't be ignoring the binders here
700
- callback ( & self_ty. value , * item) ?
700
+ callback ( & self_ty, * item) ?
701
701
}
702
702
}
703
703
ControlFlow :: Continue ( ( ) )
@@ -738,7 +738,7 @@ fn iterate_inherent_methods(
738
738
receiver_ty : Option < & Canonical < Ty > > ,
739
739
krate : CrateId ,
740
740
visible_from_module : Option < ModuleId > ,
741
- callback : & mut dyn FnMut ( & Ty , AssocItemId ) -> ControlFlow < ( ) > ,
741
+ callback : & mut dyn FnMut ( & Canonical < Ty > , AssocItemId ) -> ControlFlow < ( ) > ,
742
742
) -> ControlFlow < ( ) > {
743
743
let def_crates = match def_crates ( db, & self_ty. value , krate) {
744
744
Some ( k) => k,
@@ -773,7 +773,7 @@ fn iterate_inherent_methods(
773
773
cov_mark:: hit!( impl_self_type_match_without_receiver) ;
774
774
continue ;
775
775
}
776
- let receiver_ty = receiver_ty. map ( |x| & x . value ) . unwrap_or ( & self_ty. value ) ;
776
+ let receiver_ty = receiver_ty. unwrap_or ( & self_ty) ;
777
777
callback ( receiver_ty, item) ?;
778
778
}
779
779
}
0 commit comments