X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustc_mir%2Finterpret%2Foperand.rs;h=e64a474b4ca7171c2a907ffe59b6c5455ec964cd;hb=97098f466ad7a72e6690cf45e6ff2d60885396a9;hp=8c443c9579f75b9abd14ee7437e4543cbbd02bc4;hpb=fc5df1dfbfdd9af311e04b4841f209b0fc9aaafb;p=rust.git diff --git a/src/librustc_mir/interpret/operand.rs b/src/librustc_mir/interpret/operand.rs index 8c443c9579f..e64a474b4ca 100644 --- a/src/librustc_mir/interpret/operand.rs +++ b/src/librustc_mir/interpret/operand.rs @@ -11,8 +11,7 @@ use rustc::mir::interpret::{ GlobalId, AllocId, ConstValue, Pointer, Scalar, - InterpResult, InterpError, - sign_extend, truncate, UnsupportedOpInfo, + InterpResult, sign_extend, truncate, }; use super::{ InterpCx, Machine, @@ -332,7 +331,7 @@ pub fn read_str( let len = mplace.len(self)?; let bytes = self.memory.read_bytes(mplace.ptr, Size::from_bytes(len as u64))?; let str = ::std::str::from_utf8(bytes).map_err(|err| { - InterpError::Unsupported(UnsupportedOpInfo::ValidationFailure(err.to_string())) + err_unsup!(ValidationFailure(err.to_string())) })?; Ok(str) } @@ -461,7 +460,7 @@ pub(super) fn eval_place_to_op( mir_place.iterate(|place_base, place_projection| { let mut op = match place_base { PlaceBase::Local(mir::RETURN_PLACE) => - return throw_err_unsup!(ReadFromReturnPointer), + throw_unsup!(ReadFromReturnPointer), PlaceBase::Local(local) => { // Do not use the layout passed in as argument if the base we are looking at // here is not the entire place. @@ -534,7 +533,7 @@ pub(super) fn eval_operands( match val.val { ConstValue::Param(_) => // FIXME(oli-obk): try to monomorphize - return throw_err_inval!(TooGeneric), + throw_inval!(TooGeneric), ConstValue::Unevaluated(def_id, substs) => { let instance = self.resolve(def_id, substs)?; return Ok(OpTy::from(self.const_eval_raw(GlobalId { @@ -604,13 +603,12 @@ pub fn read_discriminant( let raw_discr = discr_val.to_scalar_or_undef(); trace!("discr value: {:?}", raw_discr); // post-process - use rustc::mir::interpret::UnsupportedOpInfo::InvalidDiscriminant; Ok(match *discr_kind { layout::DiscriminantKind::Tag => { let bits_discr = match raw_discr.to_bits(discr_val.layout.size) { Ok(raw_discr) => raw_discr, Err(_) => - return throw_err_unsup!(InvalidDiscriminant(raw_discr.erase_tag())), + throw_unsup!(InvalidDiscriminant(raw_discr.erase_tag())), }; let real_discr = if discr_val.layout.ty.is_signed() { // going from layout tag type to typeck discriminant type @@ -649,7 +647,7 @@ pub fn read_discriminant( let variants_start = niche_variants.start().as_u32() as u128; let variants_end = niche_variants.end().as_u32() as u128; let raw_discr = raw_discr.not_undef().map_err(|_| { - InterpError::Unsupported(InvalidDiscriminant(ScalarMaybeUndef::Undef)) + err_unsup!(InvalidDiscriminant(ScalarMaybeUndef::Undef)) })?; match raw_discr.to_bits_or_ptr(discr_val.layout.size, self) { Err(ptr) => { @@ -657,9 +655,7 @@ pub fn read_discriminant( let ptr_valid = niche_start == 0 && variants_start == variants_end && !self.memory.ptr_may_be_null(ptr); if !ptr_valid { - return throw_err_unsup!( - InvalidDiscriminant(raw_discr.erase_tag().into()) - ); + throw_unsup!(InvalidDiscriminant(raw_discr.erase_tag().into())) } (dataful_variant.as_u32() as u128, dataful_variant) },