Refine auto_restore syntax.

This commit is contained in:
Stephen Chung
2022-12-04 22:47:10 +08:00
parent 3163d9d1d6
commit e2bd0705b1
7 changed files with 64 additions and 32 deletions

View File

@@ -684,15 +684,17 @@ impl Engine {
let reset =
self.run_debugger_with_reset(global, caches, scope, this_ptr, rhs)?;
#[cfg(feature = "debugging")]
auto_restore!(global; reset.is_some() => move |g| g.debugger_mut().reset_status(reset));
auto_restore!(global if reset.is_some() => move |g| g.debugger_mut().reset_status(reset));
let crate::ast::FnCallExpr {
name, hashes, args, ..
} = &**x;
// Truncate the index values upon exit
let offset = idx_values.len() - args.len();
auto_restore!(idx_values => move |v| v.truncate(offset));
auto_restore! {
idx_values => truncate;
let offset = idx_values.len() - args.len();
}
let call_args = &mut idx_values[offset..];
let arg1_pos = args.get(0).map_or(Position::NONE, Expr::position);
@@ -854,15 +856,17 @@ impl Engine {
global, caches, scope, this_ptr, _node,
)?;
#[cfg(feature = "debugging")]
auto_restore!(global; reset.is_some() => move |g| g.debugger_mut().reset_status(reset));
auto_restore!(global if reset.is_some() => move |g| g.debugger_mut().reset_status(reset));
let crate::ast::FnCallExpr {
name, hashes, args, ..
} = &**x;
// Truncate the index values upon exit
let offset = idx_values.len() - args.len();
auto_restore!(idx_values => move |v| v.truncate(offset));
auto_restore! {
idx_values => truncate;
let offset = idx_values.len() - args.len();
}
let call_args = &mut idx_values[offset..];
let arg1_pos = args.get(0).map_or(Position::NONE, Expr::position);
@@ -973,15 +977,17 @@ impl Engine {
global, caches, scope, this_ptr, _node,
)?;
#[cfg(feature = "debugging")]
auto_restore!(global; reset.is_some() => move |g| g.debugger_mut().reset_status(reset));
auto_restore!(global if reset.is_some() => move |g| g.debugger_mut().reset_status(reset));
let crate::ast::FnCallExpr {
name, hashes, args, ..
} = &**f;
// Truncate the index values upon exit
let offset = idx_values.len() - args.len();
auto_restore!(idx_values => move |v| v.truncate(offset));
auto_restore! {
idx_values => truncate;
let offset = idx_values.len() - args.len();
}
let call_args = &mut idx_values[offset..];
let pos1 = args.get(0).map_or(Position::NONE, Expr::position);