aboutsummaryrefslogtreecommitdiffhomepage
path: root/parsing
diff options
context:
space:
mode:
authorGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2000-05-02 11:21:56 +0000
committerGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2000-05-02 11:21:56 +0000
commit60524abd12b7719a5c1f57170770af3c37a78d07 (patch)
tree0986f671cc5354ff6ec4f73bc11c85777b272fe0 /parsing
parente867509591c1e8fad3fd764da652deb28d293d49 (diff)
Bug redondance entre 'RRef (RMeta _)' et 'PMeta _'
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@394 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'parsing')
-rw-r--r--parsing/astterm.ml9
-rw-r--r--parsing/termast.ml2
2 files changed, 6 insertions, 5 deletions
diff --git a/parsing/astterm.ml b/parsing/astterm.ml
index 4e556e877..895de7df1 100644
--- a/parsing/astterm.ml
+++ b/parsing/astterm.ml
@@ -330,7 +330,7 @@ let dbize k allow_soapp sigma =
Array.of_list (List.map (dbrec env) cl))
| Node(loc,"ISEVAR",[]) -> RHole (Some loc)
- | Node(loc,"META",[Num(_,n)]) -> RRef (loc,RMeta n)
+ | Node(loc,"META",[Num(_,n)]) -> RMeta (loc, n)
| Node(loc,"PROP", []) -> RSort(loc,RProp Null)
| Node(loc,"SET", []) -> RSort(loc,RProp Pos)
@@ -346,7 +346,7 @@ let dbize k allow_soapp sigma =
| Node(loc,"SOAPP", Num(locn,n)::args) when allow_soapp ->
(* Hack special pour l'interprétation des constr_pattern *)
if n<0 then error "Metavariable numbers must be positive" else
- RApp (loc,RRef (locn,RMeta (-n)),List.map (dbrec env) args)
+ RApp (loc,RMeta (locn,-n),List.map (dbrec env) args)
| Node(loc,opn,tl) ->
anomaly ("dbize found operator "^opn^" with "^
@@ -576,7 +576,6 @@ let rec pat_of_ref metas vars = function
| RInd (ip,ctxt) -> RInd (ip, ctxt)
| RConstruct(cp,ctxt) ->RConstruct(cp, ctxt)
| REVar (n,ctxt) -> REVar (n, ctxt)
- | RMeta n -> metas := n::!metas; RMeta n
| RAbst _ -> error "pattern_of_rawconstr: not implemented"
| RVar _ -> assert false (* Capturé dans pattern_of_raw *)
@@ -584,13 +583,15 @@ and pat_of_raw metas vars = function
| RRef (_,RVar id) ->
(try PRel (list_index (Name id) vars)
with Not_found -> PRef (RVar id))
+ | RMeta (_,n) ->
+ metas := n::!metas; PMeta (Some n)
| RRef (_,r) ->
PRef (pat_of_ref metas vars r)
| RApp (_,c,cl) ->
PApp (pat_of_raw metas vars c,
Array.of_list (List.map (pat_of_raw metas vars) cl))
(* Petit hack pour ne pas réécrire une interprétation complète des patterns*)
- | RApp (_,RRef (_,RMeta n),cl) when n<0 ->
+ | RApp (_,RMeta (_,n),cl) when n<0 ->
PSoApp (-n, List.map (pat_of_raw metas vars) cl)
| RBinder (_,bk,na,c1,c2) ->
PBinder (bk, na, pat_of_raw metas vars c1,
diff --git a/parsing/termast.ml b/parsing/termast.ml
index a044c741c..183c015ea 100644
--- a/parsing/termast.ml
+++ b/parsing/termast.ml
@@ -133,7 +133,6 @@ let ast_of_ref = function
| RConstruct (cstr,ctxt) -> ast_of_constructor_ref (cstr,ids_of_ctxt ctxt)
| RVar id -> ast_of_ident id
| REVar (ev,ctxt) -> ast_of_existential_ref (ev,ids_of_ctxt ctxt)
- | RMeta n -> ope("META",[num n])
(**********************************************************************)
(* conversion of patterns *)
@@ -216,6 +215,7 @@ let ast_of_app impl f args =
let rec ast_of_raw = function
| RRef (_,ref) -> ast_of_ref ref
+ | RMeta (_,n) -> ope("META",[num n])
| RApp (_,f,args) ->
let (f,args) =
skip_coercion (function RRef(_,r) -> Some r | _ -> None) (f,args) in