diff options
author | Son Ho | 2022-01-03 16:26:14 +0100 |
---|---|---|
committer | Son Ho | 2022-01-03 16:26:14 +0100 |
commit | 7a89bb9fc212d804a5227ad937c5e5b2e0c6d360 (patch) | |
tree | 70ee9a63b20869f3ab3068dd7156bf8f0f26e46d /src | |
parent | f371140e5df9210d27af44fd2d21065005b05a9d (diff) |
Make more progress
Diffstat (limited to 'src')
-rw-r--r-- | src/Interpreter.ml | 11 |
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 |