From 63c1931e3067d1841a6e92109f1d2ce0f1e3c496 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20L=C3=BChne?= Date: Fri, 17 Apr 2020 03:18:25 +0200 Subject: [PATCH] Expose functions to access free and manipulate variable declarations --- src/utils.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/utils.rs b/src/utils.rs index 432bf0e..8da8e48 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -118,7 +118,19 @@ impl<'p> VariableDeclarationStackLayer<'p> } } - #[cfg(test)] + pub fn free_variable_declarations_do_mut(&self, f: F) -> G + where + F: Fn(&mut crate::VariableDeclarations) -> G + { + match self + { + VariableDeclarationStackLayer::Free(free_variable_declarations) + => f(&mut free_variable_declarations.borrow_mut()), + VariableDeclarationStackLayer::Bound(bound_variable_declarations) + => bound_variable_declarations.parent.free_variable_declarations_do_mut(f), + } + } + pub fn free_variable_declarations_do(&self, f: F) -> G where F: Fn(&crate::VariableDeclarations) -> G