From 0777f1bbafbf8edc1d09fa5239dc4dddb2de31dd Mon Sep 17 00:00:00 2001 From: hyd-dev Date: Wed, 26 May 2021 00:51:51 +0800 Subject: [PATCH] Use `match` instead of `.map_or(StackPopUnwind::Skip, StackPopUnwind::Cleanup)` --- compiler/rustc_mir/src/interpret/terminator.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/compiler/rustc_mir/src/interpret/terminator.rs b/compiler/rustc_mir/src/interpret/terminator.rs index 1ee56ca3fc5..a5bdeb55e78 100644 --- a/compiler/rustc_mir/src/interpret/terminator.rs +++ b/compiler/rustc_mir/src/interpret/terminator.rs @@ -110,10 +110,10 @@ pub(super) fn eval_terminator( abi, &args[..], ret, - if caller_can_unwind { - cleanup.map_or(StackPopUnwind::Skip, StackPopUnwind::Cleanup) - } else { - StackPopUnwind::NotAllowed + match (cleanup, caller_can_unwind) { + (Some(cleanup), true) => StackPopUnwind::Cleanup(*cleanup), + (None, true) => StackPopUnwind::Skip, + (_, false) => StackPopUnwind::NotAllowed, }, )?; // Sanity-check that `eval_fn_call` either pushed a new frame or @@ -511,7 +511,10 @@ fn drop_in_place( Abi::Rust, &[arg.into()], Some((&dest.into(), target)), - unwind.map_or(StackPopUnwind::Skip, StackPopUnwind::Cleanup), + match unwind { + Some(cleanup) => StackPopUnwind::Cleanup(cleanup), + None => StackPopUnwind::Skip, + }, ) } } -- 2.44.0