aboutsummaryrefslogtreecommitdiff
path: root/pretyping
diff options
context:
space:
mode:
authorherbelin2011-01-07 16:38:04 +0000
committerherbelin2011-01-07 16:38:04 +0000
commit1a57766209ad896552be615bd5d839a3b292d041 (patch)
tree1328caa11117cbbbc840557c1be07ac215a13feb /pretyping
parent2b636a03f937fcb6739f48f10b60323d80a84bca (diff)
Fixing an uncaught exception bug with use of vmcast
(backport from 8.3) git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@13781 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'pretyping')
-rw-r--r--pretyping/pretyping.ml5
1 files changed, 4 insertions, 1 deletions
diff --git a/pretyping/pretyping.ml b/pretyping/pretyping.ml
index a2fb8ea12d..1a5de0c50f 100644
--- a/pretyping/pretyping.ml
+++ b/pretyping/pretyping.ml
@@ -636,7 +636,10 @@ module Pretyping_F (Coercion : Coercion.S) = struct
let cty = nf_evar !evdref cj.uj_type and tval = nf_evar !evdref tj.utj_val in
let cj = match k with
| VMcast when not (occur_existential cty || occur_existential tval) ->
- ignore (Reduction.vm_conv Reduction.CUMUL env cty tval); cj
+ (try ignore (Reduction.vm_conv Reduction.CUMUL env cty tval); cj
+ with Reduction.NotConvertible ->
+ error_actual_type_loc loc env !evdref cj tval)
+
| _ -> inh_conv_coerce_to_tycon loc env evdref cj (mk_tycon tval)
in
let v = mkCast (cj.uj_val, k, tval) in