@@ -559,6 +559,14 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
559
559
constraint. ident ,
560
560
path_span,
561
561
Some ( constraint) ,
562
+ )
563
+ . select_bound (
564
+ self ,
565
+ AssocItemQSelf :: Trait ( trait_ref. def_id ( ) ) ,
566
+ assoc_tag,
567
+ constraint. ident ,
568
+ path_span,
569
+ Some ( constraint) ,
562
570
) ?
563
571
} ;
564
572
@@ -806,42 +814,46 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
806
814
} ) =>
807
815
{
808
816
let self_ty = self . lower_ty ( hir_self_ty) ;
809
- let ( item_def_id, bound) = match self . resolve_type_relative_path (
810
- self_ty,
811
- hir_self_ty,
812
- ty:: AssocTag :: Fn ,
813
- segment,
814
- hir_ty. hir_id ,
815
- hir_ty. span ,
816
- None ,
817
- ) {
818
- Ok ( result) => result,
819
- Err ( guar) => return Ty :: new_error ( tcx, guar) ,
820
- } ;
817
+
818
+ // FIXME(unresolved_aliases): Force a resolution here
819
+ todo ! ( )
820
+
821
+ // let (item_def_id, bound) = match self.resolve_type_relative_path(
822
+ // self_ty,
823
+ // hir_self_ty,
824
+ // ty::AssocTag::Fn,
825
+ // segment,
826
+ // hir_ty.hir_id,
827
+ // hir_ty.span,
828
+ // None,
829
+ // ) {
830
+ // Ok(result) => result,
831
+ // Err(guar) => return Ty::new_error(tcx, guar),
832
+ // };
821
833
822
834
// Don't let `T::method` resolve to some `for<'a> <T as Tr<'a>>::method`,
823
835
// which may happen via a higher-ranked where clause or supertrait.
824
836
// This is the same restrictions as associated types; even though we could
825
837
// support it, it just makes things a lot more difficult to support in
826
838
// `resolve_bound_vars`, since we'd need to introduce those as elided
827
839
// bound vars on the where clause too.
828
- if bound. has_bound_vars ( ) {
829
- return Ty :: new_error (
830
- tcx,
831
- self . dcx ( ) . emit_err ( errors:: AssociatedItemTraitUninferredGenericParams {
832
- span : hir_ty. span ,
833
- inferred_sugg : Some ( hir_ty. span . with_hi ( segment. ident . span . lo ( ) ) ) ,
834
- bound : format ! ( "{}::" , tcx. anonymize_bound_vars( bound) . skip_binder( ) ) ,
835
- mpart_sugg : None ,
836
- what : tcx. def_descr ( item_def_id) ,
837
- } ) ,
838
- ) ;
839
- }
840
-
841
- match self . lower_return_type_notation_ty ( bound, item_def_id, hir_ty. span ) {
842
- Ok ( ty) => Ty :: new_alias ( tcx, ty:: Projection , ty) ,
843
- Err ( guar) => Ty :: new_error ( tcx, guar) ,
844
- }
840
+ // if bound.has_bound_vars() {
841
+ // return Ty::new_error(
842
+ // tcx,
843
+ // self.dcx().emit_err(errors::AssociatedItemTraitUninferredGenericParams {
844
+ // span: hir_ty.span,
845
+ // inferred_sugg: Some(hir_ty.span.with_hi(segment.ident.span.lo())),
846
+ // bound: format!("{}::", tcx.anonymize_bound_vars(bound).skip_binder()),
847
+ // mpart_sugg: None,
848
+ // what: tcx.def_descr(item_def_id),
849
+ // }),
850
+ // );
851
+ // }
852
+
853
+ // match self.lower_return_type_notation_ty(bound, item_def_id, hir_ty.span) {
854
+ // Ok(ty) => Ty::new_alias(tcx, ty::Projection, ty),
855
+ // Err(guar) => Ty::new_error(tcx, guar),
856
+ // }
845
857
}
846
858
_ => self . lower_ty ( hir_ty) ,
847
859
}
0 commit comments