]> git.lizzy.rs Git - rust.git/commitdiff
add `with_start` and `with_end`
authorAndreas Liljeqvist <bonega@gmail.com>
Mon, 23 Aug 2021 13:44:56 +0000 (15:44 +0200)
committerAndreas Liljeqvist <bonega@gmail.com>
Mon, 23 Aug 2021 13:44:56 +0000 (15:44 +0200)
compiler/rustc_middle/src/ty/layout.rs
compiler/rustc_target/src/abi/mod.rs

index 6b628cb041b5706243c8aa6e22e56730f1f01f46..dcb56d5b2ba1b2f6da3917a6635dfed53305ad38 100644 (file)
@@ -529,7 +529,7 @@ fn layout_raw_uncached(&self, ty: Ty<'tcx>) -> Result<&'tcx Layout, LayoutError<
             }),
             ty::FnPtr(_) => {
                 let mut ptr = scalar_unit(Pointer);
-                ptr.valid_range = WrappingRange { start: 1, end: ptr.valid_range.end };
+                ptr.valid_range = ptr.valid_range.with_start(1);
                 tcx.intern_layout(Layout::scalar(self, ptr))
             }
 
@@ -547,8 +547,7 @@ fn layout_raw_uncached(&self, ty: Ty<'tcx>) -> Result<&'tcx Layout, LayoutError<
             ty::Ref(_, pointee, _) | ty::RawPtr(ty::TypeAndMut { ty: pointee, .. }) => {
                 let mut data_ptr = scalar_unit(Pointer);
                 if !ty.is_unsafe_ptr() {
-                    data_ptr.valid_range =
-                        WrappingRange { start: 1, end: data_ptr.valid_range.end };
+                    data_ptr.valid_range = data_ptr.valid_range.with_start(1);
                 }
 
                 let pointee = tcx.normalize_erasing_regions(param_env, pointee);
@@ -564,8 +563,7 @@ fn layout_raw_uncached(&self, ty: Ty<'tcx>) -> Result<&'tcx Layout, LayoutError<
                     ty::Slice(_) | ty::Str => scalar_unit(Int(dl.ptr_sized_integer(), false)),
                     ty::Dynamic(..) => {
                         let mut vtable = scalar_unit(Pointer);
-                        vtable.valid_range =
-                            WrappingRange { start: 1, end: vtable.valid_range.end };
+                        vtable.valid_range = vtable.valid_range.with_start(1);
                         vtable
                     }
                     _ => return Err(LayoutError::Unknown(unsized_part)),
index c9d0b12e7396f0bac4815b20e57d81c63f596e26..6e2f8962eef4899e75c9c3c32a2ddfb327439b47 100644 (file)
@@ -712,6 +712,16 @@ pub fn contains(&self, v: u128) -> bool {
     pub fn contains_zero(&self) -> bool {
         !(self.start <= self.end && self.start != 0)
     }
+
+    /// Returns new `WrappingRange` with replaced `start`
+    pub fn with_start(&self, start: u128) -> Self {
+        Self { start, end: self.end }
+    }
+
+    /// Returns new `WrappingRange` with replaced `end`
+    pub fn with_end(&self, end: u128) -> Self {
+        Self { start: self.start, end }
+    }
 }
 
 impl fmt::Debug for WrappingRange {
@@ -1029,7 +1039,7 @@ pub fn reserve<C: HasDataLayout>(&self, cx: &C, count: u128) -> Option<(u128, Sc
             return None;
         }
 
-        Some((start, Scalar { value, valid_range: WrappingRange { start: v.start, end } }))
+        Some((start, Scalar { value, valid_range: v.with_end(end) }))
     }
 }