From f3eb7aed4082e8f014d03c3c6045852687989a5b Mon Sep 17 00:00:00 2001 From: Son Ho Date: Wed, 4 Jan 2023 21:17:30 +0100 Subject: Implement support for nested borrows in loops, and add loop tests --- compiler/Contexts.ml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'compiler/Contexts.ml') diff --git a/compiler/Contexts.ml b/compiler/Contexts.ml index f2fa36c5..0a6b27fd 100644 --- a/compiler/Contexts.ml +++ b/compiler/Contexts.ml @@ -551,3 +551,21 @@ class ['self] map_eval_ctx = let env = super#visit_env acc ctx.env in { ctx with env } end + +let env_iter_abs (f : V.abs -> unit) (env : env) : unit = + List.iter + (fun (ee : env_elem) -> + match ee with Var _ | Frame -> () | Abs abs -> f abs) + env + +let env_map_abs (f : V.abs -> V.abs) (env : env) : env = + List.map + (fun (ee : env_elem) -> + match ee with Var _ | Frame -> ee | Abs abs -> Abs (f abs)) + env + +let env_filter_abs (f : V.abs -> bool) (env : env) : env = + List.filter + (fun (ee : env_elem) -> + match ee with Var _ | Frame -> true | Abs abs -> f abs) + env -- cgit v1.2.3