summaryrefslogtreecommitdiff
path: root/src/Contexts.ml
diff options
context:
space:
mode:
authorSon Ho2022-01-05 18:13:06 +0100
committerSon Ho2022-01-05 18:13:06 +0100
commitb191de7f680e4ae43178fc42ccabc91808e189f8 (patch)
treecf6ecb1db633ba8fdc29bc63b68476eddf1593a3 /src/Contexts.ml
parent8904a6daf444082a26172ad3187f9d61420ab8ec (diff)
Make good progress on eval_local_function_call_symbolic
Diffstat (limited to '')
-rw-r--r--src/Contexts.ml10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/Contexts.ml b/src/Contexts.ml
index fec1e11b..89056680 100644
--- a/src/Contexts.ml
+++ b/src/Contexts.ml
@@ -71,6 +71,8 @@ type eval_ctx = {
(* TODO: make this global? *)
borrow_counter : BorrowId.generator;
(* TODO: make this global? *)
+ region_counter : RegionId.generator;
+ (* TODO: make this global? *)
abstraction_counter : AbstractionId.generator; (* TODO: make this global? *)
}
[@@deriving show]
@@ -84,6 +86,14 @@ let fresh_borrow_id (ctx : eval_ctx) : eval_ctx * BorrowId.id =
let id, counter' = BorrowId.fresh ctx.borrow_counter in
({ ctx with borrow_counter = counter' }, id)
+let fresh_region_id (ctx : eval_ctx) : eval_ctx * RegionId.id =
+ let id, counter' = RegionId.fresh ctx.region_counter in
+ ({ ctx with region_counter = counter' }, id)
+
+let fresh_abstraction_id (ctx : eval_ctx) : eval_ctx * AbstractionId.id =
+ let id, counter' = AbstractionId.fresh ctx.abstraction_counter in
+ ({ ctx with abstraction_counter = counter' }, id)
+
let lookup_type_var (ctx : eval_ctx) (vid : TypeVarId.id) : type_var =
TypeVarId.nth ctx.type_vars vid