diff options
| author | herbelin | 2004-08-06 18:15:24 +0000 |
|---|---|---|
| committer | herbelin | 2004-08-06 18:15:24 +0000 |
| commit | 2e42df1fe1e4b8276e7a4b268002e6a68d3ac619 (patch) | |
| tree | 0510e2cff31bf814cb101d15efdd65d5de1feb00 /kernel | |
| parent | 8bb0d9d3853cdbde4992be9cbde393f19edcdcbf (diff) | |
Amélioration message d'erreur objet de récursion de type non inductif
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@6019 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/inductive.ml | 9 | ||||
| -rw-r--r-- | kernel/type_errors.ml | 2 | ||||
| -rw-r--r-- | kernel/type_errors.mli | 2 |
3 files changed, 7 insertions, 6 deletions
diff --git a/kernel/inductive.ml b/kernel/inductive.ml index 5b2e8998bf..3e2f03871a 100644 --- a/kernel/inductive.ml +++ b/kernel/inductive.ml @@ -668,8 +668,8 @@ let inductive_of_mutfix env ((nvect,bodynum),(names,types,bodies as recdef)) = or bodynum >= nbfix then anomaly "Ill-formed fix term"; let fixenv = push_rec_types recdef env in - let raise_err i err = - error_ill_formed_rec_body fixenv err names i in + let raise_err env i err = + error_ill_formed_rec_body env err names i in (* Check the i-th definition with recarg k *) let find_ind i k def = if k < 0 then anomaly "negative recarg position"; @@ -684,11 +684,12 @@ let inductive_of_mutfix env ((nvect,bodynum),(names,types,bodies as recdef)) = (* get the inductive type of the fixpoint *) let (mind, _) = try find_inductive env a - with Not_found -> raise_err i RecursionNotOnInductiveType in + with Not_found -> + raise_err env i (RecursionNotOnInductiveType a) in (mind, (env', b)) else check_occur env' (n+1) b else anomaly "check_one_fix: Bad occurrence of recursive call" - | _ -> raise_err i NotEnoughAbstractionInFixBody in + | _ -> raise_err env i NotEnoughAbstractionInFixBody in check_occur fixenv 1 def in (* Do it on every fixpoint *) let rv = array_map2_i find_ind nvect bodies in diff --git a/kernel/type_errors.ml b/kernel/type_errors.ml index 73aaaed937..9e8d58fa8c 100644 --- a/kernel/type_errors.ml +++ b/kernel/type_errors.ml @@ -19,7 +19,7 @@ open Reduction type guard_error = (* Fixpoints *) | NotEnoughAbstractionInFixBody - | RecursionNotOnInductiveType + | RecursionNotOnInductiveType of constr | RecursionOnIllegalTerm of int * constr * int list * int list | NotEnoughArgumentsForFixCall of int (* CoFixpoints *) diff --git a/kernel/type_errors.mli b/kernel/type_errors.mli index f9f2e04a48..ffa16968c7 100644 --- a/kernel/type_errors.mli +++ b/kernel/type_errors.mli @@ -21,7 +21,7 @@ open Environ type guard_error = (* Fixpoints *) | NotEnoughAbstractionInFixBody - | RecursionNotOnInductiveType + | RecursionNotOnInductiveType of constr | RecursionOnIllegalTerm of int * constr * int list * int list | NotEnoughArgumentsForFixCall of int (* CoFixpoints *) |
