aboutsummaryrefslogtreecommitdiff
path: root/pretyping
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2018-07-26 11:01:34 +0200
committerPierre-Marie Pédrot2018-07-26 11:01:34 +0200
commit1f083eb5d964ca8740f94ebdec1d69b85b85a6e1 (patch)
tree917742ce74d4fcb44699a207a41c2c99a14d6b91 /pretyping
parent6cd6f1edae2e2c7b2aaedd039b39caaf1d50aa9f (diff)
parent190ff373ed3728ae816da674ceeae3ba8ffa1919 (diff)
Merge PR #7274: Avoiding introducing dependency on the indices of a term which has no matching clauses.
Diffstat (limited to 'pretyping')
-rw-r--r--pretyping/cases.ml6
1 files changed, 6 insertions, 0 deletions
diff --git a/pretyping/cases.ml b/pretyping/cases.ml
index 6a63fb02f8..ad33297f0a 100644
--- a/pretyping/cases.ml
+++ b/pretyping/cases.ml
@@ -373,6 +373,11 @@ let ltac_interp_realnames lvar = function
| t, IsInd (ty,ind,realnal) -> t, IsInd (ty,ind,List.map (ltac_interp_name lvar) realnal)
| _ as x -> x
+let is_patvar pat =
+ match DAst.get pat with
+ | PatVar _ -> true
+ | _ -> false
+
let coerce_row typing_fun evdref env lvar pats (tomatch,(na,indopt)) =
let loc = loc_of_glob_constr tomatch in
let tycon,realnames = find_tomatch_tycon evdref env loc indopt in
@@ -381,6 +386,7 @@ let coerce_row typing_fun evdref env lvar pats (tomatch,(na,indopt)) =
let typ = nf_evar !evdref j.uj_type in
lvar := make_return_predicate_ltac_lvar !evdref na tomatch j.uj_val !lvar;
let t =
+ if realnames = None && pats <> [] && List.for_all is_patvar pats then NotInd (None,typ) else
try try_find_ind env !evdref typ realnames
with Not_found ->
unify_tomatch_with_patterns evdref env loc typ pats realnames in