Skip to content

Commit

Permalink
do not 'return' in 'throw_' macros
Browse files Browse the repository at this point in the history
  • Loading branch information
RalfJung committed Mar 19, 2020
1 parent 57e1da5 commit a39875b
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 11 deletions.
11 changes: 6 additions & 5 deletions src/librustc/mir/interpret/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,10 @@ macro_rules! err_exhaust {
};
}

// In the `throw_*` macros, avoid `return` to make them work with `try {}`.
#[macro_export]
macro_rules! throw_unsup {
($($tt:tt)*) => { return Err(err_unsup!($($tt)*).into()) };
($($tt:tt)*) => { Err(err_unsup!($($tt)*))? };
}

#[macro_export]
Expand All @@ -58,12 +59,12 @@ macro_rules! throw_unsup_format {

#[macro_export]
macro_rules! throw_inval {
($($tt:tt)*) => { return Err(err_inval!($($tt)*).into()) };
($($tt:tt)*) => { Err(err_inval!($($tt)*))? };
}

#[macro_export]
macro_rules! throw_ub {
($($tt:tt)*) => { return Err(err_ub!($($tt)*).into()) };
($($tt:tt)*) => { Err(err_ub!($($tt)*))? };
}

#[macro_export]
Expand All @@ -73,13 +74,13 @@ macro_rules! throw_ub_format {

#[macro_export]
macro_rules! throw_exhaust {
($($tt:tt)*) => { return Err(err_exhaust!($($tt)*).into()) };
($($tt:tt)*) => { Err(err_exhaust!($($tt)*))? };
}

#[macro_export]
macro_rules! throw_machine_stop {
($($tt:tt)*) => {
return Err($crate::mir::interpret::InterpError::MachineStop(Box::new($($tt)*)).into())
Err($crate::mir::interpret::InterpError::MachineStop(Box::new($($tt)*)))?
};
}

Expand Down
2 changes: 1 addition & 1 deletion src/librustc_mir/interpret/machine.rs
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ pub trait Machine<'mir, 'tcx>: Sized {

/// Called to evaluate `Abort` MIR terminator.
fn abort(_ecx: &mut InterpCx<'mir, 'tcx, Self>) -> InterpResult<'tcx, !> {
throw_unsup_format!("aborting execution is not supported");
throw_unsup_format!("aborting execution is not supported")
}

/// Called for all binary operations where the LHS has pointer type.
Expand Down
10 changes: 5 additions & 5 deletions src/librustc_mir/transform/const_prop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -192,19 +192,19 @@ impl<'mir, 'tcx> interpret::Machine<'mir, 'tcx> for ConstPropMachine {
_ret: Option<(PlaceTy<'tcx>, BasicBlock)>,
_unwind: Option<BasicBlock>,
) -> InterpResult<'tcx> {
throw_unsup!(ConstPropUnsupported("calling intrinsics isn't supported in ConstProp"));
throw_unsup!(ConstPropUnsupported("calling intrinsics isn't supported in ConstProp"))
}

fn assert_panic(
_ecx: &mut InterpCx<'mir, 'tcx, Self>,
_msg: &rustc::mir::AssertMessage<'tcx>,
_unwind: Option<rustc::mir::BasicBlock>,
) -> InterpResult<'tcx> {
bug!("panics terminators are not evaluated in ConstProp");
bug!("panics terminators are not evaluated in ConstProp")
}

fn ptr_to_int(_mem: &Memory<'mir, 'tcx, Self>, _ptr: Pointer) -> InterpResult<'tcx, u64> {
throw_unsup!(ConstPropUnsupported("ptr-to-int casts aren't supported in ConstProp"));
throw_unsup!(ConstPropUnsupported("ptr-to-int casts aren't supported in ConstProp"))
}

fn binary_ptr_op(
Expand All @@ -217,7 +217,7 @@ impl<'mir, 'tcx> interpret::Machine<'mir, 'tcx> for ConstPropMachine {
throw_unsup!(ConstPropUnsupported(
"pointer arithmetic or comparisons aren't supported \
in ConstProp"
));
))
}

#[inline(always)]
Expand All @@ -240,7 +240,7 @@ impl<'mir, 'tcx> interpret::Machine<'mir, 'tcx> for ConstPropMachine {
_ecx: &mut InterpCx<'mir, 'tcx, Self>,
_dest: PlaceTy<'tcx>,
) -> InterpResult<'tcx> {
throw_unsup!(ConstPropUnsupported("can't const prop `box` keyword"));
throw_unsup!(ConstPropUnsupported("can't const prop `box` keyword"))
}

fn access_local(
Expand Down

0 comments on commit a39875b

Please sign in to comment.