diff options
| author | Hugo Herbelin | 2020-05-14 07:24:53 +0200 |
|---|---|---|
| committer | Hugo Herbelin | 2020-05-14 07:45:23 +0200 |
| commit | 6a85fd439ed9051d0ae87fe134d223ccd1bd94ae (patch) | |
| tree | 3627b591d2c80278997f5a4c150c9f995c7e8dc6 | |
| parent | 91b5990e724acc863a5dba66acc33fd698ac26f0 (diff) | |
Fixes #12322 (anomaly when printing "fun" binders with implicit types).
A pattern-matching clause was missing in 5f314036e4d (PR #11261).
The anomaly triggered in configurations like "fun (x:T) y => ..."
(even in the absence of "Implicit Types").
| -rw-r--r-- | interp/constrextern.ml | 2 | ||||
| -rw-r--r-- | test-suite/output/ImplicitTypes.out | 6 | ||||
| -rw-r--r-- | test-suite/output/ImplicitTypes.v | 3 |
3 files changed, 10 insertions, 1 deletions
diff --git a/interp/constrextern.ml b/interp/constrextern.ml index d5a5bde616..ddf304c37c 100644 --- a/interp/constrextern.ml +++ b/interp/constrextern.ml @@ -836,7 +836,7 @@ let rec flatten_application c = match DAst.get c with let same_binder_type ty nal c = match nal, DAst.get c with - | _::_, GProd (_,_,ty',_) -> glob_constr_eq ty ty' + | _::_, (GProd (_,_,ty',_) | GLambda (_,_,ty',_)) -> glob_constr_eq ty ty' | [], _ -> true | _ -> assert false diff --git a/test-suite/output/ImplicitTypes.out b/test-suite/output/ImplicitTypes.out index 824c260e92..42cb2309e0 100644 --- a/test-suite/output/ImplicitTypes.out +++ b/test-suite/output/ImplicitTypes.out @@ -14,6 +14,12 @@ forall b1 b2, b1 = b2 : Prop fun b => b = b : bool -> Prop +fun b c : bool => b = c + : bool -> bool -> Prop +fun c b : bool => b = c + : bool -> bool -> Prop +fun b1 b2 => b1 = b2 + : bool -> bool -> Prop fix f b (n : nat) {struct n} : bool := match n with | 0 => b diff --git a/test-suite/output/ImplicitTypes.v b/test-suite/output/ImplicitTypes.v index dbc83f9229..205c6a67bf 100644 --- a/test-suite/output/ImplicitTypes.v +++ b/test-suite/output/ImplicitTypes.v @@ -23,6 +23,9 @@ Check forall b1 b2, b1 = b2. (* Check in "fun" *) Check fun b => b = b. +Check fun b c => b = c. +Check fun c b => b = c. +Check fun b1 b2 => b1 = b2. (* Check in binders *) Check fix f b n := match n with 0 => b | S p => f b p end. |
