ErrorHandled::Reported => {}
ErrorHandled::TooGeneric => bug!(
"MIR interpretation failed without reporting an error \
- even though it was fully monomorphized"
+ even though it was fully monomorphized"
),
}
}
) -> Result<DiagnosticBuilder<'tcx>, ErrorHandled> {
let must_error = match self.error {
InterpError::MachineStop(_) => bug!("CTFE does not stop"),
- err_inval!(Layout(LayoutError::Unknown(_))) | err_inval!(TooGeneric) => {
+ err_inval!(Layout(LayoutError::Unknown(_)))
+ | err_inval!(TooGeneric) => {
return Err(ErrorHandled::TooGeneric);
}
err_inval!(TypeckError) => return Err(ErrorHandled::Reported),
let next = self.next_id;
self.next_id.0 = self.next_id.0.checked_add(1).expect(
"You overflowed a u64 by incrementing by 1... \
- You've just earned yourself a free drink if we ever meet. \
- Seriously, how did you do that?!",
+ You've just earned yourself a free drink if we ever meet. \
+ Seriously, how did you do that?!",
);
next
}
}
// The rest is integer/pointer-"like", including fn ptr casts and casts from enums that
// are represented as integers.
- _ => assert!(
- src.layout.ty.is_bool()
- || src.layout.ty.is_char()
- || src.layout.ty.is_enum()
- || src.layout.ty.is_integral()
- || src.layout.ty.is_any_ptr(),
- "Unexpected cast from type {:?}",
- src.layout.ty
- ),
+ _ => {
+ assert!(
+ src.layout.ty.is_bool()
+ || src.layout.ty.is_char()
+ || src.layout.ty.is_enum()
+ || src.layout.ty.is_integral()
+ || src.layout.ty.is_any_ptr(),
+ "Unexpected cast from type {:?}",
+ src.layout.ty
+ )
+ }
}
// Handle cast from a univariant (ZST) enum.
&mut self,
) -> InterpResult<'tcx, Result<&mut LocalValue<Tag>, MemPlace<Tag>>> {
match self.value {
- LocalValue::Dead => throw_unsup!(DeadLocal),
- LocalValue::Live(Operand::Indirect(mplace)) => Ok(Err(mplace)),
+ LocalValue::Dead => {
+ throw_unsup!(DeadLocal)
+ }
+ LocalValue::Live(Operand::Indirect(mplace)) => {
+ Ok(Err(mplace))
+ }
ref mut local @ LocalValue::Live(Operand::Immediate(_))
- | ref mut local @ LocalValue::Uninitialized => Ok(Ok(local)),
+ | ref mut local @ LocalValue::Uninitialized => {
+ Ok(Ok(local))
+ }
}
}
}
Ok((layout.size, layout.align.abi))
}
Some(GlobalAlloc::Memory(alloc)) =>
- // Need to duplicate the logic here, because the global allocations have
- // different associated types than the interpreter-local ones.
{
+ // Need to duplicate the logic here, because the global allocations have
+ // different associated types than the interpreter-local ones.
Ok((alloc.size, alloc.align))
}
Some(GlobalAlloc::Function(_)) => bug!("We already checked function pointers above"),
| ty::ConstKind::Placeholder(..) => {
bug!("eval_const_to_op: Unexpected ConstKind {:?}", val)
}
- ty::ConstKind::Value(val_val) => val_val,
+ ty::ConstKind::Value(val_val) => {
+ val_val
+ }
};
// Other cases need layout.
let layout = from_known_layout(layout, || self.layout_of(val.ty))?;
let variant_index = variants_start
.checked_add(variant_index_relative)
.expect("oveflow computing absolute variant idx");
- assert!(
- (variant_index as usize)
- < rval
- .layout
- .ty
- .ty_adt_def()
- .expect("tagged layout for non adt")
- .variants
- .len()
- );
+ let variants_len = rval
+ .layout
+ .ty
+ .ty_adt_def()
+ .expect("tagged layout for non adt")
+ .variants
+ .len();
+ assert!((variant_index as usize) < variants_len);
(u128::from(variant_index), VariantIdx::from_u32(variant_index))
} else {
(u128::from(dataful_variant.as_u32()), dataful_variant)
// happens at run-time so that's okay.
let align = match self.size_and_align_of(base.meta, field_layout)? {
Some((_, align)) => align,
- None if offset == Size::ZERO =>
- // An extern type at offset 0, we fall back to its static alignment.
- // FIXME: Once we have made decisions for how to handle size and alignment
- // of `extern type`, this should be adapted. It is just a temporary hack
- // to get some code to work that probably ought to work.
- {
+ None if offset == Size::ZERO => {
+ // An extern type at offset 0, we fall back to its static alignment.
+ // FIXME: Once we have made decisions for how to handle size and alignment
+ // of `extern type`, this should be adapted. It is just a temporary hack
+ // to get some code to work that probably ought to work.
field_layout.align.abi
}
None => bug!("Cannot compute offset for extern type field at non-0 offset"),
TupleElem(idx) => write!(out, ".{}", idx),
ArrayElem(idx) => write!(out, "[{}]", idx),
Deref =>
- // This does not match Rust syntax, but it is more readable for long paths -- and
- // some of the other items here also are not Rust syntax. Actually we can't
- // even use the usual syntax because we are just showing the projections,
- // not the root.
{
+ // This does not match Rust syntax, but it is more readable for long paths -- and
+ // some of the other items here also are not Rust syntax. Actually we can't
+ // even use the usual syntax because we are just showing the projections,
+ // not the root.
write!(out, ".<deref>")
}
Tag => write!(out, ".<enum-tag>"),
// we might be projecting *to* a variant, or to a field *in*a variant.
match layout.variants {
layout::Variants::Single { index } =>
- // Inside a variant
{
+ // Inside a variant
PathElem::Field(def.variants[index].fields[field].ident.name)
}
_ => bug!(),