summaryrefslogtreecommitdiff
path: root/compiler/Contexts.ml
diff options
context:
space:
mode:
authorSon Ho2023-01-04 21:17:30 +0100
committerSon HO2023-02-03 11:21:46 +0100
commitf3eb7aed4082e8f014d03c3c6045852687989a5b (patch)
tree51b0dcbef16cdfbb41427e4731ca497ae2bb3407 /compiler/Contexts.ml
parent0f0cfff07333a4e7762443e261ae9141ce373e54 (diff)
Implement support for nested borrows in loops, and add loop tests
Diffstat (limited to '')
-rw-r--r--compiler/Contexts.ml18
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