diff options
| author | herbelin | 2006-12-03 22:48:37 +0000 |
|---|---|---|
| committer | herbelin | 2006-12-03 22:48:37 +0000 |
| commit | f4f2c6d3221caa561a42468f0f9d46c3b80e1807 (patch) | |
| tree | 8b012faa6d7eab18f8823ed13799ff551aceeb12 /interp | |
| parent | 6aae3bd0da8edc2ec5adcff7d44155e0a59597c6 (diff) | |
Remplacement de la dépendance de G_vernac en G_constr (source
d'incohérences dans les dépendances en l'absence de g_constr.mli) par
une dépendance en Topconstr
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@9409 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'interp')
| -rw-r--r-- | interp/topconstr.ml | 18 | ||||
| -rw-r--r-- | interp/topconstr.mli | 4 |
2 files changed, 22 insertions, 0 deletions
diff --git a/interp/topconstr.ml b/interp/topconstr.ml index bd36002eba..da3f73149f 100644 --- a/interp/topconstr.ml +++ b/interp/topconstr.ml @@ -736,6 +736,24 @@ let mkLambdaC (idl,a,b) = CLambdaN (dummy_loc,[idl,a],b) let mkLetInC (id,a,b) = CLetIn (dummy_loc,id,a,b) let mkProdC (idl,a,b) = CProdN (dummy_loc,[idl,a],b) +let rec mkCProdN loc bll c = + match bll with + | LocalRawAssum ((loc1,_)::_ as idl,t) :: bll -> + CProdN (loc,[idl,t],mkCProdN (join_loc loc1 loc) bll c) + | LocalRawDef ((loc1,_) as id,b) :: bll -> + CLetIn (loc,id,b,mkCProdN (join_loc loc1 loc) bll c) + | [] -> c + | LocalRawAssum ([],_) :: bll -> mkCProdN loc bll c + +let rec mkCLambdaN loc bll c = + match bll with + | LocalRawAssum ((loc1,_)::_ as idl,t) :: bll -> + CLambdaN (loc,[idl,t],mkCLambdaN (join_loc loc1 loc) bll c) + | LocalRawDef ((loc1,_) as id,b) :: bll -> + CLetIn (loc,id,b,mkCLambdaN (join_loc loc1 loc) bll c) + | [] -> c + | LocalRawAssum ([],_) :: bll -> mkCLambdaN loc bll c + let rec abstract_constr_expr c = function | [] -> c | LocalRawDef (x,b)::bl -> mkLetInC(x,b,abstract_constr_expr c bl) diff --git a/interp/topconstr.mli b/interp/topconstr.mli index 5ceaea67a1..7d1a7a8096 100644 --- a/interp/topconstr.mli +++ b/interp/topconstr.mli @@ -177,6 +177,10 @@ val coerce_to_id : constr_expr -> identifier located val abstract_constr_expr : constr_expr -> local_binder list -> constr_expr val prod_constr_expr : constr_expr -> local_binder list -> constr_expr +(* Same as [abstract_constr_expr] and [prod_constr_expr], with location *) +val mkCLambdaN : loc -> local_binder list -> constr_expr -> constr_expr +val mkCProdN : loc -> local_binder list -> constr_expr -> constr_expr + (* For binders parsing *) (* Includes let binders *) |
