summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/Interpreter.ml12
-rw-r--r--src/Values.ml2
2 files changed, 14 insertions, 0 deletions
diff --git a/src/Interpreter.ml b/src/Interpreter.ml
index 4ea95028..8948701f 100644
--- a/src/Interpreter.ml
+++ b/src/Interpreter.ml
@@ -846,6 +846,18 @@ let give_back_shared_to_abs _config _bid _abs : V.abs =
*)
let give_back_value (config : C.config) (bid : V.BorrowId.id)
(v : V.typed_value) (env : C.env) : C.env =
+ (* TODO:
+ (* We use a reference to check that we updated exactly one borrow *)
+ let replaced : bool ref = ref false in
+ let set_replaced () =
+ assert (not !replaced);
+ replaced := true
+ in
+ let obj =
+ object
+ inherit [_] C.map_env
+ end
+ in*)
let give_back_value_to_env_elem ev : C.env_elem =
match ev with
| C.Var (vid, destv) ->
diff --git a/src/Values.ml b/src/Values.ml
index 8c4c689c..3905d96e 100644
--- a/src/Values.ml
+++ b/src/Values.ml
@@ -241,6 +241,8 @@ and aloan_content =
note independent of the parent avalues. For instance, a value
`AMutBorrow (_, AMutBorrow (_, ...)` (ignoring the types) really is
to be seen like a `mut_borrow ... (mut_borrow ...)`.
+
+ TODO: be more precise about the ignored vlaues
*)
and aborrow_content =
| AMutBorrow of (BorrowId.id[@opaque]) * typed_avalue