aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--pretyping/pretyping.ml14
1 files changed, 6 insertions, 8 deletions
diff --git a/pretyping/pretyping.ml b/pretyping/pretyping.ml
index cb6deb41c..5ae49e563 100644
--- a/pretyping/pretyping.ml
+++ b/pretyping/pretyping.ml
@@ -501,15 +501,12 @@ let rec pretype resolve_tc (tycon : type_constraint) env evdref lvar t =
let ty = substl args ty in
let ev = e_new_evar evdref env ~src:(loc,k) ty in
ev :: args) ctx []
- (* let j = pretype (mk_tycon ty) env evdref lvar par in *)
- (* j.uj_val :: args) ctx pars [] *)
in (ind, List.rev args)
in
let argtycon =
match arg with
- (** FIXME ? *)
| GHole (loc, k, _) -> (* Typeclass projection application:
- create the necessary type constraint *)
+ create the necessary type constraint *)
let ind, args = mk_ty k in
mk_tycon (applist (mkIndU ind, args))
| _ -> empty_tycon
@@ -519,16 +516,17 @@ let rec pretype resolve_tc (tycon : type_constraint) env evdref lvar t =
try
let IndType (indf, _ (*[]*)) =
find_rectype env !evdref recty.uj_type
- in recty, dest_ind_family indf
+ in
+ let ((ind', _), _) as indf = dest_ind_family indf in
+ if not (eq_ind ind' (mind,0)) then raise Not_found
+ else recty, indf
with Not_found ->
(match argtycon with
| Some ty -> assert false
- (* let IndType (indf, _) = find_rectype env !evdref ty in *)
- (* recty, dest_ind_family indf *)
| None ->
let ind, args = mk_ty Evar_kinds.InternalHole in
let j' =
- inh_conv_coerce_to_tycon loc env evdref recty
+ inh_conv_coerce_to_tycon (loc_of_glob_constr arg) env evdref recty
(mk_tycon (applist (mkIndU ind, args))) in
j', (ind, args))
in