From 4e18be02a03ab478125aa6f08b30e738c3568572 Mon Sep 17 00:00:00 2001 From: Hugo Herbelin Date: Fri, 23 Feb 2018 14:12:12 +0100 Subject: Fixes #6821 (bug in protecting notation printing from infinite eta-expansion). More precisely when matching "f t" with "(fun ?x => .. ((fun ?x' => ?y) ?z') ..) ?z" do not allow expansion of f since otherwise, we recursively have to match "f t" with the same pattern. --- interp/notation_ops.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'interp/notation_ops.ml') diff --git a/interp/notation_ops.ml b/interp/notation_ops.ml index c65f4785ef..9bc41a996b 100644 --- a/interp/notation_ops.ml +++ b/interp/notation_ops.ml @@ -1132,7 +1132,7 @@ let rec match_ inner u alp metas sigma a1 a2 = else f1,l1, f2, l2 in let may_use_eta = does_not_come_from_already_eta_expanded_var f1 in List.fold_left2 (match_ may_use_eta u alp metas) - (match_in u alp metas sigma f1 f2) l1 l2 + (match_hd u alp metas sigma f1 f2) l1 l2 | GLambda (na1,bk1,t1,b1), NLambda (na2,t2,b2) -> match_extended_binders false u alp metas na1 na2 bk1 t1 (match_in u alp metas sigma t1 t2) b1 b2 | GProd (na1,bk1,t1,b1), NProd (na2,t2,b2) -> -- cgit v1.2.3