@@ -1770,7 +1770,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
1770
1770
span : Span ,
1771
1771
opt_self_ty : Option < Ty < ' tcx > > ,
1772
1772
item_def_id : DefId ,
1773
- trait_segment : & hir:: PathSegment < ' tcx > ,
1773
+ trait_segment : Option < & hir:: PathSegment < ' tcx > > ,
1774
1774
item_segment : & hir:: PathSegment < ' tcx > ,
1775
1775
) -> Ty < ' tcx > {
1776
1776
match self . lower_qpath_shared (
@@ -1795,7 +1795,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
1795
1795
span : Span ,
1796
1796
opt_self_ty : Option < Ty < ' tcx > > ,
1797
1797
item_def_id : DefId ,
1798
- trait_segment : & hir:: PathSegment < ' tcx > ,
1798
+ trait_segment : Option < & hir:: PathSegment < ' tcx > > ,
1799
1799
item_segment : & hir:: PathSegment < ' tcx > ,
1800
1800
) -> Const < ' tcx > {
1801
1801
match self . lower_qpath_shared (
@@ -1820,7 +1820,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
1820
1820
span : Span ,
1821
1821
opt_self_ty : Option < Ty < ' tcx > > ,
1822
1822
item_def_id : DefId ,
1823
- trait_segment : & hir:: PathSegment < ' tcx > ,
1823
+ trait_segment : Option < & hir:: PathSegment < ' tcx > > ,
1824
1824
item_segment : & hir:: PathSegment < ' tcx > ,
1825
1825
assoc_tag : ty:: AssocTag ,
1826
1826
) -> Result < ( DefId , GenericArgsRef < ' tcx > ) , ErrorGuaranteed > {
@@ -1840,7 +1840,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
1840
1840
debug ! ( ?self_ty) ;
1841
1841
1842
1842
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 ) ;
1844
1844
debug ! ( ?trait_ref) ;
1845
1845
1846
1846
let item_args =
@@ -2196,16 +2196,20 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
2196
2196
}
2197
2197
}
2198
2198
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
+ } ;
2204
2208
self . lower_qpath_ty (
2205
2209
span,
2206
2210
opt_self_ty,
2207
2211
def_id,
2208
- & path . segments [ path . segments . len ( ) - 2 ] ,
2212
+ trait_segment ,
2209
2213
path. segments . last ( ) . unwrap ( ) ,
2210
2214
)
2211
2215
}
@@ -2413,16 +2417,20 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
2413
2417
ty:: Const :: new_unevaluated ( tcx, ty:: UnevaluatedConst :: new ( did, args) )
2414
2418
}
2415
2419
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
+ } ;
2421
2429
self . lower_qpath_const (
2422
2430
span,
2423
2431
opt_self_ty,
2424
2432
did,
2425
- & path . segments [ path . segments . len ( ) - 2 ] ,
2433
+ trait_segment ,
2426
2434
path. segments . last ( ) . unwrap ( ) ,
2427
2435
)
2428
2436
}
0 commit comments