diff options
author | Daniel de Rauglaudre <daniel.de_rauglaudre@inria.fr> | 2002-01-24 13:26:01 +0000 |
---|---|---|
committer | Daniel de Rauglaudre <daniel.de_rauglaudre@inria.fr> | 2002-01-24 13:26:01 +0000 |
commit | 5827cbc88ea41170aa5dcf64576ebc81a988824e (patch) | |
tree | 74d1c265a33a1b1d3d5193424988eaee1bed61cb /camlp4/ocaml_src/meta/pa_extend.ml | |
parent | 0032c482a2024b7b3ceb593a494b1a8b10794f2c (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.ml | 41 |
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, |