aboutsummaryrefslogtreecommitdiffhomepage
path: root/kernel
diff options
context:
space:
mode:
authorGravatar ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7>2013-08-04 19:15:28 +0000
committerGravatar ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7>2013-08-04 19:15:28 +0000
commit4372b5bc27e7ffcb4bff2cf5c093cdbafeddfe83 (patch)
tree0b76ad21b4123268a6338610bad4b2b468c3aac1 /kernel
parent6fb58f97c756fcd4841876edc6da4001d23d8bbb (diff)
Fixing #2846: Uncaught exception Reduction.NotArity.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16662 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'kernel')
-rw-r--r--kernel/indtypes.ml7
-rw-r--r--kernel/indtypes.mli2
2 files changed, 6 insertions, 3 deletions
diff --git a/kernel/indtypes.ml b/kernel/indtypes.ml
index e0bfb69ae..a69537231 100644
--- a/kernel/indtypes.ml
+++ b/kernel/indtypes.ml
@@ -45,7 +45,7 @@ type inductive_error =
| SameNamesTypes of Id.t
| SameNamesConstructors of Id.t
| SameNamesOverlap of Id.t list
- | NotAnArity of Id.t
+ | NotAnArity of env * constr
| BadEntry
| LargeNonPropInductiveNotInType
@@ -262,7 +262,10 @@ let typecheck_inductive env mie =
let ind_min_levels = inductive_levels arities inds in
let inds, cst =
Array.fold_map2' (fun ((id,full_arity,ar_level),cn,info,lc,_) lev cst ->
- let sign, s = dest_arity env full_arity in
+ let sign, s =
+ try dest_arity env full_arity
+ with NotArity -> raise (InductiveError (NotAnArity (env, full_arity)))
+ in
let status,cst = match s with
| Type u when ar_level != None (* Explicitly polymorphic *)
&& no_upper_constraints u cst ->
diff --git a/kernel/indtypes.mli b/kernel/indtypes.mli
index 0d3d1bdff..ce789b00e 100644
--- a/kernel/indtypes.mli
+++ b/kernel/indtypes.mli
@@ -28,7 +28,7 @@ type inductive_error =
| SameNamesTypes of Id.t
| SameNamesConstructors of Id.t
| SameNamesOverlap of Id.t list
- | NotAnArity of Id.t
+ | NotAnArity of env * constr
| BadEntry
| LargeNonPropInductiveNotInType