aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2001-10-29 12:28:11 +0000
committerGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2001-10-29 12:28:11 +0000
commitcda91517b5b456b76d3614824fb567bcdf2877fa (patch)
treeb643c616b926848f10b75958bdbe3763a04aa7bc
parent53668f44ec4726f06d2bf79658d115063bcc215d (diff)
Amérioration message d'erreur en cas d'échec du filtrage de premier ordre
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@2144 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--pretyping/evarconv.ml15
1 files changed, 10 insertions, 5 deletions
diff --git a/pretyping/evarconv.ml b/pretyping/evarconv.ml
index 0e5b9d6ce..2858151c1 100644
--- a/pretyping/evarconv.ml
+++ b/pretyping/evarconv.ml
@@ -141,9 +141,10 @@ and evar_eqappr_x env isevars pbty (term1,l1 as appr1) (term2,l2 as appr2) =
let f1 () =
(List.length l1 <= List.length l2) &
let (deb2,rest2) = list_chop (List.length l2-List.length l1) l2 in
+ (* First compare extra args for better failure message *)
+ list_for_all2eq (evar_conv_x env isevars CONV) l1 rest2 &
solve_simple_eqn evar_conv_x env isevars
(pbty,ev1,applist(term2,deb2))
- & list_for_all2eq (evar_conv_x env isevars CONV) l1 rest2
and f4 () =
match eval_flexible_term env flex2 with
| Some v2 ->
@@ -157,9 +158,10 @@ and evar_eqappr_x env isevars pbty (term1,l1 as appr1) (term2,l2 as appr2) =
let f1 () =
(List.length l2 <= List.length l1) &
let (deb1,rest1) = list_chop (List.length l1-List.length l2) l1 in
+ (* First compare extra args for better failure message *)
+ list_for_all2eq (evar_conv_x env isevars CONV) rest1 l2 &
solve_simple_eqn evar_conv_x env isevars
- (pbty,ev2,applist(term1,deb1))
- & list_for_all2eq (evar_conv_x env isevars CONV) rest1 l2
+ (pbty,ev2,applist(term1,deb1))
and f4 () =
match eval_flexible_term env flex1 with
| Some v1 ->
@@ -195,16 +197,19 @@ and evar_eqappr_x env isevars pbty (term1,l1 as appr1) (term2,l2 as appr2) =
| Flexible ev1, Rigid _ ->
(List.length l1 <= List.length l2) &
let (deb2,rest2) = list_chop (List.length l2-List.length l1) l2 in
+ (* First compare extra args for better failure message *)
+ list_for_all2eq (evar_conv_x env isevars CONV) l1 rest2 &
solve_simple_eqn evar_conv_x env isevars
(pbty,ev1,applist(term2,deb2))
- & list_for_all2eq (evar_conv_x env isevars CONV) l1 rest2
| Rigid _, Flexible ev2 ->
(List.length l2 <= List.length l1) &
let (deb1,rest1) = list_chop (List.length l1-List.length l2) l1 in
+ (* First compare extra args for better failure message *)
+ list_for_all2eq (evar_conv_x env isevars CONV) rest1 l2 &
solve_simple_eqn evar_conv_x env isevars
(pbty,ev2,applist(term1,deb1))
- & list_for_all2eq (evar_conv_x env isevars CONV) rest1 l2
+
| MaybeFlexible flex1, Rigid _ ->
let f3 () =