diff options
author | Enrico Tassi <Enrico.Tassi@inria.fr> | 2015-06-09 10:49:02 +0200 |
---|---|---|
committer | Enrico Tassi <Enrico.Tassi@inria.fr> | 2015-06-09 13:24:38 +0200 |
commit | a7a1ec22bc2aa06cc419f7012863656c3aec5871 (patch) | |
tree | 22647397eb7e4965f58757820ded8562a66a9eac | |
parent | 0736befd45671875d4c9761fc42f38766a14493b (diff) |
STM: silly mistake in jumping back to an old state (Close #4249)
-rw-r--r-- | stm/stm.ml | 5 | ||||
-rw-r--r-- | test-suite/ide/bug4249.fake | 16 |
2 files changed, 19 insertions, 2 deletions
diff --git a/stm/stm.ml b/stm/stm.ml index fa3ffc7c6..a6b21bcd9 100644 --- a/stm/stm.ml +++ b/stm/stm.ml @@ -2328,9 +2328,9 @@ let edit_at id = VCS.branch ~root:brinfo.VCS.root ~pos:brinfo.VCS.pos (Option.default brname bn) (no_edit brinfo.VCS.kind); - VCS.print (); VCS.delete_cluster_of id; VCS.gc (); + VCS.print (); Reach.known_state ~cache:(interactive ()) id; VCS.checkout_shallowest_proof_branch (); `NewTip in @@ -2368,7 +2368,8 @@ let edit_at id = end else begin anomaly(str"Cannot leave an `Edit branch open") end - | false, None, _ -> backto id None + | false, None, Some(_,bn) -> backto id (Some bn) + | false, None, None -> backto id None in VCS.print (); rc diff --git a/test-suite/ide/bug4249.fake b/test-suite/ide/bug4249.fake new file mode 100644 index 000000000..20afe0fb8 --- /dev/null +++ b/test-suite/ide/bug4249.fake @@ -0,0 +1,16 @@ +ADD { Lemma a : True. } +ADD here { Proof using. } +ADD { fail. } +ADD { trivial. } # first error +ADD { Qed. } +WAIT +EDIT_AT here +# Fixing the proof +ADD fix { trivial. } +ADD { Qed. } +WAIT +EDIT_AT fix +ADD { Qed. } +EDIT_AT fix +ADD { Qed. } +JOIN |