diff options
| author | herbelin | 2000-12-18 21:33:48 +0000 |
|---|---|---|
| committer | herbelin | 2000-12-18 21:33:48 +0000 |
| commit | e92f9033dc7c23d0d6ba1ff2beb953df5bea50d8 (patch) | |
| tree | 6efdbf741343e6de73bebc6969f7f2e88558e9a7 | |
| parent | 55875fe68fa0e5a33183be08a919c56ef4d99537 (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.ml | 22 | ||||
| -rw-r--r-- | toplevel/himsg.ml | 4 |
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 = |
