@@ -1564,10 +1564,10 @@ pub enum ProjectionElem<V, T> {
15641564 /// ```
15651565 ConstantIndex {
15661566 /// index or -index (in Python terms), depending on from_end
1567- offset : u32 ,
1567+ offset : u64 ,
15681568 /// The thing being indexed must be at least this long. For arrays this
15691569 /// is always the exact length.
1570- min_length : u32 ,
1570+ min_length : u64 ,
15711571 /// Counting backwards from end? This is always false when indexing an
15721572 /// array.
15731573 from_end : bool ,
@@ -1578,8 +1578,8 @@ pub enum ProjectionElem<V, T> {
15781578 /// If `from_end` is true `slice[from..slice.len() - to]`.
15791579 /// Otherwise `array[from..to]`.
15801580 Subslice {
1581- from : u32 ,
1582- to : u32 ,
1581+ from : u64 ,
1582+ to : u64 ,
15831583 /// Whether `to` counts from the start or end of the array/slice.
15841584 /// For `PlaceElem`s this is `true` if and only if the base is a slice.
15851585 /// For `ProjectionKind`, this can also be `true` for arrays.
@@ -1616,7 +1616,7 @@ pub type PlaceElem<'tcx> = ProjectionElem<Local, Ty<'tcx>>;
16161616
16171617// At least on 64 bit systems, `PlaceElem` should not be larger than two pointers.
16181618#[ cfg( target_arch = "x86_64" ) ]
1619- static_assert_size ! ( PlaceElem <' _>, 16 ) ;
1619+ static_assert_size ! ( PlaceElem <' _>, 24 ) ;
16201620
16211621/// Alias for projections as they appear in `UserTypeProjection`, where we
16221622/// need neither the `V` parameter for `Index` nor the `T` for `Field`.
@@ -2330,7 +2330,7 @@ impl<'tcx> UserTypeProjections {
23302330 self . map_projections ( |pat_ty_proj| pat_ty_proj. index ( ) )
23312331 }
23322332
2333- pub fn subslice ( self , from : u32 , to : u32 ) -> Self {
2333+ pub fn subslice ( self , from : u64 , to : u64 ) -> Self {
23342334 self . map_projections ( |pat_ty_proj| pat_ty_proj. subslice ( from, to) )
23352335 }
23362336
@@ -2376,7 +2376,7 @@ impl UserTypeProjection {
23762376 self
23772377 }
23782378
2379- pub ( crate ) fn subslice ( mut self , from : u32 , to : u32 ) -> Self {
2379+ pub ( crate ) fn subslice ( mut self , from : u64 , to : u64 ) -> Self {
23802380 self . projs . push ( ProjectionElem :: Subslice { from, to, from_end : true } ) ;
23812381 self
23822382 }
0 commit comments