diff options
author | Son Ho | 2023-01-04 21:17:30 +0100 |
---|---|---|
committer | Son HO | 2023-02-03 11:21:46 +0100 |
commit | f3eb7aed4082e8f014d03c3c6045852687989a5b (patch) | |
tree | 51b0dcbef16cdfbb41427e4731ca497ae2bb3407 /compiler/Contexts.ml | |
parent | 0f0cfff07333a4e7762443e261ae9141ce373e54 (diff) |
Implement support for nested borrows in loops, and add loop tests
Diffstat (limited to '')
-rw-r--r-- | compiler/Contexts.ml | 18 |
1 files changed, 18 insertions, 0 deletions
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 |