aboutsummaryrefslogtreecommitdiff
path: root/pretyping/structures.ml
diff options
context:
space:
mode:
authorJan-Oliver Kaiser2020-05-14 17:08:20 +0200
committerPierre Roux2021-04-22 09:16:22 +0200
commit2cbc36c6ae4ca22e000dbb045c865f54a454aca3 (patch)
tree28cfb03cc4af70bcd86f7058571aa5a44da270b0 /pretyping/structures.ml
parent3442bfa0e7c7e5ba3ce7d62f16d221c2e6da03cf (diff)
Enable canonical `fun _ => _` projections.
Diffstat (limited to 'pretyping/structures.ml')
-rw-r--r--pretyping/structures.ml2
1 files changed, 2 insertions, 0 deletions
diff --git a/pretyping/structures.ml b/pretyping/structures.ml
index 3ef6e98373..145663d3b9 100644
--- a/pretyping/structures.ml
+++ b/pretyping/structures.ml
@@ -161,6 +161,7 @@ let rec of_constr env t =
let patt, n, args = of_constr env f in
patt, n, args @ Array.to_list vargs
| Rel n -> Default_cs, Some n, []
+ | Lambda (_, _, b) -> let patt, _, _ = of_constr env b in patt, None, []
| Prod (_,a,b) when Vars.noccurn 1 b -> Prod_cs, None, [a; Vars.lift (-1) b]
| Proj (p, c) -> Proj_cs (Names.Projection.repr p), None, [c]
| Sort s -> Sort_cs (Sorts.family s), None, []
@@ -222,6 +223,7 @@ let compute_canonical_projections env ~warn (gref,ind) =
let lpj = keep_true_projections lpj in
let nenv = Termops.push_rels_assum sign env in
List.fold_left2 (fun acc (spopt, canonical) t ->
+ let t = EConstr.Unsafe.to_constr (shrink_eta env (EConstr.of_constr t)) in
if canonical
then
Option.cata (fun proji_sp ->