aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--toplevel/stm.ml11
1 files changed, 7 insertions, 4 deletions
diff --git a/toplevel/stm.ml b/toplevel/stm.ml
index fdd24f7e48..f63cd9e4e5 100644
--- a/toplevel/stm.ml
+++ b/toplevel/stm.ml
@@ -533,10 +533,13 @@ end = struct (* {{{ *)
let freeze marhallable id = VCS.set_state id (freeze_global_state marhallable)
let exn_on id ?valid e =
- let loc = Option.default Loc.ghost (Loc.get_loc e) in
- let msg = string_of_ppcmds (print e) in
- Pp.feedback ~state_id:id (Interface.ErrorMsg (loc, msg));
- Stateid.add e ?valid id
+ match Stateid.get e with
+ | Some _ -> e
+ | None ->
+ let loc = Option.default Loc.ghost (Loc.get_loc e) in
+ let msg = string_of_ppcmds (print e) in
+ Pp.feedback ~state_id:id (Interface.ErrorMsg (loc, msg));
+ Stateid.add e ?valid id
let define ?(redefine=false) ?(cache=`No) f id =
let str_id = Stateid.to_string id in