@@ -1770,7 +1770,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
17701770 span : Span ,
17711771 opt_self_ty : Option < Ty < ' tcx > > ,
17721772 item_def_id : DefId ,
1773- trait_segment : & hir:: PathSegment < ' tcx > ,
1773+ trait_segment : Option < & hir:: PathSegment < ' tcx > > ,
17741774 item_segment : & hir:: PathSegment < ' tcx > ,
17751775 ) -> Ty < ' tcx > {
17761776 match self . lower_qpath_shared (
@@ -1795,7 +1795,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
17951795 span : Span ,
17961796 opt_self_ty : Option < Ty < ' tcx > > ,
17971797 item_def_id : DefId ,
1798- trait_segment : & hir:: PathSegment < ' tcx > ,
1798+ trait_segment : Option < & hir:: PathSegment < ' tcx > > ,
17991799 item_segment : & hir:: PathSegment < ' tcx > ,
18001800 ) -> Const < ' tcx > {
18011801 match self . lower_qpath_shared (
@@ -1820,7 +1820,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
18201820 span : Span ,
18211821 opt_self_ty : Option < Ty < ' tcx > > ,
18221822 item_def_id : DefId ,
1823- trait_segment : & hir:: PathSegment < ' tcx > ,
1823+ trait_segment : Option < & hir:: PathSegment < ' tcx > > ,
18241824 item_segment : & hir:: PathSegment < ' tcx > ,
18251825 assoc_tag : ty:: AssocTag ,
18261826 ) -> Result < ( DefId , GenericArgsRef < ' tcx > ) , ErrorGuaranteed > {
@@ -1840,7 +1840,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
18401840 debug ! ( ?self_ty) ;
18411841
18421842 let trait_ref =
1843- self . lower_mono_trait_ref ( span, trait_def_id, self_ty, trait_segment, false ) ;
1843+ self . lower_mono_trait_ref ( span, trait_def_id, self_ty, trait_segment. unwrap ( ) , false ) ;
18441844 debug ! ( ?trait_ref) ;
18451845
18461846 let item_args =
@@ -2196,16 +2196,20 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
21962196 }
21972197 }
21982198 Res :: Def ( DefKind :: AssocTy , def_id) => {
2199- debug_assert ! ( path. segments. len( ) >= 2 ) ;
2200- let _ = self . prohibit_generic_args (
2201- path. segments [ ..path. segments . len ( ) - 2 ] . iter ( ) ,
2202- GenericsArgsErrExtend :: None ,
2203- ) ;
2199+ let trait_segment = if path. segments . len ( ) >= 2 {
2200+ let _ = self . prohibit_generic_args (
2201+ path. segments [ ..path. segments . len ( ) - 2 ] . iter ( ) ,
2202+ GenericsArgsErrExtend :: None ,
2203+ ) ;
2204+ Some ( & path. segments [ path. segments . len ( ) - 2 ] )
2205+ } else {
2206+ None
2207+ } ;
22042208 self . lower_qpath_ty (
22052209 span,
22062210 opt_self_ty,
22072211 def_id,
2208- & path . segments [ path . segments . len ( ) - 2 ] ,
2212+ trait_segment ,
22092213 path. segments . last ( ) . unwrap ( ) ,
22102214 )
22112215 }
@@ -2413,16 +2417,20 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
24132417 ty:: Const :: new_unevaluated ( tcx, ty:: UnevaluatedConst :: new ( did, args) )
24142418 }
24152419 Res :: Def ( DefKind :: AssocConst , did) => {
2416- debug_assert ! ( path. segments. len( ) >= 2 ) ;
2417- let _ = self . prohibit_generic_args (
2418- path. segments [ ..path. segments . len ( ) - 2 ] . iter ( ) ,
2419- GenericsArgsErrExtend :: None ,
2420- ) ;
2420+ let trait_segment = if path. segments . len ( ) >= 2 {
2421+ let _ = self . prohibit_generic_args (
2422+ path. segments [ ..path. segments . len ( ) - 2 ] . iter ( ) ,
2423+ GenericsArgsErrExtend :: None ,
2424+ ) ;
2425+ Some ( & path. segments [ path. segments . len ( ) - 2 ] )
2426+ } else {
2427+ None
2428+ } ;
24212429 self . lower_qpath_const (
24222430 span,
24232431 opt_self_ty,
24242432 did,
2425- & path . segments [ path . segments . len ( ) - 2 ] ,
2433+ trait_segment ,
24262434 path. segments . last ( ) . unwrap ( ) ,
24272435 )
24282436 }
0 commit comments