diff options
author | Enrico Tassi <Enrico.Tassi@inria.fr> | 2014-01-07 10:24:12 +0100 |
---|---|---|
committer | Enrico Tassi <Enrico.Tassi@inria.fr> | 2014-01-07 10:24:40 +0100 |
commit | 81492757797caef50d4eb3eb185f813463da883d (patch) | |
tree | c71a4c4c17e1b5b5585cf41e291b57731ba98473 /pretyping | |
parent | 093529c6d4f8eba7370c30b97d8d648340039374 (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.ml | 18 |
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 |