aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pretyping/coercion.ml22
-rw-r--r--pretyping/coercion.mli6
2 files changed, 15 insertions, 13 deletions
diff --git a/pretyping/coercion.ml b/pretyping/coercion.ml
index f7096f2682..90884f3826 100644
--- a/pretyping/coercion.ml
+++ b/pretyping/coercion.ml
@@ -136,7 +136,7 @@ let rec inh_conv_coerce1 env isevars c1 v t k =
let env1 = push_rel (x,assv1) env in
let h2 = inh_conv_coerce1 env1 isevars u2 v2 t2
(mkSort (get_sort_of env !isevars t2)) in
- abs_rel env !isevars x assv1 h2
+ fst (abs_rel env !isevars x assv1 h2)
else
(* let ju1 = exemeta_rec def_vty_con env isevars u1 in
let assu1 = assumption_of_judgement env !isevars ju1 in *)
@@ -148,12 +148,12 @@ let rec inh_conv_coerce1 env isevars c1 v t k =
let h1 =
inh_conv_coerce1 env isevars t1 (Rel 1) u1
(mkSort (level_of_type assu1)) in
- let h2 = inh_conv_coerce1 env isevars1 u2
+ let h2 = inh_conv_coerce1 env isevars u2
(DOPN(AppL,[|(lift 1 v);h1.uj_val|]))
(subst1 h1.uj_val t2)
- (mkSort (sort_of env !isevars1 t2))
+ (mkSort (get_sort_of env !isevars t2))
in
- abs_rel !isevars name assu1 h2
+ fst (abs_rel env !isevars name assu1 h2)
| _ -> failwith "inh_coerce_to")
let inh_conv_coerce env isevars c1 hj =
@@ -164,8 +164,9 @@ let inh_cast_rel env isevars cj tj =
try
inh_conv_coerce env isevars tj.uj_val cj
with Not_found | Failure _ ->
- error_actual_type CCI env
- (j_nf_ise !isevars cj) (j_nf_ise !isevars tj)
+ let rcj = j_nf_ise env !isevars cj in
+ let atj = j_nf_ise env !isevars tj in
+ error_actual_type CCI env rcj.uj_val rcj.uj_type atj.uj_type
in
{ uj_val = mkCast cj'.uj_val tj.uj_val;
uj_type = tj.uj_val;
@@ -195,13 +196,14 @@ let inh_apply_rel_list nocheck env isevars argjl funj vtcon =
(try
inh_conv_coerce env isevars c1 hj
with Failure _ | Not_found ->
- error_cant_apply "Type Error" CCI env
- (j_nf_ise !isevars funj) (jl_nf_ise !isevars argjl))
+ error_cant_apply CCI env "Type Error"
+ (j_nf_ise env !isevars funj)
+ (jl_nf_ise env !isevars argjl))
in
apply_rec (hj'::acc) (subst1 hj'.uj_val c2) restjl
| _ ->
- error_cant_apply "Non-functional construction" CCI env
- (j_nf_ise !isevars funj) (jl_nf_ise !isevars argjl)
+ error_cant_apply CCI env "Non-functional construction"
+ (j_nf_ise env !isevars funj) (jl_nf_ise env !isevars argjl)
in
apply_rec [] funj.uj_type argjl
diff --git a/pretyping/coercion.mli b/pretyping/coercion.mli
index c510299acf..41b3cff696 100644
--- a/pretyping/coercion.mli
+++ b/pretyping/coercion.mli
@@ -19,10 +19,10 @@ val inh_tosort :
env -> 'a evar_defs -> unsafe_judgment -> unsafe_judgment
val inh_ass_of_j : env -> 'a evar_defs ->
unsafe_judgment -> typed_type
-val inh_coerce_to : env -> 'a evar_defs ->
+val inh_coerce_to : env -> unit evar_defs ->
constr -> unsafe_judgment -> unsafe_judgment
-val inh_cast_rel : env -> 'a evar_defs ->
+val inh_cast_rel : env -> unit evar_defs ->
unsafe_judgment -> unsafe_judgment -> unsafe_judgment
-val inh_apply_rel_list : bool -> env -> 'a evar_defs ->
+val inh_apply_rel_list : bool -> env -> unit evar_defs ->
unsafe_judgment list -> unsafe_judgment -> 'b * ('c * constr option)
-> unsafe_judgment