aboutsummaryrefslogtreecommitdiff
path: root/contrib/extraction/ocaml.ml
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/extraction/ocaml.ml')
-rw-r--r--contrib/extraction/ocaml.ml44
1 files changed, 15 insertions, 29 deletions
diff --git a/contrib/extraction/ocaml.ml b/contrib/extraction/ocaml.ml
index d5bfd32c45..582dbd2abc 100644
--- a/contrib/extraction/ocaml.ml
+++ b/contrib/extraction/ocaml.ml
@@ -22,8 +22,6 @@ open Options
open Nametab
open Libnames
-let current_module = ref None
-
let cons_cofix = ref Refset.empty
(*s Some utility functions. *)
@@ -125,11 +123,10 @@ let keywords =
Idset.empty
let preamble _ used_modules (mldummy,tdummy,tunknown) =
- List.fold_right
- (fun m s -> str "open " ++ pr_id (uppercase_id m) ++ fnl () ++ s)
+ Idset.fold (fun m s -> str "open " ++ pr_id (uppercase_id m) ++ fnl() ++ s)
used_modules (mt ())
++
- (if used_modules = [] then mt () else fnl ())
+ (if Idset.is_empty used_modules then mt () else fnl ())
++
(if tdummy || tunknown then str "type __ = Obj.t" ++ fnl() else mt())
++
@@ -145,15 +142,7 @@ let preamble _ used_modules (mldummy,tdummy,tunknown) =
module Make = functor(P : Mlpp_param) -> struct
-let pp_global r = P.pp_global r false None
-
-let pp_global_ctx r env = P.pp_global r false (Some (snd env))
-let pp_global_ctx2 r = P.pp_global r false (Some (P.globals ()))
-
-let pp_global_up r = P.pp_global r true None
-let pp_global_up_ctx r env = P.pp_global r true (Some (snd env))
-
-
+let pp_global r = P.pp_global r
let empty_env () = [], P.globals()
(*s Pretty-printing of types. [par] is a boolean indicating whether parentheses
@@ -164,8 +153,8 @@ let rec pp_type par vl t =
| Tmeta _ | Tvar' _ -> assert false
| Tvar i -> (try pp_tvar (List.nth vl (pred i))
with _ -> (str "'a" ++ int i))
- | Tglob (r,[]) -> pp_global_ctx2 r
- | Tglob (r,l) -> pp_tuple_light pp_rec l ++ spc () ++ pp_global_ctx2 r
+ | Tglob (r,[]) -> pp_global r
+ | Tglob (r,l) -> pp_tuple_light pp_rec l ++ spc () ++ pp_global r
| Tarr (t1,t2) ->
pp_par par
(pp_rec true t1 ++ spc () ++ str "->" ++ spc () ++ pp_rec false t2)
@@ -214,26 +203,24 @@ let rec pp_expr par env args =
spc () ++ hov 0 pp_a2))
| MLglob r when is_proj r && args <> [] ->
let record = List.hd args in
- pp_apply (record ++ str "." ++ pp_global_ctx2 r) par (List.tl args)
+ pp_apply (record ++ str "." ++ pp_global r) par (List.tl args)
| MLglob r ->
- apply (pp_global_ctx r env )
+ apply (pp_global r)
| MLcons (r,[]) ->
assert (args=[]);
- let cons = pp_global_up_ctx r env in
if Refset.mem r !cons_cofix then
- pp_par par (str "lazy " ++ cons)
- else cons
+ pp_par par (str "lazy " ++ pp_global r)
+ else pp_global r
| MLcons (r,args') ->
(try
let projs = find_proj (kn_of_r r, 0) in
pp_record (projs, List.map (pp_expr true env []) args')
with Not_found ->
assert (args=[]);
- let cons = pp_global_up_ctx r env
- and tuple = pp_tuple (pp_expr true env []) args' in
+ let tuple = pp_tuple (pp_expr true env []) args' in
if Refset.mem r !cons_cofix then
- pp_par par (str "lazy (" ++ cons ++ spc () ++ tuple ++ str ")")
- else pp_par par (cons ++ spc () ++ tuple))
+ pp_par par (str "lazy (" ++ pp_global r ++ spc() ++ tuple ++ str ")")
+ else pp_par par (pp_global r ++ spc () ++ tuple))
| MLcase (t, pv) ->
let r,_,_ = pv.(0) in
let expr = if Refset.mem r !cons_cofix then
@@ -276,8 +263,7 @@ let rec pp_expr par env args =
and pp_record (projs, args) =
str "{ " ++
prlist_with_sep (fun () -> str ";" ++ spc ())
- (fun (r,a) ->
- pp_global_ctx2 r ++ str " =" ++ spc () ++ a)
+ (fun (r,a) -> pp_global r ++ str " =" ++ spc () ++ a)
(List.combine projs args) ++
str " }"
@@ -291,7 +277,7 @@ and pp_one_pat env (r,ids,t) =
let args =
if ids = [] then (mt ())
else str " " ++ pp_boxed_tuple pr_id (List.rev ids) in
- pp_global_up_ctx r env ++ args, expr
+ pp_global r ++ args, expr
and pp_pat env pv =
prvect_with_sep (fun () -> (fnl () ++ str " | "))
@@ -359,7 +345,7 @@ let pp_parameters l =
let pp_one_ind prefix (pl,name,cl) =
let pl = rename_tvars keywords pl in
let pp_constructor (r,l) =
- (pp_global_up r ++
+ (pp_global r ++
match l with
| [] -> (mt ())
| _ -> (str " of " ++