Skip to content

Commit 32d7e5b

Browse files
committed
add with_start and with_end
1 parent d230b92 commit 32d7e5b

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

compiler/rustc_middle/src/ty/layout.rs

+3-5
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@ impl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>> {
529529
}),
530530
ty::FnPtr(_) => {
531531
let mut ptr = scalar_unit(Pointer);
532-
ptr.valid_range = WrappingRange { start: 1, end: ptr.valid_range.end };
532+
ptr.valid_range = ptr.valid_range.with_start(1);
533533
tcx.intern_layout(Layout::scalar(self, ptr))
534534
}
535535

@@ -547,8 +547,7 @@ impl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>> {
547547
ty::Ref(_, pointee, _) | ty::RawPtr(ty::TypeAndMut { ty: pointee, .. }) => {
548548
let mut data_ptr = scalar_unit(Pointer);
549549
if !ty.is_unsafe_ptr() {
550-
data_ptr.valid_range =
551-
WrappingRange { start: 1, end: data_ptr.valid_range.end };
550+
data_ptr.valid_range = data_ptr.valid_range.with_start(1);
552551
}
553552

554553
let pointee = tcx.normalize_erasing_regions(param_env, pointee);
@@ -564,8 +563,7 @@ impl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>> {
564563
ty::Slice(_) | ty::Str => scalar_unit(Int(dl.ptr_sized_integer(), false)),
565564
ty::Dynamic(..) => {
566565
let mut vtable = scalar_unit(Pointer);
567-
vtable.valid_range =
568-
WrappingRange { start: 1, end: vtable.valid_range.end };
566+
vtable.valid_range = vtable.valid_range.with_start(1);
569567
vtable
570568
}
571569
_ => return Err(LayoutError::Unknown(unsized_part)),

compiler/rustc_target/src/abi/mod.rs

+11-1
Original file line numberDiff line numberDiff line change
@@ -712,6 +712,16 @@ impl WrappingRange {
712712
pub fn contains_zero(&self) -> bool {
713713
!(self.start <= self.end && self.start != 0)
714714
}
715+
716+
/// Returns new `WrappingRange` with replaced `start`
717+
pub fn with_start(&self, start: u128) -> Self {
718+
Self { start, end: self.end }
719+
}
720+
721+
/// Returns new `WrappingRange` with replaced `end`
722+
pub fn with_end(&self, end: u128) -> Self {
723+
Self { start: self.start, end }
724+
}
715725
}
716726

717727
impl fmt::Debug for WrappingRange {
@@ -1029,7 +1039,7 @@ impl Niche {
10291039
return None;
10301040
}
10311041

1032-
Some((start, Scalar { value, valid_range: WrappingRange { start: v.start, end } }))
1042+
Some((start, Scalar { value, valid_range: v.with_end(end) }))
10331043
}
10341044
}
10351045

0 commit comments

Comments
 (0)