aboutsummaryrefslogtreecommitdiffhomepage
path: root/pretyping/pretype_errors.ml
diff options
context:
space:
mode:
authorGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2001-03-11 21:30:04 +0000
committerGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2001-03-11 21:30:04 +0000
commit3aa0e70a974c0b35801b42f8879c96c3188d98cf (patch)
tree96eec81ec2ff22271451cf10f1bd978b888d97d8 /pretyping/pretype_errors.ml
parentc0754e3ae4f63466dd1b5ed535018bcc69bbaa5d (diff)
Déplacement des erreurs non noyau dans Pretype_errors ou Cases; localisation
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@1445 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'pretyping/pretype_errors.ml')
-rw-r--r--pretyping/pretype_errors.ml76
1 files changed, 46 insertions, 30 deletions
diff --git a/pretyping/pretype_errors.ml b/pretyping/pretype_errors.ml
index ff57b0012..985b7975c 100644
--- a/pretyping/pretype_errors.ml
+++ b/pretyping/pretype_errors.ml
@@ -3,65 +3,81 @@
open Names
open Sign
+open Term
open Environ
open Type_errors
open Rawterm
-let raise_pretype_error (loc,k,ctx,te) =
- Stdpp.raise_with_loc loc (TypeError(k,ctx,te))
+type ml_case_error =
+ | MlCaseAbsurd
+ | MlCaseDependent
+
+type pretype_error =
+ (* Old Case *)
+ | MlCase of ml_case_error
+ | CantFindCaseType of constr
+ (* Unification *)
+ | OccurCheck of int * constr
+ | NotClean of int * constr
+ (* Pretyping *)
+ | VarNotFound of identifier
+ | UnexpectedType of constr * constr
+ | NotProduct of constr
+
+exception PretypeError of env * pretype_error
-let error_var_not_found_loc loc k s =
- raise_pretype_error (loc,k, Global.env() (*bidon*), VarNotFound s)
+let raise_pretype_error (loc,ctx,te) =
+ Stdpp.raise_with_loc loc (PretypeError(ctx,te))
+
+let raise_located_type_error (loc,k,ctx,te) =
+ Stdpp.raise_with_loc loc (TypeError(k,ctx,te))
let error_cant_find_case_type_loc loc env expr =
- raise_pretype_error (loc, CCI, env, CantFindCaseType expr)
+ raise_pretype_error (loc, env, CantFindCaseType expr)
+
+let error_ill_formed_branch_loc loc k env c i actty expty =
+ raise_located_type_error (loc, k, env, IllFormedBranch (c,i,actty,expty))
let error_actual_type_loc loc env c actty expty =
- raise_pretype_error (loc, CCI, env, ActualType (c,actty,expty))
+ raise_located_type_error (loc, CCI, env, ActualType (c,actty,expty))
let error_cant_apply_not_functional_loc loc env rator randl =
- raise_pretype_error
+ raise_located_type_error
(loc,CCI,env, CantApplyNonFunctional (rator,randl))
let error_cant_apply_bad_type_loc loc env t rator randl =
- raise_pretype_error (loc, CCI, env, CantApplyBadType (t,rator,randl))
+ raise_located_type_error (loc, CCI, env, CantApplyBadType (t,rator,randl))
let error_ill_formed_branch k env c i actty expty =
raise (TypeError (k, env, IllFormedBranch (c,i,actty,expty)))
let error_number_branches_loc loc k env c ct expn =
- raise_pretype_error (loc, k, env, NumberBranches (c,ct,expn))
+ raise_located_type_error (loc, k, env, NumberBranches (c,ct,expn))
let error_case_not_inductive_loc loc k env c ct =
- raise_pretype_error (loc, k, env, CaseNotInductive (c,ct))
+ raise_located_type_error (loc, k, env, CaseNotInductive (c,ct))
-(* Pattern-matching errors *)
-let error_bad_pattern_loc loc k cstr ind =
- raise_pretype_error (loc, k, Global.env(), BadPattern (cstr,ind))
+(*s Implicit arguments synthesis errors *)
-let error_bad_constructor_loc loc k cstr ind =
- raise_pretype_error (loc, k, Global.env(), BadConstructor (cstr,ind))
+let error_occur_check env ev c =
+ raise (PretypeError (env, OccurCheck (ev,c)))
-let error_wrong_numarg_constructor_loc loc k c n =
- raise_pretype_error (loc, k, Global.env(), WrongNumargConstructor (c,n))
+let error_not_clean env ev c =
+ raise (PretypeError (env, NotClean (ev,c)))
-let error_wrong_predicate_arity_loc loc env c n1 n2 =
- raise_pretype_error (loc, CCI, env, WrongPredicateArity (c,n1,n2))
+(*s Ml Case errors *)
-let error_needs_inversion k env x t =
- raise (TypeError (k, env, NeedsInversion (x,t)))
+let error_ml_case_loc loc env mes =
+ raise_pretype_error (loc, env, MlCase mes)
-let error_ill_formed_branch_loc loc k env c i actty expty =
- raise_pretype_error (loc, k, env, IllFormedBranch (c,i,actty,expty))
+(*s Pretyping errors *)
-(*s Implicit arguments synthesis errors *)
+let error_var_not_found_loc loc s =
+ raise_pretype_error (loc, Global.env() (*bidon*), VarNotFound s)
let error_unexpected_type_loc loc env actty expty =
- raise_pretype_error (loc, CCI, env, UnexpectedType (actty, expty))
-
-let error_occur_check k env ev c =
- raise (TypeError (k, env, OccurCheck (ev,c)))
+ raise_pretype_error (loc, env, UnexpectedType (actty, expty))
-let error_not_clean k env ev c =
- raise (TypeError (k, env, NotClean (ev,c)))
+let error_not_product_loc loc env c =
+ raise_pretype_error (loc, env, NotProduct c)