aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Enrico Tassi <Enrico.Tassi@inria.fr>2015-06-09 10:49:02 +0200
committerGravatar Enrico Tassi <Enrico.Tassi@inria.fr>2015-06-09 13:24:38 +0200
commita7a1ec22bc2aa06cc419f7012863656c3aec5871 (patch)
tree22647397eb7e4965f58757820ded8562a66a9eac
parent0736befd45671875d4c9761fc42f38766a14493b (diff)
STM: silly mistake in jumping back to an old state (Close #4249)
-rw-r--r--stm/stm.ml5
-rw-r--r--test-suite/ide/bug4249.fake16
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