summaryrefslogtreecommitdiffstats
path: root/camlp4/ocaml_src/meta/pa_extend.ml
diff options
context:
space:
mode:
authorDaniel de Rauglaudre <daniel.de_rauglaudre@inria.fr>2002-01-24 13:26:01 +0000
committerDaniel de Rauglaudre <daniel.de_rauglaudre@inria.fr>2002-01-24 13:26:01 +0000
commit5827cbc88ea41170aa5dcf64576ebc81a988824e (patch)
tree74d1c265a33a1b1d3d5193424988eaee1bed61cb /camlp4/ocaml_src/meta/pa_extend.ml
parent0032c482a2024b7b3ceb593a494b1a8b10794f2c (diff)
-
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@4307 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'camlp4/ocaml_src/meta/pa_extend.ml')
-rw-r--r--camlp4/ocaml_src/meta/pa_extend.ml41
1 files changed, 8 insertions, 33 deletions
diff --git a/camlp4/ocaml_src/meta/pa_extend.ml b/camlp4/ocaml_src/meta/pa_extend.ml
index 91a1b7e24..650e4ac71 100644
--- a/camlp4/ocaml_src/meta/pa_extend.ml
+++ b/camlp4/ocaml_src/meta/pa_extend.ml
@@ -1105,7 +1105,7 @@ let is_global e =
| Some gl -> List.exists (fun n -> n.tvar = e.name.tvar) gl
;;
-let text_of_entry loc gmod gl e =
+let text_of_entry loc gmod e =
let ent =
let x = e.name in
let loc = e.name.loc in
@@ -1125,33 +1125,6 @@ let text_of_entry loc gmod gl e =
Some pos -> MLast.ExApp (loc, MLast.ExUid (loc, "Some"), pos)
| None -> MLast.ExUid (loc, "None")
in
- let levels =
- if !quotify && is_global e gl && e.pos = None then
- let rec loop =
- function
- [] -> []
- | [level] ->
- let level =
- let rule =
- let psymbol =
- let s =
- let n = "a_" ^ e.name.tvar in
- let e = mk_name loc (MLast.ExLid (loc, n)) in
- {used = []; text = TXnterm (loc, e, None);
- styp = STlid (loc, "ast")}
- in
- {pattern = Some (MLast.PaLid (loc, "a")); symbol = s}
- in
- {prod = [psymbol]; action = Some (MLast.ExLid (loc, "a"))}
- in
- {level with rules = rule :: level.rules}
- in
- [level]
- | level :: levels -> level :: loop levels
- in
- loop e.levels
- else e.levels
- in
let txt =
List.fold_right
(fun level txt ->
@@ -1178,7 +1151,7 @@ let text_of_entry loc gmod gl e =
txt)
in
txt)
- levels (MLast.ExUid (loc, "[]"))
+ e.levels (MLast.ExUid (loc, "[]"))
in
ent, pos, txt
;;
@@ -1188,11 +1161,13 @@ let let_in_of_extend loc gmod functor_version gl el args =
Some (n1 :: _ as nl) ->
check_use nl el;
let ll =
+ let same_tvar e n = e.name.tvar = n.tvar in
List.fold_right
(fun e ll ->
match e.name.expr with
MLast.ExLid (_, _) ->
- if List.exists (fun n -> e.name.tvar = n.tvar) nl then ll
+ if List.exists (same_tvar e) nl then ll
+ else if List.exists (same_tvar e) ll then ll
else e.name :: ll
| _ -> ll)
el []
@@ -1286,7 +1261,7 @@ let text_of_extend loc gmod gl el f =
let args =
List.map
(fun e ->
- let (ent, pos, txt) = text_of_entry e.name.loc gmod gl e in
+ let (ent, pos, txt) = text_of_entry e.name.loc gmod e in
let ent =
MLast.ExApp
(loc,
@@ -1320,7 +1295,7 @@ let text_of_extend loc gmod gl el f =
let args =
List.fold_right
(fun e el ->
- let (ent, pos, txt) = text_of_entry e.name.loc gmod gl e in
+ let (ent, pos, txt) = text_of_entry e.name.loc gmod e in
let ent =
MLast.ExApp
(loc,
@@ -1346,7 +1321,7 @@ let text_of_functorial_extend loc gmod gl el =
let el =
List.map
(fun e ->
- let (ent, pos, txt) = text_of_entry e.name.loc gmod gl e in
+ let (ent, pos, txt) = text_of_entry e.name.loc gmod e in
let e =
MLast.ExApp
(loc,