aboutsummaryrefslogtreecommitdiffhomepage
path: root/pretyping/unification.ml
diff options
context:
space:
mode:
authorGravatar Matthieu Sozeau <mattam@mattam.org>2014-05-09 12:40:32 +0200
committerGravatar Matthieu Sozeau <mattam@mattam.org>2014-05-09 12:40:32 +0200
commit3ffbaec15938bd2dc92753ac3c1e2cc097811f50 (patch)
tree31592728e7a97744a7f53565ad6ee22a4a653ce2 /pretyping/unification.ml
parentb1c0584f24cb3732e1704a85452f4fe535e50f33 (diff)
Fix second-order matching to properly check that the predicate found by
abstraction has the right type. Fixes bug# 3306. Add test-suite files for bugs 3305 and 3306.
Diffstat (limited to 'pretyping/unification.ml')
-rw-r--r--pretyping/unification.ml7
1 files changed, 5 insertions, 2 deletions
diff --git a/pretyping/unification.ml b/pretyping/unification.ml
index 7eca9f2ce..7b6fb262a 100644
--- a/pretyping/unification.ml
+++ b/pretyping/unification.ml
@@ -92,8 +92,11 @@ let abstract_list_all_with_dependencies env evd typ c l =
let evd,b =
Evarconv.second_order_matching empty_transparent_state
env evd ev' argoccs c in
- let p = nf_evar evd (existential_value evd (destEvar ev)) in
- if b then evd, p else error_cannot_find_well_typed_abstraction env evd p l None
+ if b then
+ let p = nf_evar evd (existential_value evd (destEvar ev)) in
+ evd, p
+ else error_cannot_find_well_typed_abstraction env evd
+ (nf_evar evd c) l None
(**)