aboutsummaryrefslogtreecommitdiffhomepage
path: root/library
diff options
context:
space:
mode:
Diffstat (limited to 'library')
-rw-r--r--library/states.ml2
-rw-r--r--library/states.mli7
2 files changed, 8 insertions, 1 deletions
diff --git a/library/states.ml b/library/states.ml
index a06e7ce80..ea4e7d43c 100644
--- a/library/states.ml
+++ b/library/states.ml
@@ -39,4 +39,4 @@ let with_state_protection f x =
with reraise ->
(unfreeze st; raise reraise)
-
+let with_state_protection_on_exception = Future.transactify
diff --git a/library/states.mli b/library/states.mli
index 0babae6af..fae1bfc02 100644
--- a/library/states.mli
+++ b/library/states.mli
@@ -27,3 +27,10 @@ val unfreeze : state -> unit
val with_state_protection : ('a -> 'b) -> 'a -> 'b
+(** [with_state_protection_on_exception f x] applies [f] to [x] and restores the
+ state of the whole system as it was before applying [f] only if an
+ exception is raised. Unlike [with_state_protection] it also takes into
+ account the proof state *)
+
+val with_state_protection_on_exception : ('a -> 'b) -> 'a -> 'b
+