diff options
Diffstat (limited to 'stm/stm.ml')
| -rw-r--r-- | stm/stm.ml | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/stm/stm.ml b/stm/stm.ml index 3922254803..d615dc1706 100644 --- a/stm/stm.ml +++ b/stm/stm.ml @@ -1148,6 +1148,11 @@ end = struct (* {{{ *) msg_info( str(Printf.sprintf "Checking task %d (%s%s) of %s" i r_name extra name)); VCS.restore document; + let start = + let rec aux cur = + try aux (VCS.visit cur).next + with VCS.Expired -> cur in + aux stop in try Reach.known_state ~cache:`No stop; (* The original terminator, a hook, has not been saved in the .vio*) @@ -1156,6 +1161,9 @@ end = struct (* {{{ *) (Lemmas.mk_hook (fun _ _ -> ()))); let proof = Proof_global.close_proof ~keep_body_ucst_sepatate:true (fun x -> x) in + (* We jump at the beginning since the kernel handles side effects by also + * looking at the ones that happen to be present in the current env *) + Reach.known_state ~cache:`No start; vernac_interp stop ~proof { verbose = false; loc; expr = (VernacEndProof (Proved (true,None))) }; @@ -1190,7 +1198,7 @@ end = struct (* {{{ *) let bucket = (List.nth l i).Stateid.uuid in match check_task_aux (Printf.sprintf ", bucket %d" bucket) name l i with | None -> exit 1 - | Some (po,pt) -> + | Some (po,_) -> let discharge c = List.fold_right Cooking.cook_constr d.(bucket) c in let con = Nametab.locate_constant |
