diff options
author | 2008-01-17 16:04:42 +0000 | |
---|---|---|
committer | 2008-01-17 16:04:42 +0000 | |
commit | cd21f033922b22f855111e171ece9591009cf15b (patch) | |
tree | 5bd3a2f04a8fda4db42df0fc8aa9e5cb387cd48b /contrib | |
parent | 6a018defe4db779522f6ab6ae31f04adb886d49c (diff) |
Add new LetPattern construct to replace dest. syntax: let| pat := t in b is backwards compatible. Update CHANGES with things i've done.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@10446 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/funind/indfun.ml | 3 | ||||
-rw-r--r-- | contrib/funind/rawterm_to_relation.ml | 2 | ||||
-rw-r--r-- | contrib/funind/rawtermops.mli | 2 | ||||
-rw-r--r-- | contrib/subtac/subtac_pretyping_F.ml | 7 |
4 files changed, 12 insertions, 2 deletions
diff --git a/contrib/funind/indfun.ml b/contrib/funind/indfun.ml index 97f7c1d97..d3e18371b 100644 --- a/contrib/funind/indfun.ml +++ b/contrib/funind/indfun.ml @@ -601,6 +601,9 @@ let rec add_args id new_args b = add_args id new_args b2 ) + | CLetPattern(loc,p,b,c) -> + CLetPattern(loc,p,add_args id new_args b,add_args id new_args c) + | CIf(loc,b1,(na,b_option),b2,b3) -> CIf(loc,add_args id new_args b1, (na,Option.map (add_args id new_args) b_option), diff --git a/contrib/funind/rawterm_to_relation.ml b/contrib/funind/rawterm_to_relation.ml index 9bea4f1e0..e6b3ba3ec 100644 --- a/contrib/funind/rawterm_to_relation.ml +++ b/contrib/funind/rawterm_to_relation.ml @@ -689,7 +689,7 @@ let rec build_entry_lc env funnames avoid rt : rawconstr build_entry_return = build_entry_lc env funnames avoid b | RDynamic _ -> error "Not handled RDynamic" and build_entry_lc_from_case env funname make_discr - (el:tomatch_tuple) + (el:tomatch_tuples) (brl:Rawterm.cases_clauses) avoid : rawconstr build_entry_return = match el with diff --git a/contrib/funind/rawtermops.mli b/contrib/funind/rawtermops.mli index 6632061d4..358c6ba6c 100644 --- a/contrib/funind/rawtermops.mli +++ b/contrib/funind/rawtermops.mli @@ -22,7 +22,7 @@ val mkRApp : rawconstr*(rawconstr list) -> rawconstr val mkRLambda : Names.name*rawconstr*rawconstr -> rawconstr val mkRProd : Names.name*rawconstr*rawconstr -> rawconstr val mkRLetIn : Names.name*rawconstr*rawconstr -> rawconstr -val mkRCases : rawconstr option * tomatch_tuple * cases_clauses -> rawconstr +val mkRCases : rawconstr option * tomatch_tuples * cases_clauses -> rawconstr val mkRSort : rawsort -> rawconstr val mkRHole : unit -> rawconstr (* we only build Evd.BinderType Anonymous holes *) val mkRCast : rawconstr* rawconstr -> rawconstr diff --git a/contrib/subtac/subtac_pretyping_F.ml b/contrib/subtac/subtac_pretyping_F.ml index a2d5be66c..0e9e04213 100644 --- a/contrib/subtac/subtac_pretyping_F.ml +++ b/contrib/subtac/subtac_pretyping_F.ml @@ -488,6 +488,13 @@ module SubtacPretyping_F (Coercion : Coercion.S) = struct in { uj_val = v; uj_type = p } + | RLetPattern (loc, c, p) -> + (* Just use cases typing *) + let j = + pretype tycon env isevars lvar + (RCases (loc, None, [c], [p])) + in j + | RCases (loc,po,tml,eqns) -> Cases.compile_cases loc ((fun vtyc env -> pretype vtyc env isevars lvar),isevars) |