aboutsummaryrefslogtreecommitdiffhomepage
path: root/pretyping
diff options
context:
space:
mode:
authorGravatar Enrico Tassi <Enrico.Tassi@inria.fr>2014-01-07 10:24:12 +0100
committerGravatar Enrico Tassi <Enrico.Tassi@inria.fr>2014-01-07 10:24:40 +0100
commit81492757797caef50d4eb3eb185f813463da883d (patch)
treec71a4c4c17e1b5b5585cf41e291b57731ba98473 /pretyping
parent093529c6d4f8eba7370c30b97d8d648340039374 (diff)
STM: additional fix for STM + vm_compute
Thanks again Maximes. This time the C value was stored in the env_(named|rel)_val of the environment
Diffstat (limited to 'pretyping')
-rw-r--r--pretyping/evarutil.ml18
1 files changed, 11 insertions, 7 deletions
diff --git a/pretyping/evarutil.ml b/pretyping/evarutil.ml
index 737846766..8e3057e8e 100644
--- a/pretyping/evarutil.ml
+++ b/pretyping/evarutil.ml
@@ -495,13 +495,17 @@ let clear_hyps_in_evi evdref hyps concl ids =
let check_value vk =
match !vk with
| VKnone -> vk
- | VKvalue (v,d) ->
- if (Id.Set.for_all (fun e -> not (Id.Set.mem e d)) ids) then
- (* v does depend on any of ids, it's ok *)
- vk
- else
- (* v depends on one of the cleared hyps: we forget the computed value *)
- ref VKnone
+ | VKvalue key ->
+ try
+ let _, d = Ephemeron.get key in
+ if (Id.Set.for_all (fun e -> not (Id.Set.mem e d)) ids) then
+ (* v does depend on any of ids, it's ok *)
+ vk
+ else
+ (* v depends on one of the cleared hyps:
+ we forget the computed value *)
+ ref VKnone
+ with Ephemeron.InvalidKey -> ref VKnone
in
remove_hyps ids check_context check_value hyps
in