diff options
author | herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2001-03-11 21:30:04 +0000 |
---|---|---|
committer | herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2001-03-11 21:30:04 +0000 |
commit | 3aa0e70a974c0b35801b42f8879c96c3188d98cf (patch) | |
tree | 96eec81ec2ff22271451cf10f1bd978b888d97d8 /pretyping/pretype_errors.ml | |
parent | c0754e3ae4f63466dd1b5ed535018bcc69bbaa5d (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.ml | 76 |
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) |