summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSon Ho2022-01-03 16:26:14 +0100
committerSon Ho2022-01-03 16:26:14 +0100
commit7a89bb9fc212d804a5227ad937c5e5b2e0c6d360 (patch)
tree70ee9a63b20869f3ab3068dd7156bf8f0f26e46d /src
parentf371140e5df9210d27af44fd2d21065005b05a9d (diff)
Make more progress
Diffstat (limited to 'src')
-rw-r--r--src/Interpreter.ml11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/Interpreter.ml b/src/Interpreter.ml
index fc87b6d2..68b92361 100644
--- a/src/Interpreter.ml
+++ b/src/Interpreter.ml
@@ -1644,7 +1644,16 @@ let convert_avalue_to_value (ended_regions : T.RegionId.set_t)
(ctx, { V.value = V.Bottom; V.ty })
else
(* Doesn't contain ended regions: return a symbolic value *)
- raise Unimplemented
+ let ctx, sv_id = C.fresh_symbolic_value_id ctx in
+ let svalue : V.symbolic_value = { V.sv_id; sv_ty = av.V.ty } in
+ let value : V.symbolic_proj_comp =
+ (* Note that the set of ended regions is empty: we shouldn't have to take
+ * into account any ended regions at this point, otherwise we would be in
+ * the first case where we should return ⊥ *)
+ { V.svalue; V.rset_ended = T.RegionId.Set.empty }
+ in
+ let value = V.Symbolic value in
+ (ctx, { V.value; V.ty })
(** End a borrow identified by its borrow id in a context