aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorherbelin2000-12-18 21:33:48 +0000
committerherbelin2000-12-18 21:33:48 +0000
commite92f9033dc7c23d0d6ba1ff2beb953df5bea50d8 (patch)
tree6efdbf741343e6de73bebc6969f7f2e88558e9a7
parent55875fe68fa0e5a33183be08a919c56ef4d99537 (diff)
Amélioration message d'erreur mauvais prédicat
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@1142 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--pretyping/cases.ml22
-rw-r--r--toplevel/himsg.ml4
2 files changed, 16 insertions, 10 deletions
diff --git a/pretyping/cases.ml b/pretyping/cases.ml
index e5483e0cf4..ca61af8056 100644
--- a/pretyping/cases.ml
+++ b/pretyping/cases.ml
@@ -1018,19 +1018,25 @@ let build_expected_arity env isevars isdep tomatchl =
Some (build_dependent_inductive indf', fst (get_arity indf'))
| _,NotInd _ -> None
in
- let rec buildrec n = function
+ let rec buildrec n env = function
| [] -> dummy_sort
| tm::ltm ->
match cook n tm with
- | None -> buildrec n ltm
+ | None -> buildrec n env ltm
| Some (ty1,aritysign) ->
- let rec follow n = function
- | d::sign -> mkProd_or_LetIn d (follow (n+1) sign)
+ let rec follow n env = function
+ | d::sign ->
+ mkProd_or_LetIn_name env
+ (follow (n+1) (push_rel d env) sign) d
| [] ->
- if isdep then mkProd (Anonymous, ty1, buildrec (n+1) ltm)
- else buildrec n ltm
- in follow n (List.rev aritysign)
- in buildrec 0 tomatchl
+ if isdep then
+ mkProd (Anonymous, ty1,
+ buildrec (n+1)
+ (push_rel_assum (Anonymous, ty1) env)
+ ltm)
+ else buildrec n env ltm
+ in follow n env (List.rev aritysign)
+ in buildrec 0 env tomatchl
let build_initial_predicate env sigma isdep pred tomatchl =
let cook n = function
diff --git a/toplevel/himsg.ml b/toplevel/himsg.ml
index cdd9b4ad87..2dfea3c3bc 100644
--- a/toplevel/himsg.ml
+++ b/toplevel/himsg.ml
@@ -307,9 +307,9 @@ let explain_wrong_numarg_of_constructor k ctx cstr n =
let explain_wrong_predicate_arity k ctx pred nondep_arity dep_arity=
let pp = prterm_env ctx pred in
- [<'sTR "The elimination predicate " ; pp; 'cUT;
+ [<'sTR "The elimination predicate "; 'sPC; pp; 'fNL;
'sTR "should be of arity" ; 'sPC;
- prterm_env ctx nondep_arity ; 'sPC; 'sTR "(for non dependent case) or" ;
+ prterm_env ctx nondep_arity ; 'sPC; 'sTR "(for non dependent case) or" ;
'sPC; prterm_env ctx dep_arity ; 'sPC; 'sTR "(for dependent case).">]
let explain_needs_inversion k ctx x t =