summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSon Ho2021-11-29 23:32:09 +0100
committerSon Ho2021-11-29 23:32:09 +0100
commit2c7e19de3465c2ead68a4c851f2cc140d1542969 (patch)
tree70c7a40125e0bdb481b480dfab82c6f1dbf0408c
parent3952c51d7e63b754642ef2e1ea8b64d4aceccdc6 (diff)
Debug some issues
-rw-r--r--src/Interpreter.ml19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/Interpreter.ml b/src/Interpreter.ml
index 5278cfdd..90df16ed 100644
--- a/src/Interpreter.ml
+++ b/src/Interpreter.ml
@@ -935,6 +935,11 @@ let rec access_projection (access : projection_access) (env : C.env)
(* Function to (eventually) update the value we find *)
(update : V.typed_value -> V.typed_value) (p : E.projection)
(v : V.typed_value) : (C.env * updated_read_value) path_access_result =
+ (* Debug *)
+ L.log#ldebug
+ (lazy
+ ("access_projection:\n" ^ "p: " ^ E.show_projection p ^ "\nv.ty: "
+ ^ T.show_ety v.V.ty));
(* For looking up/updating shared loans *)
let ek : exploration_kind =
{ enter_shared_loans = true; enter_mut_borrows = true; enter_abs = true }
@@ -957,7 +962,7 @@ let rec access_projection (access : projection_access) (env : C.env)
| _ -> failwith "Unreachable");
(* Actually project *)
let fv = T.FieldId.nth adt.field_values field_id in
- match access_projection access env update p fv with
+ match access_projection access env update p' fv with
| Error err -> Error err
| Ok (env1, res) ->
(* Update the field value *)
@@ -972,7 +977,7 @@ let rec access_projection (access : projection_access) (env : C.env)
assert (arity = T.FieldId.length values);
let fv = T.FieldId.nth values field_id in
(* Project *)
- match access_projection access env update p fv with
+ match access_projection access env update p' fv with
| Error err -> Error err
| Ok (env1, res) ->
(* Update the field value *)
@@ -1217,6 +1222,11 @@ let compute_expanded_bottom_tuple_value (field_types : T.ety list) :
let expand_bottom_value (config : C.config) (access : access_kind)
(tyctx : T.type_def T.TypeDefId.vector) (p : E.place) (remaining_pes : int)
(pe : E.projection_elem) (ty : T.ety) (env : C.env) : C.env =
+ (* Debugging *)
+ L.log#ldebug
+ (lazy
+ ("expand_bottom_value:\n" ^ "pe: " ^ E.show_projection_elem pe ^ "\n"
+ ^ "ty: " ^ T.show_ety ty));
(* Prepare the update: we need to take the proper prefix of the place
during whose evaluation we got stuck *)
let projection' =
@@ -1246,10 +1256,7 @@ let expand_bottom_value (config : C.config) (access : access_kind)
compute_expanded_bottom_tuple_value tys
| _ ->
failwith
- ("Unreachable: "
- ^ Print.CfimAst.projection_elem_variant_name pe
- ^ ", "
- ^ Print.Types.ty_variant_name ty)
+ ("Unreachable: " ^ E.show_projection_elem pe ^ ", " ^ T.show_ety ty)
in
(* Update the environment by inserting the expanded value at the proper place *)
match write_place config access p' nv env with