aboutsummaryrefslogtreecommitdiff
path: root/pretyping/evarconv.ml
diff options
context:
space:
mode:
authorpboutill2010-05-20 12:57:40 +0000
committerpboutill2010-05-20 12:57:40 +0000
commitea188f154f86960008df67fa0266a3aa648ff1e7 (patch)
treedcc392b3078d369f2994a6fc81d209526005d45a /pretyping/evarconv.ml
parente7fc963667a6cfbf9f8516f49ea1dcb9d6779f2d (diff)
Fix bug 2307
Evars of source "ImpossibleCase" that remain undefined at the end of case analysis are now defined to ID (forall A : Type, A -> A). git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@13023 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'pretyping/evarconv.ml')
-rw-r--r--pretyping/evarconv.ml8
1 files changed, 6 insertions, 2 deletions
diff --git a/pretyping/evarconv.ml b/pretyping/evarconv.ml
index ad4e700897..486fd05b3d 100644
--- a/pretyping/evarconv.ml
+++ b/pretyping/evarconv.ml
@@ -548,11 +548,15 @@ let apply_conversion_problem_heuristic env evd pbty t1 t2 =
let consider_remaining_unif_problems env evd =
let (evd,pbs) = extract_all_conv_pbs evd in
- List.fold_left
+ let heuristic_solved_evd = List.fold_left
(fun evd (pbty,env,t1,t2) ->
let evd', b = apply_conversion_problem_heuristic env evd pbty t1 t2 in
if b then evd' else Pretype_errors.error_cannot_unify env evd (t1, t2))
- evd pbs
+ evd pbs in
+ Evd.fold_undefined (fun ev ev_info evd' -> match ev_info.evar_source with
+ |_,ImpossibleCase ->
+ Evd.define ev (j_type (coq_unit_judge ())) evd'
+ |_ -> evd') heuristic_solved_evd heuristic_solved_evd
(* Main entry points *)