@@ -19,7 +19,6 @@ use std::cmp;
1919use  std:: fmt; 
2020use  std:: i128; 
2121use  std:: mem; 
22- use  std:: ops:: RangeInclusive ; 
2322
2423use  ich:: StableHashingContext ; 
2524use  rustc_data_structures:: stable_hasher:: { HashStable ,  StableHasher , 
@@ -492,7 +491,7 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
492491            ty:: TyFloat ( FloatTy :: F64 )  => scalar ( F64 ) , 
493492            ty:: TyFnPtr ( _)  => { 
494493                let  mut  ptr = scalar_unit ( Pointer ) ; 
495-                 ptr. valid_range . start  = 1 ; 
494+                 ptr. valid_range  = 1 ..= * ptr . valid_range . end ( ) ; 
496495                tcx. intern_layout ( LayoutDetails :: scalar ( self ,  ptr) ) 
497496            } 
498497
@@ -506,7 +505,7 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
506505            ty:: TyRawPtr ( ty:: TypeAndMut  {  ty :  pointee,  .. } )  => { 
507506                let  mut  data_ptr = scalar_unit ( Pointer ) ; 
508507                if  !ty. is_unsafe_ptr ( )  { 
509-                     data_ptr. valid_range . start  = 1 ; 
508+                     data_ptr. valid_range  = 1 ..= * data_ptr . valid_range . end ( ) ; 
510509                } 
511510
512511                let  pointee = tcx. normalize_erasing_regions ( param_env,  pointee) ; 
@@ -524,7 +523,7 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
524523                    } 
525524                    ty:: TyDynamic ( ..)  => { 
526525                        let  mut  vtable = scalar_unit ( Pointer ) ; 
527-                         vtable. valid_range . start  = 1 ; 
526+                         vtable. valid_range  = 1 ..= * vtable . valid_range . end ( ) ; 
528527                        vtable
529528                    } 
530529                    _ => return  Err ( LayoutError :: Unknown ( unsized_part) ) 
@@ -751,8 +750,8 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
751750                        match  st. abi  { 
752751                            Abi :: Scalar ( ref  mut  scalar)  |
753752                            Abi :: ScalarPair ( ref  mut  scalar,  _)  => { 
754-                                 if  scalar. valid_range . start  == 0  { 
755-                                     scalar. valid_range . start  = 1 ; 
753+                                 if  * scalar. valid_range . start ( )  == 0  { 
754+                                     scalar. valid_range  = 1 ..= * scalar . valid_range . end ( ) ; 
756755                                } 
757756                            } 
758757                            _ => { } 
@@ -788,18 +787,15 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
788787                                } 
789788                            } 
790789                        } 
791-                         if  niche_variants. start  > v { 
792-                             niche_variants. start  = v; 
793-                         } 
794-                         niche_variants. end  = v; 
790+                         niche_variants = * niche_variants. start ( ) . min ( & v) ..=v; 
795791                    } 
796792
797-                     if  niche_variants. start  > niche_variants. end  { 
793+                     if  niche_variants. start ( )  > niche_variants. end ( )  { 
798794                        dataful_variant = None ; 
799795                    } 
800796
801797                    if  let  Some ( i)  = dataful_variant { 
802-                         let  count = ( niche_variants. end  - niche_variants. start  + 1 )  as  u128 ; 
798+                         let  count = ( niche_variants. end ( )  - niche_variants. start ( )  + 1 )  as  u128 ; 
803799                        for  ( field_index,  & field)  in  variants[ i] . iter ( ) . enumerate ( )  { 
804800                            let  ( offset,  niche,  niche_start)  =
805801                                match  self . find_niche ( field,  count) ? { 
@@ -1659,22 +1655,22 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
16591655            let  max_value = !0u128  >> ( 128  - bits) ; 
16601656
16611657            // Find out how many values are outside the valid range. 
1662-             let  niches = if  v. start  <= v. end  { 
1663-                 v. start  + ( max_value - v. end ) 
1658+             let  niches = if  v. start ( )  <= v. end ( )  { 
1659+                 v. start ( )  + ( max_value - v. end ( ) ) 
16641660            }  else  { 
1665-                 v. start  - v. end  - 1 
1661+                 v. start ( )  - v. end ( )  - 1 
16661662            } ; 
16671663
16681664            // Give up if we can't fit `count` consecutive niches. 
16691665            if  count > niches { 
16701666                return  None ; 
16711667            } 
16721668
1673-             let  niche_start = v. end . wrapping_add ( 1 )  &  max_value; 
1674-             let  niche_end = v. end . wrapping_add ( count)  &  max_value; 
1669+             let  niche_start = v. end ( ) . wrapping_add ( 1 )  &  max_value; 
1670+             let  niche_end = v. end ( ) . wrapping_add ( count)  &  max_value; 
16751671            Some ( ( offset,  Scalar  { 
16761672                value, 
1677-                 valid_range :  v. start ..=niche_end
1673+                 valid_range :  * v. start ( ) ..=niche_end
16781674            } ,  niche_start) ) 
16791675        } ; 
16801676
@@ -1744,14 +1740,14 @@ impl<'a> HashStable<StableHashingContext<'a>> for Variants {
17441740            } 
17451741            NicheFilling  { 
17461742                dataful_variant, 
1747-                 niche_variants :   RangeInclusive   {  start ,  end  } , 
1743+                 ref  niche_variants , 
17481744                ref  niche, 
17491745                niche_start, 
17501746                ref  variants, 
17511747            }  => { 
17521748                dataful_variant. hash_stable ( hcx,  hasher) ; 
1753-                 start. hash_stable ( hcx,  hasher) ; 
1754-                 end. hash_stable ( hcx,  hasher) ; 
1749+                 niche_variants . start ( ) . hash_stable ( hcx,  hasher) ; 
1750+                 niche_variants . end ( ) . hash_stable ( hcx,  hasher) ; 
17551751                niche. hash_stable ( hcx,  hasher) ; 
17561752                niche_start. hash_stable ( hcx,  hasher) ; 
17571753                variants. hash_stable ( hcx,  hasher) ; 
@@ -1814,10 +1810,10 @@ impl<'a> HashStable<StableHashingContext<'a>> for Scalar {
18141810    fn  hash_stable < W :  StableHasherResult > ( & self , 
18151811                                          hcx :  & mut  StableHashingContext < ' a > , 
18161812                                          hasher :  & mut  StableHasher < W > )  { 
1817-         let  Scalar  {  value,  valid_range :   RangeInclusive   {  start ,  end  }  }  = * self ; 
1813+         let  Scalar  {  value,  ref  valid_range  }  = * self ; 
18181814        value. hash_stable ( hcx,  hasher) ; 
1819-         start. hash_stable ( hcx,  hasher) ; 
1820-         end. hash_stable ( hcx,  hasher) ; 
1815+         valid_range . start ( ) . hash_stable ( hcx,  hasher) ; 
1816+         valid_range . end ( ) . hash_stable ( hcx,  hasher) ; 
18211817    } 
18221818} 
18231819
0 commit comments