From f9695eb4bc5b377a02f49ee485d7fe9be122c183 Mon Sep 17 00:00:00 2001 From: Hugo Herbelin Date: Sat, 11 Jun 2016 07:36:46 +0200 Subject: Fixing #4782 (a typing error not captured when dealing with bindings). Trying to now catch all unification errors, but without a clear view at whether some errors could be tolerated at the point of checking the type of the binding. --- proofs/clenv.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'proofs/clenv.ml') diff --git a/proofs/clenv.ml b/proofs/clenv.ml index 88e1bce95..09e77602d 100644 --- a/proofs/clenv.ml +++ b/proofs/clenv.ml @@ -459,7 +459,7 @@ let clenv_unify_binding_type clenv c t u = let evd,c = w_coerce_to_type (cl_env clenv) clenv.evd c t u in TypeProcessed, { clenv with evd = evd }, c with - | PretypeError (_,_,ActualTypeNotCoercible (_,_,NotClean _)) as e -> + | PretypeError (_,_,ActualTypeNotCoercible _) as e -> raise e | e when precatchable_exception e -> TypeNotProcessed, clenv, c -- cgit v1.2.3 From 827663982e9cdf502f21727677515cf2318aa41d Mon Sep 17 00:00:00 2001 From: Hugo Herbelin Date: Sun, 12 Jun 2016 14:53:38 +0200 Subject: Another fix to #4782 (a typing error not captured when dealing with bindings). The tentative fix in f9695eb4b (which I was afraid it might be too strong, since it was implying failing more often) indeed broke other things (see #4813). --- proofs/clenv.ml | 3 ++- test-suite/bugs/closed/4782.v | 1 + test-suite/bugs/closed/4813.v | 9 +++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 test-suite/bugs/closed/4813.v (limited to 'proofs/clenv.ml') diff --git a/proofs/clenv.ml b/proofs/clenv.ml index 09e77602d..79b331a27 100644 --- a/proofs/clenv.ml +++ b/proofs/clenv.ml @@ -459,7 +459,8 @@ let clenv_unify_binding_type clenv c t u = let evd,c = w_coerce_to_type (cl_env clenv) clenv.evd c t u in TypeProcessed, { clenv with evd = evd }, c with - | PretypeError (_,_,ActualTypeNotCoercible _) as e -> + | PretypeError (_,_,ActualTypeNotCoercible (_,_, + (NotClean _ | ConversionFailed _))) as e -> raise e | e when precatchable_exception e -> TypeNotProcessed, clenv, c diff --git a/test-suite/bugs/closed/4782.v b/test-suite/bugs/closed/4782.v index 4622b18d2..ed4443786 100644 --- a/test-suite/bugs/closed/4782.v +++ b/test-suite/bugs/closed/4782.v @@ -6,3 +6,4 @@ Inductive p : Prop := consp : forall (e : r) (x : type e), cond e x -> p. Goal p. Fail apply consp with (fun _ : bool => mk_r unit (fun x => True)) nil. + diff --git a/test-suite/bugs/closed/4813.v b/test-suite/bugs/closed/4813.v new file mode 100644 index 000000000..5f8ea74c1 --- /dev/null +++ b/test-suite/bugs/closed/4813.v @@ -0,0 +1,9 @@ +(* On the strength of "apply with" (see also #4782) *) + +Record ProverT := { Facts : Type }. +Record ProverT_correct (P : ProverT) := { Valid : Facts P -> Prop ; + Valid_weaken : Valid = Valid }. +Definition reflexivityValid (_ : unit) := True. +Definition reflexivityProver_correct : ProverT_correct {| Facts := unit |}. +Proof. + eapply Build_ProverT_correct with (Valid := reflexivityValid). -- cgit v1.2.3