@@ -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