@@ -1564,10 +1564,10 @@ pub enum ProjectionElem<V, T> {
1564
1564
/// ```
1565
1565
ConstantIndex {
1566
1566
/// index or -index (in Python terms), depending on from_end
1567
- offset : u32 ,
1567
+ offset : u64 ,
1568
1568
/// The thing being indexed must be at least this long. For arrays this
1569
1569
/// is always the exact length.
1570
- min_length : u32 ,
1570
+ min_length : u64 ,
1571
1571
/// Counting backwards from end? This is always false when indexing an
1572
1572
/// array.
1573
1573
from_end : bool ,
@@ -1578,8 +1578,8 @@ pub enum ProjectionElem<V, T> {
1578
1578
/// If `from_end` is true `slice[from..slice.len() - to]`.
1579
1579
/// Otherwise `array[from..to]`.
1580
1580
Subslice {
1581
- from : u32 ,
1582
- to : u32 ,
1581
+ from : u64 ,
1582
+ to : u64 ,
1583
1583
/// Whether `to` counts from the start or end of the array/slice.
1584
1584
/// For `PlaceElem`s this is `true` if and only if the base is a slice.
1585
1585
/// For `ProjectionKind`, this can also be `true` for arrays.
@@ -1616,7 +1616,7 @@ pub type PlaceElem<'tcx> = ProjectionElem<Local, Ty<'tcx>>;
1616
1616
1617
1617
// At least on 64 bit systems, `PlaceElem` should not be larger than two pointers.
1618
1618
#[ cfg( target_arch = "x86_64" ) ]
1619
- static_assert_size ! ( PlaceElem <' _>, 16 ) ;
1619
+ static_assert_size ! ( PlaceElem <' _>, 24 ) ;
1620
1620
1621
1621
/// Alias for projections as they appear in `UserTypeProjection`, where we
1622
1622
/// need neither the `V` parameter for `Index` nor the `T` for `Field`.
@@ -2330,7 +2330,7 @@ impl<'tcx> UserTypeProjections {
2330
2330
self . map_projections ( |pat_ty_proj| pat_ty_proj. index ( ) )
2331
2331
}
2332
2332
2333
- pub fn subslice ( self , from : u32 , to : u32 ) -> Self {
2333
+ pub fn subslice ( self , from : u64 , to : u64 ) -> Self {
2334
2334
self . map_projections ( |pat_ty_proj| pat_ty_proj. subslice ( from, to) )
2335
2335
}
2336
2336
@@ -2376,7 +2376,7 @@ impl UserTypeProjection {
2376
2376
self
2377
2377
}
2378
2378
2379
- pub ( crate ) fn subslice ( mut self , from : u32 , to : u32 ) -> Self {
2379
+ pub ( crate ) fn subslice ( mut self , from : u64 , to : u64 ) -> Self {
2380
2380
self . projs . push ( ProjectionElem :: Subslice { from, to, from_end : true } ) ;
2381
2381
self
2382
2382
}
0 commit comments