aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-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 () =