aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpboutill2012-05-11 20:24:06 +0000
committerpboutill2012-05-11 20:24:06 +0000
commitdfd0b49514120f90ce558cf8b017e2e7c993ef95 (patch)
treee7ee6e5500bd389b7f6ae8906f661db13993de1b
parentda9f3203d3e6255dd3781d05924c8b0261fee544 (diff)
Impossible branches inference fixup (bug 2761)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@15307 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--interp/constrintern.ml2
-rw-r--r--pretyping/cases.ml7
2 files changed, 5 insertions, 4 deletions
diff --git a/interp/constrintern.ml b/interp/constrintern.ml
index ef3408414c..6a9b074105 100644
--- a/interp/constrintern.ml
+++ b/interp/constrintern.ml
@@ -1480,7 +1480,7 @@ let internalize sigma globalenv env allow_patvar lvar c =
[dummy_loc,[],thepats, (* "|p1,..,pn" *)
Option.cata (intern_type env') (GHole(dummy_loc,Evd.CasesType)) rtnpo; (* "=> P" is there were a P "=> _" else *)
dummy_loc,[],list_make (List.length thepats) (PatVar(dummy_loc,Anonymous)), (* "|_,..,_" *)
- GHole(dummy_loc,Evd.CasesType) (* "=> _" *)]))
+ GHole(dummy_loc,Evd.ImpossibleCase) (* "=> _" *)]))
in
let eqns' = List.map (intern_eqn (List.length tms) env) eqns in
GCases (loc, sty, rtnpo, tms, List.flatten eqns')
diff --git a/pretyping/cases.ml b/pretyping/cases.ml
index 871f161abd..cc4b3f07f6 100644
--- a/pretyping/cases.ml
+++ b/pretyping/cases.ml
@@ -67,7 +67,7 @@ let error_needs_inversion env x t =
module type S = sig
val compile_cases :
- loc -> case_style ->
+ loc -> case_style ->
(type_constraint -> env -> evar_map ref -> glob_constr -> unsafe_judgment) * evar_map ref ->
type_constraint ->
env -> glob_constr option * tomatch_tuples * cases_clauses ->
@@ -79,8 +79,9 @@ let rec list_try_compile f = function
| [] -> anomaly "try_find_f"
| h::t ->
try f h
- with UserError _ | TypeError _ | PretypeError _
- | Loc.Exc_located (_,(UserError _ | TypeError _ | PretypeError _)) ->
+ with UserError _ | TypeError _ | PretypeError _ | PatternMatchingError _
+ | Loc.Exc_located
+ (_, (UserError _ | TypeError _ | PretypeError _ | PatternMatchingError _)) ->
list_try_compile f t
let force_name =