From 9a923262f9b873448b41a148e8b9c82e446f36eb Mon Sep 17 00:00:00 2001 From: Jon Ludlam Date: Mon, 8 Feb 2021 12:45:20 +0000 Subject: [PATCH] Move ident_env into loader Signed-off-by: Jon Ludlam --- src/loader/cmi.ml | 3 +- src/loader/cmi.mli | 2 - src/loader/cmt.ml | 2 +- src/loader/cmti.ml | 3 +- src/loader/cmti.mli | 1 - src/loader/dune | 18 ++++++++ src/{model => loader}/ident_env.cppo.ml | 53 ++++++++---------------- src/{model => loader}/ident_env.cppo.mli | 2 + src/model/dune | 18 -------- 9 files changed, 40 insertions(+), 62 deletions(-) rename src/{model => loader}/ident_env.cppo.ml (95%) rename src/{model => loader}/ident_env.cppo.mli (99%) diff --git a/src/loader/cmi.ml b/src/loader/cmi.ml index f6e3142fa6..a6c91252a5 100644 --- a/src/loader/cmi.ml +++ b/src/loader/cmi.ml @@ -23,9 +23,8 @@ open Odoc_model.Paths open Odoc_model.Lang open Odoc_model.Names -module Env = Odoc_model.Ident_env +module Env = Ident_env module Paths = Odoc_model.Paths -module Ident_env = Odoc_model.Ident_env let opt_map f = function | None -> None diff --git a/src/loader/cmi.mli b/src/loader/cmi.mli index 48619a3317..23a198fe16 100644 --- a/src/loader/cmi.mli +++ b/src/loader/cmi.mli @@ -17,8 +17,6 @@ module Paths = Odoc_model.Paths -module Ident_env = Odoc_model.Ident_env - val read_interface: Odoc_model.Paths.Identifier.ContainerPage.t -> string -> Odoc_model.Compat.signature -> diff --git a/src/loader/cmt.ml b/src/loader/cmt.ml index a621065fde..46a00fc160 100644 --- a/src/loader/cmt.ml +++ b/src/loader/cmt.ml @@ -23,7 +23,7 @@ module OCamlPath = Path open Odoc_model.Paths open Odoc_model.Lang -module Env = Odoc_model.Ident_env +module Env = Ident_env let read_core_type env ctyp = diff --git a/src/loader/cmti.ml b/src/loader/cmti.ml index ecd8f7f306..5f0f6f6273 100644 --- a/src/loader/cmti.ml +++ b/src/loader/cmti.ml @@ -23,9 +23,8 @@ open Odoc_model.Paths open Odoc_model.Lang open Odoc_model.Names -module Env = Odoc_model.Ident_env +module Env = Ident_env module Paths = Odoc_model.Paths -module Ident_env = Odoc_model.Ident_env let read_module_expr : (Ident_env.t -> Identifier.Signature.t -> Identifier.LabelParent.t -> Typedtree.module_expr -> ModuleType.expr) ref = ref (fun _ _ _ _ -> failwith "unset") diff --git a/src/loader/cmti.mli b/src/loader/cmti.mli index 951d2a2aef..4032332a19 100644 --- a/src/loader/cmti.mli +++ b/src/loader/cmti.mli @@ -15,7 +15,6 @@ *) module Paths = Odoc_model.Paths -module Ident_env = Odoc_model.Ident_env val read_module_expr : (Ident_env.t -> Paths.Identifier.Signature.t -> Paths.Identifier.LabelParent.t -> Typedtree.module_expr -> Odoc_model.Lang.ModuleType.expr) ref val read_interface : diff --git a/src/loader/dune b/src/loader/dune index 0657954867..a6b842122a 100644 --- a/src/loader/dune +++ b/src/loader/dune @@ -1,3 +1,21 @@ +(rule + (targets ident_env.ml) + (deps + (:x ident_env.cppo.ml)) + (action + (chdir + %{workspace_root} + (run %{bin:cppo} -V OCAML:%{ocaml_version} %{x} -o %{targets})))) + +(rule + (targets ident_env.mli) + (deps + (:x ident_env.cppo.mli)) + (action + (chdir + %{workspace_root} + (run %{bin:cppo} -V OCAML:%{ocaml_version} %{x} -o %{targets})))) + (library (name odoc_loader) (public_name odoc.loader) diff --git a/src/model/ident_env.cppo.ml b/src/loader/ident_env.cppo.ml similarity index 95% rename from src/model/ident_env.cppo.ml rename to src/loader/ident_env.cppo.ml index 8622afd9e1..52c9231a73 100644 --- a/src/model/ident_env.cppo.ml +++ b/src/loader/ident_env.cppo.ml @@ -14,6 +14,7 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *) +open Odoc_model open Predefined open Names @@ -23,6 +24,8 @@ open Typedtree type type_ident = Paths.Identifier.Path.Type.t +let dummy_parent : Paths.Identifier.LabelParent.t = `Root (`RootPage (PageName.of_string ""), ModuleName.of_string "") + type t = { modules : Id.Module.t Ident.tbl; module_paths : P.Module.t Ident.tbl; @@ -194,22 +197,12 @@ let extract_signature_tree_item item = | Tsig_include incl -> [`Include (extract_signature_type_items (Compat.signature incl.incl_type))] - | Tsig_attribute - { - attr_name = { txt = "ocaml.text"; _ }; - attr_payload = - PStr - [ - { - pstr_desc = - Pstr_eval - ({ pexp_desc = Pexp_constant (Pconst_string ("/*", _)); _ }, _); - _ - }; - ]; - _; - } -> doc_off_mode_on := not !doc_off_mode_on; [] - + | Tsig_attribute attr -> begin + match Doc_attr.standalone dummy_parent attr with + | Some `Stop -> + doc_off_mode_on := not !doc_off_mode_on; [] + | _ -> [] + end | Tsig_class cls -> List.map (fun cld -> @@ -240,8 +233,7 @@ let extract_signature_tree_item item = List.map (fun decl -> `Type (decl.typ_id, false)) ts #endif | Tsig_typext _ - | Tsig_exception _ | Tsig_open _ - | Tsig_attribute _ -> [] + | Tsig_exception _ | Tsig_open _ -> [] let extract_signature_tree_items sg = let open Typedtree in @@ -301,22 +293,12 @@ let extract_structure_tree_item item = | Tstr_include incl -> [`Include (extract_signature_type_items (Compat.signature incl.incl_type))] - | Tstr_attribute - { - attr_name = { txt = "ocaml.text"; _ }; - attr_payload = - PStr - [ - { - pstr_desc = - Pstr_eval - ({ pexp_desc = Pexp_constant (Pconst_string ("/*", _)); _ }, _); - _ - }; - ]; - _; - } -> doc_off_mode_on := not !doc_off_mode_on; [] - + | Tstr_attribute attr -> begin + match Doc_attr.standalone dummy_parent attr with + | Some `Stop -> + doc_off_mode_on := not !doc_off_mode_on; [] + | _ -> [] + end | Tstr_class cls -> List.map #if OCAML_MAJOR = 4 && OCAML_MINOR = 02 @@ -353,8 +335,7 @@ let extract_structure_tree_item item = #endif | Tstr_eval _ | Tstr_primitive _ | Tstr_typext _ - | Tstr_exception _ - | Tstr_attribute _ -> [] + | Tstr_exception _ -> [] let extract_structure_tree_items str = let open Typedtree in diff --git a/src/model/ident_env.cppo.mli b/src/loader/ident_env.cppo.mli similarity index 99% rename from src/model/ident_env.cppo.mli rename to src/loader/ident_env.cppo.mli index 246c6234a7..0976448d06 100644 --- a/src/model/ident_env.cppo.mli +++ b/src/loader/ident_env.cppo.mli @@ -14,6 +14,8 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *) +open Odoc_model + type t val empty : t diff --git a/src/model/dune b/src/model/dune index a35617ab49..ebbf059dc2 100644 --- a/src/model/dune +++ b/src/model/dune @@ -1,21 +1,3 @@ -(rule - (targets ident_env.ml) - (deps - (:x ident_env.cppo.ml)) - (action - (chdir - %{workspace_root} - (run %{bin:cppo} -V OCAML:%{ocaml_version} %{x} -o %{targets})))) - -(rule - (targets ident_env.mli) - (deps - (:x ident_env.cppo.mli)) - (action - (chdir - %{workspace_root} - (run %{bin:cppo} -V OCAML:%{ocaml_version} %{x} -o %{targets})))) - (rule (targets compat.ml) (deps