From 9bac88a78fc4ef15f328a2168c7d3ee12ff68c59 Mon Sep 17 00:00:00 2001 From: lubegasimon Date: Tue, 6 Jul 2021 18:20:01 +0300 Subject: [PATCH 1/8] add test cases Signed-off-by: lubegasimon --- test/generators/cases/.ocamlformat | 1 + test/generators/cases/alias.ml | 7 + test/generators/cases/bugs.ml | 5 + test/generators/cases/bugs_post_406.mli | 10 ++ test/generators/cases/bugs_pre_410.ml | 6 + test/generators/cases/class.mli | 26 +++ test/generators/cases/external.mli | 2 + test/generators/cases/functor.mli | 19 ++ test/generators/cases/functor2.mli | 15 ++ test/generators/cases/include.mli | 48 +++++ test/generators/cases/include2.ml | 24 +++ test/generators/cases/include_sections.mli | 41 +++++ test/generators/cases/interlude.mli | 21 +++ test/generators/cases/labels.mli | 58 ++++++ test/generators/cases/markup.mli | 179 +++++++++++++++++++ test/generators/cases/mld.mld | 34 ++++ test/generators/cases/module.mli | 44 +++++ test/generators/cases/module_type_subst.mli | 68 +++++++ test/generators/cases/nested.mli | 84 +++++++++ test/generators/cases/ocamlary.mli | 1 + test/generators/cases/recent.mli | 60 +++++++ test/generators/cases/recent_impl.ml | 38 ++++ test/generators/cases/section.mli | 30 ++++ test/generators/cases/stop.mli | 42 +++++ test/generators/cases/stop_dead_link_doc.mli | 27 +++ test/generators/cases/toplevel_comments.mli | 81 +++++++++ test/generators/cases/type.mli | 138 ++++++++++++++ test/generators/cases/val.mli | 7 + 28 files changed, 1116 insertions(+) create mode 100644 test/generators/cases/.ocamlformat create mode 100644 test/generators/cases/alias.ml create mode 100644 test/generators/cases/bugs.ml create mode 100644 test/generators/cases/bugs_post_406.mli create mode 100644 test/generators/cases/bugs_pre_410.ml create mode 100644 test/generators/cases/class.mli create mode 100644 test/generators/cases/external.mli create mode 100644 test/generators/cases/functor.mli create mode 100644 test/generators/cases/functor2.mli create mode 100644 test/generators/cases/include.mli create mode 100644 test/generators/cases/include2.ml create mode 100644 test/generators/cases/include_sections.mli create mode 100644 test/generators/cases/interlude.mli create mode 100644 test/generators/cases/labels.mli create mode 100644 test/generators/cases/markup.mli create mode 100644 test/generators/cases/mld.mld create mode 100644 test/generators/cases/module.mli create mode 100644 test/generators/cases/module_type_subst.mli create mode 100644 test/generators/cases/nested.mli create mode 120000 test/generators/cases/ocamlary.mli create mode 100644 test/generators/cases/recent.mli create mode 100644 test/generators/cases/recent_impl.ml create mode 100644 test/generators/cases/section.mli create mode 100644 test/generators/cases/stop.mli create mode 100644 test/generators/cases/stop_dead_link_doc.mli create mode 100644 test/generators/cases/toplevel_comments.mli create mode 100644 test/generators/cases/type.mli create mode 100644 test/generators/cases/val.mli diff --git a/test/generators/cases/.ocamlformat b/test/generators/cases/.ocamlformat new file mode 100644 index 0000000000..4d6556cb8b --- /dev/null +++ b/test/generators/cases/.ocamlformat @@ -0,0 +1 @@ +disable = true diff --git a/test/generators/cases/alias.ml b/test/generators/cases/alias.ml new file mode 100644 index 0000000000..b458bc3420 --- /dev/null +++ b/test/generators/cases/alias.ml @@ -0,0 +1,7 @@ +module Foo__X = struct + (** Module Foo__X documentation. This should appear in the documentation + for the alias to this module 'X' *) + type t = int +end + +module X = Foo__X diff --git a/test/generators/cases/bugs.ml b/test/generators/cases/bugs.ml new file mode 100644 index 0000000000..2c9c30bbd7 --- /dev/null +++ b/test/generators/cases/bugs.ml @@ -0,0 +1,5 @@ +type 'a opt = 'a option +let foo (type a) ?(bar : a opt) () = () +(** Triggers an assertion failure when + {:https://github.com/ocaml/odoc/issues/101} is not fixed. *) + diff --git a/test/generators/cases/bugs_post_406.mli b/test/generators/cases/bugs_post_406.mli new file mode 100644 index 0000000000..757c001a02 --- /dev/null +++ b/test/generators/cases/bugs_post_406.mli @@ -0,0 +1,10 @@ +(** Let-open in class types, https://github.com/ocaml/odoc/issues/543 + This was added to the language in 4.06 *) + +class type let_open = + let open List in + object end + +class let_open' : + let open List in + object end diff --git a/test/generators/cases/bugs_pre_410.ml b/test/generators/cases/bugs_pre_410.ml new file mode 100644 index 0000000000..0baca54d3b --- /dev/null +++ b/test/generators/cases/bugs_pre_410.ml @@ -0,0 +1,6 @@ +type 'a opt' = int option +let foo' (type a) ?(bar : a opt') () = () +(** Similar to [Bugs], but the printed type of [~bar] should be [int], not + ['a]. This probably requires fixing in the compiler. See + {:https://github.com/ocaml/odoc/pull/230#issuecomment-433226807}. *) + diff --git a/test/generators/cases/class.mli b/test/generators/cases/class.mli new file mode 100644 index 0000000000..b536b0dbda --- /dev/null +++ b/test/generators/cases/class.mli @@ -0,0 +1,26 @@ +class type empty = +object +end + +class type mutually = +object +end + +and recursive = +object +end + +class mutually' : mutually +and recursive' : recursive + +class type virtual empty_virtual = +object +end + +class virtual empty_virtual' : empty + +class type ['a] polymorphic = +object +end + +class ['a] polymorphic' : ['a] polymorphic diff --git a/test/generators/cases/external.mli b/test/generators/cases/external.mli new file mode 100644 index 0000000000..9d68518931 --- /dev/null +++ b/test/generators/cases/external.mli @@ -0,0 +1,2 @@ +external foo : unit -> unit = "bar" +(** Foo {e bar}. *) diff --git a/test/generators/cases/functor.mli b/test/generators/cases/functor.mli new file mode 100644 index 0000000000..8d13c39eb2 --- /dev/null +++ b/test/generators/cases/functor.mli @@ -0,0 +1,19 @@ +module type S = +sig + type t +end + +module type S1 = functor (_ : S) -> S + +module F1 : functor (Arg : S) -> S + +module F2 : functor (Arg : S) -> (S with type t = Arg.t) + +module F3 : functor (Arg : S) -> +sig + type t = Arg.t +end + +module F4 (Arg : S) : S + +module F5 () : S diff --git a/test/generators/cases/functor2.mli b/test/generators/cases/functor2.mli new file mode 100644 index 0000000000..404e4671a2 --- /dev/null +++ b/test/generators/cases/functor2.mli @@ -0,0 +1,15 @@ +(* test *) + +module type S = sig type t end + +module X : functor (Y:S) -> functor (Z:S) -> sig + type y_t = Y.t + type z_t = Z.t + type x_t = y_t +end + +module type XF = functor (Y:S) -> functor (Z:S) -> sig + type y_t = Y.t + type z_t = Z.t + type x_t = y_t +end diff --git a/test/generators/cases/include.mli b/test/generators/cases/include.mli new file mode 100644 index 0000000000..f468c3cfc0 --- /dev/null +++ b/test/generators/cases/include.mli @@ -0,0 +1,48 @@ +module type Not_inlined = +sig + type t +end + +include Not_inlined + +module type Inlined = +sig + type u +end + +include Inlined +(** @inline *) + +module type Not_inlined_and_closed = +sig + type v +end + +include Not_inlined_and_closed +(** @closed *) + +module type Not_inlined_and_opened = +sig + type w +end + +include Not_inlined_and_opened +(** @open + @closed *) + +(* This demostrates that overridden values are never rendered*) +module type Inherent_Module = +sig + val a : t +end + +include Inherent_Module + + +module type Dorminant_Module = +sig + include Inherent_Module + val a : u +end + +include Dorminant_Module diff --git a/test/generators/cases/include2.ml b/test/generators/cases/include2.ml new file mode 100644 index 0000000000..bbfc4ca841 --- /dev/null +++ b/test/generators/cases/include2.ml @@ -0,0 +1,24 @@ +(** Comment about X that should not appear when including X below. *) +module X = struct + type t = int +end + +include X + +module Y = struct + (** Top-comment of Y. *) + + type t +end + +module Y_include_synopsis = struct + (** The [include Y] below should have the synopsis from [Y]'s top-comment + attached to it. *) + + include Y +end + +module Y_include_doc = struct + include Y + (** Doc attached to [include Y]. [Y]'s top-comment shouldn't appear here. *) +end diff --git a/test/generators/cases/include_sections.mli b/test/generators/cases/include_sections.mli new file mode 100644 index 0000000000..d4357c182a --- /dev/null +++ b/test/generators/cases/include_sections.mli @@ -0,0 +1,41 @@ +(** A module type. *) +module type Something = sig + + val something : unit + + (** {1 Something 1} + + foo *) + + val foo : unit + + (** {2 Something 2} *) + + val bar : unit + (** foo bar *) + + (** {1 Something 1-bis} + + Some text. *) +end + +(** Let's include {!Something} once *) + +include Something (** @inline *) + +(** {1 Second include} + + Let's include {!Something} a second time: the heading level should be shift here. *) + +include Something (** @inline *) + +(** {2 Third include} + + Shifted some more. *) + +include Something (** @inline *) + +(** And let's include it again, but without inlining it this time: the ToC + shouldn't grow. *) + +include Something diff --git a/test/generators/cases/interlude.mli b/test/generators/cases/interlude.mli new file mode 100644 index 0000000000..d8e79875b1 --- /dev/null +++ b/test/generators/cases/interlude.mli @@ -0,0 +1,21 @@ +(** This is the comment associated to the module. *) + +(** Some separate stray text at the top of the module. *) + +val foo : unit +(** Foo. *) + +(** Some stray text that is not associated with any signature item. + + It has multiple paragraphs. *) + +(** A separate block of stray text, adjacent to the preceding one. *) + +val bar : unit +(** Bar. *) + +val multiple : unit +val signature : unit +val items : unit + +(** Stray text at the bottom of the module. *) diff --git a/test/generators/cases/labels.mli b/test/generators/cases/labels.mli new file mode 100644 index 0000000000..f180a63deb --- /dev/null +++ b/test/generators/cases/labels.mli @@ -0,0 +1,58 @@ +(** {1:L1 Attached to unit} *) + +(** {1:L2 Attached to nothing} *) + +module A : sig end +(** {1:L3 Attached to module} *) + +type t +(** {1:L4 Attached to type} *) + +val f : t +(** {1:L5 Attached to value} *) + +external e : unit -> t = "t" +(** {1:L5bis Attached to external} *) + +module type S = sig end +(** {1:L6 Attached to module type} *) + +class c : object end +(** {1:L6 Attached to class} *) + +class type cs = object end +(** {1:L7 Attached to class type} *) + +exception E +(** {1:L8 Attached to exception} *) + +type x = .. + +(** {1:L9 Attached to extension} *) +type x += X + +module S := A +(** {1:L10 Attached to module subst} *) + +type s := t +(** {1:L11 Attached to type subst} *) + +type u = A' (** {1:L12 Attached to constructor} *) + +type v = { f : t (** {1:L13 Attached to field} *) } + +(** Testing that labels can be referenced + - {!L1} + - {!L2} + - {!L3} + - {!L4} + - {!L5} + - {!L6} + - {!L7} + - {!L8} + - {!L9} + - {!L10} + - {!L11} + - {!L12} + - {!L13} + *) diff --git a/test/generators/cases/markup.mli b/test/generators/cases/markup.mli new file mode 100644 index 0000000000..369c7e6dda --- /dev/null +++ b/test/generators/cases/markup.mli @@ -0,0 +1,179 @@ +(** Here, we test the rendering of comment markup. *) + + +(** {1 Sections} + + Let's get these done first, because sections will be used to break up the + rest of this test. + + Besides the section heading above, there are also + + {2 Subsection headings} + + and + + {3 Sub-subsection headings} + + but odoc has banned deeper headings. There are also title headings, but they + are only allowed in mld files. + + {3:anchors Anchors} + + Sections can have attached {!anchors}, and it is possible to {{!anchors} + link} to them. Links to section headers should not be set in source code + style. + + {4 Paragraph} + + Individual paragraphs can have a heading. + + {5 Subparagraph} + + Parts of a longer paragraph that can be considered alone can also have + headings. + + + {1 Styling} + + This paragraph has some styled elements: {b bold} and {i italic}, + {b {i bold italic}}, {e emphasis}, {e {e emphasis} within emphasis}, + {b {i bold italic}}, super{^script}, sub{_script}. The line spacing should + be enough for superscripts and subscripts not to look odd. + + Note: {i In italics {e emphasis} is rendered as normal text while {e + emphasis {e in} emphasis} is rendered in italics.} {i It also work the same + in {{:#} links in italics with {e emphasis {e in} emphasis}.}} + + [code] is a different kind of markup that doesn't allow nested markup. + + It's possible for two markup elements to appear {b next} {i to} each other + and have a space, and appear {b next}{i to} each other with no space. It + doesn't matter {b how} {i much} space it was in the source: in this + sentence, it was two space characters. And in this one, there is {b a} + {i newline}. + + This is also true between {e non-}[code] markup {e and} [code]. + + Code can appear {b inside [other] markup}. Its display shouldn't be + affected. + + + {1 Links and references} + + This is a {{:#} link}. It sends you to the top of this page. Links can have + markup inside them: {{:#} {b bold}}, {{:#} {i italics}}, + {{:#} {e emphasis}}, {{:#} super{^script}}, {{:#} sub{_script}}, and + {{:#} [code]}. Links can also be nested {e {{:#} inside}} markup. Links + cannot be nested inside each other. This link has no replacement text: + {{:#}}. The text is filled in by odoc. This is a shorthand link: {:#}. The + text is also filled in by odoc in this case. + + This is a reference to {!foo}. References can have replacement text: + {{!foo} the value foo}. Except for the special lookup support, references + are pretty much just like links. The replacement text can have nested + styles: {{!foo} {b bold}}, {{!foo} {i italic}}, {{!foo} {e emphasis}}, + {{!foo} super{^script}}, {{!foo} sub{_script}}, and {{!foo} [code]}. It's + also possible to surround a reference in a style: {b {!foo}}. References + can't be nested inside references, and links and references can't be nested + inside each other. + + + {1 Preformatted text} + + This is a code block: + + {[ + let foo = () + (** There are some nested comments in here, but an unpaired comment + terminator would terminate the whole doc surrounding comment. It's + best to keep code blocks no wider than 72 characters. *) + + let bar = + ignore foo + ]} + + There are also verbatim blocks: + +{v +The main difference is these don't get syntax highlighting. +v} + + + {1 Lists} + + - This is a + - shorthand bulleted list, + - and the paragraphs in each list item support {e styling}. + + + This is a + + shorthand numbered list. + + - Shorthand list items can span multiple lines, however trying to put two + paragraphs into a shorthand list item using a double line break + + just creates a paragraph outside the list. + + - Similarly, inserting a blank line between two list items + + - creates two separate lists. + + {ul + {li To get around this limitation, one + + can use explicitly-delimited lists.} + {li This one is bulleted,}} + + {ol {li but there is also the numbered variant.}} + + {ul + {li + {ul + {li lists} + {li can be nested} + {li and can include references} + {li {!foo}}}}} + + + {1 Unicode} + + The parser supports any ASCII-compatible encoding, in particuλar UTF-8. + + + {1 Raw HTML} + + Raw HTML can be {%html:%} as + inline elements into sentences. + + {%html: +
+ If the raw HTML is the only thing in a paragraph, it is treated as a block + element, and won't be wrapped in paragraph tags by the HTML generator. +
+ %} + + + {1 Modules} + + {!modules: } + {!modules: X} + {!modules: X Y Z} + + + {1 Tags} + + Each comment can end with zero or more tags. Here are some examples: + + @author antron + @deprecated a {e long} time ago + @param foo unused + @raise Failure always + @return never + @see <#> this url + @see 'foo.ml' this file + @see "Foo" this document + @since 0 + @before 1.0 it was in b{^e}t{_a} + @version -1 *) + +val foo : unit +(** Comments in structure items {b support} {e markup}, t{^o}{_o}. *) diff --git a/test/generators/cases/mld.mld b/test/generators/cases/mld.mld new file mode 100644 index 0000000000..65e78dcb9b --- /dev/null +++ b/test/generators/cases/mld.mld @@ -0,0 +1,34 @@ +{0 Mld Page} + +This is an [.mld] file. It doesn't have an auto-generated title, like modules +and other pages generated fully by odoc do. + +It will have a TOC generated from section headings. + +{1 Section} + +This is a section. + +Another paragraph in section. + +{1 Another section} + +This is another section. + +Another paragraph in section 2. + +{2 Subsection} + +This is a subsection. + +Another paragraph in subsection. + +Yet another paragraph in subsection. + +{2 Another Subsection} + +This is another subsection. + +Another paragraph in subsection 2. + +Yet another paragraph in subsection 2. diff --git a/test/generators/cases/module.mli b/test/generators/cases/module.mli new file mode 100644 index 0000000000..a270d525b4 --- /dev/null +++ b/test/generators/cases/module.mli @@ -0,0 +1,44 @@ +(** Foo. *) + +val foo : unit +(** The module needs at least one signature item, otherwise a bug causes the + compiler to drop the module comment (above). See + {{:https://caml.inria.fr/mantis/view.php?id=7701}}. *) + +module type S = +sig + type t + type u + type 'a v + type ('a, 'b) w + module M : sig end +end + +module type S1 + +module type S2 = S + +module type S3 = S with type t = int and type u = string + +module type S4 = S with type t := int + +module type S5 = S with type 'a v := 'a list + +type ('a, 'b) result + +module type S6 = S with type ('a, 'b) w := ('a, 'b) result + +module M' : sig end + +module type S7 = S with module M = M' + +module type S8 = S with module M := M' + +module type S9 = module type of M' + +open M' + +open! M' + +module rec Mutually : sig end +and Recursive : sig end diff --git a/test/generators/cases/module_type_subst.mli b/test/generators/cases/module_type_subst.mli new file mode 100644 index 0000000000..930aee148f --- /dev/null +++ b/test/generators/cases/module_type_subst.mli @@ -0,0 +1,68 @@ + + +module Local: sig + type local := int * int + module type local := sig type t = local end + module type w = local + module type s = sig end +end + + +module type s = sig end + +module Basic: sig + + module type u = sig + module type T = sig end + end + + module type with_ = u with module type T = s + + module type u2 = sig + module type T = sig end + module M:T + end + + module type with_2 = u2 with module type T = sig end + + module type a = sig + module type b = s + module M: b + end + + module type c = a with module type b := s +end + +module Nested : sig + + module type nested = sig + module N: sig + module type t = sig end + end + end + + module type with_ = nested with module type N.t = s + module type with_subst = nested with module type N.t := s +end + +module Structural: sig + module type u = sig + module type a = sig + module type b = sig + module type c = sig + type t = A of t + end + end + end + end + + module type w = u + with module type a = + sig + module type b = sig + module type c = sig + type t = A of t + end + end + end +end diff --git a/test/generators/cases/nested.mli b/test/generators/cases/nested.mli new file mode 100644 index 0000000000..795cc7a6ff --- /dev/null +++ b/test/generators/cases/nested.mli @@ -0,0 +1,84 @@ + +(** This comment needs to be here before #235 is fixed. *) + +(** {1 Module} *) + +(** This is module X. + + Some additional comments. *) +module X : sig + + (** {1 Type} *) + + type t + (** Some type. *) + + (** {1 Values} *) + + val x : t + (** The value of x. *) +end + + +(** {1 Module type} *) + +(** This is module type Y. + + Some additional comments. *) +module type Y = sig + + (** {1 Type} *) + + type t + (** Some type. *) + + (** {1 Values} *) + + val y : t + (** The value of y. *) +end + + +(** {1 Functor} *) + +(** This is a functor F. + + Some additional comments. *) +module F + (Arg1 : Y) (Arg2 : sig + (** {1 Type} *) + + type t + (** Some type. *) + end) : sig + (** {1 Type} *) + + type t = Arg1.t * Arg2.t + (** Some type. *) +end + + +(** {1 Class} *) + +(** This is class z. + + Some additional comments. *) +class virtual z : object + + val y : int + (** Some value. *) + + val mutable virtual y' : int + + (** {1 Methods} *) + + method z : int + (** Some method. *) + + method private virtual z' : int +end + + +class virtual inherits : object + inherit z +end diff --git a/test/generators/cases/ocamlary.mli b/test/generators/cases/ocamlary.mli new file mode 120000 index 0000000000..220b62ee23 --- /dev/null +++ b/test/generators/cases/ocamlary.mli @@ -0,0 +1 @@ +../../../src/ocamlary/ocamlary.mli \ No newline at end of file diff --git a/test/generators/cases/recent.mli b/test/generators/cases/recent.mli new file mode 100644 index 0000000000..773504acf8 --- /dev/null +++ b/test/generators/cases/recent.mli @@ -0,0 +1,60 @@ +(* These tests are run on only the most recent version of the compiler that is + explicitly supported by odoc. This allows us to test doc generation for new + language features. *) + +module type S = sig end + +module type S1 = functor (_ : S) -> S + +type variant = + | A + | B of int + | C (** foo *) + | D (** {e bar} *) + | E of { a : int } + +type _ gadt = + | A : int gadt + | B : int -> string gadt (** foo *) + | C : { a : int } -> unit gadt + +type polymorphic_variant = [ `A | `B of int | `C (** foo *) | `D (** bar *) ] + +type empty_variant = | + +type nonrec nonrec_ = int + +(* Conjunctive types: dune compilation scheme exposes a bug in old + versions of the compiler *) +type empty_conj = X : [< `X of & 'a & int * float ] -> empty_conj + +type conj = X : [< `X of int & [< `B of int & float ] ] -> conj + +val empty_conj : [< `X of & 'a & int * float ] + +val conj : [< `X of int & [< `B of int & float ] ] + +module Z : sig + module Y : sig + module X : sig + type 'a t + end + end +end + +module X : sig + module L := Z.Y + + type t = int L.X.t + + type u := int + + type v = u L.X.t +end + +module type PolyS = sig + type a = [ `A ] + + type t = [ a | `B ] +end +with type a := [ `A ] diff --git a/test/generators/cases/recent_impl.ml b/test/generators/cases/recent_impl.ml new file mode 100644 index 0000000000..fce38772f0 --- /dev/null +++ b/test/generators/cases/recent_impl.ml @@ -0,0 +1,38 @@ +module Foo = struct + module A = struct + type t = A + end + + module B = struct + type t = B + end +end + +open (Foo : module type of Foo with module A := Foo.A) + +module B = B + +open Set.Make (struct + type t = Foo.A.t + + let compare = compare +end) + +type u = t + +module type S = sig + module F (_ : sig end) : sig + type t + end + + module X : sig end + + open F(X) + + val f : t +end + +open Foo + +(* Check that regular open still works as expected *) +module B' = B diff --git a/test/generators/cases/section.mli b/test/generators/cases/section.mli new file mode 100644 index 0000000000..44e14fa9f0 --- /dev/null +++ b/test/generators/cases/section.mli @@ -0,0 +1,30 @@ +(* Blank lines are needed because of + https://caml.inria.fr/mantis/view.php?id=7701. *) + +(** This is the module comment. Eventually, sections won't be allowed in it. *) + +(** {1 Empty section} *) + +(** {1 Text only} + + Foo bar. *) + +(** {1 Aside only} *) + +(** Foo bar. *) + +(** {1 Value only} *) + +val foo : unit + +(** {1 Empty section} + + {1 within a comment} + + {2 and one with a nested section} *) + +(** {1 {e This} [section] {b title} {_has} {^markup}} + + But links are impossible thanks to the parser, so we never have trouble + rendering a section title in a table of contents – no link will be nested + inside another link. *) diff --git a/test/generators/cases/stop.mli b/test/generators/cases/stop.mli new file mode 100644 index 0000000000..789257b134 --- /dev/null +++ b/test/generators/cases/stop.mli @@ -0,0 +1,42 @@ +(** This test cases exercises stop comments. *) + +val foo : int +(** This is normal commented text. *) + +(** The next value is [bar], and it should be missing from the documentation. + There is also an entire module, [M], which should also be hidden. It + contains a nested stop comment, but that stop comment should not turn + documentation back on in this outer module, because stop comments respect + scope. *) + +(**/**) + +val bar : int +(** OMG! *) + +module M : +sig + val baz : int + + (**/**) +end + +(**/**) + +(** Documentation is on again. + + Now, we have a nested module, and it has a stop comment between its two + items. We want to see that the first item is displayed, but the second is + missing, and the stop comment disables documenation only in that module, and + not in this outer module. *) + +module N : +sig + val quux : int + + (**/**) + + val omg : int +end + +val lol : int diff --git a/test/generators/cases/stop_dead_link_doc.mli b/test/generators/cases/stop_dead_link_doc.mli new file mode 100644 index 0000000000..351e2b1b6c --- /dev/null +++ b/test/generators/cases/stop_dead_link_doc.mli @@ -0,0 +1,27 @@ +(* This tests that references to hidden items (items in no documentation mode) don't get rendered *) + +module Foo : sig + type t +end + +type foo = | Bar of Foo.t + +type bar = | Bar of { field : Foo.t } + +type foo_ = Bar_ of (int * Foo.t) * int +type bar_ = Bar__ of Foo.t option + +(**/**) +module Another_Foo : sig + type t +end +(**/**) + +(* this should be rendered as `type another_foo` because it contains a reference to a hidden module*) +type another_foo = | Bar of Another_Foo.t + +(* this should be rendered as `type another_bar` because it contains a reference to a hidden module*) +type another_bar = | Bar of { field : Another_Foo.t } + +type another_foo_ = Bar_ of (int * Another_Foo.t) * int +type another_bar_ = Bar__ of Another_Foo.t option diff --git a/test/generators/cases/toplevel_comments.mli b/test/generators/cases/toplevel_comments.mli new file mode 100644 index 0000000000..342a884c87 --- /dev/null +++ b/test/generators/cases/toplevel_comments.mli @@ -0,0 +1,81 @@ +(** A doc comment at the beginning of a module is considered to be that + module's doc. *) + +(** Doc of [T], part 1. *) +module type T = sig + (** Doc of [T], part 2. *) + + type t +end + +module Include_inline : sig + include T + (** @inline *) +end + +(** Doc of [Include_inline], part 1. *) +module Include_inline' : sig + (** Doc of [Include_inline], part 2. *) + + include T + (** part 3 + @inline *) +end + +module type Include_inline_T = sig + include T + (** @inline *) +end + +(** Doc of [Include_inline_T'], part 1. *) +module type Include_inline_T' = sig + (** Doc of [Include_inline_T'], part 2. *) + + include T + (** part 3 + @inline *) +end + +module M : sig + + (** Doc of [M] *) +end + +module M' : sig end +(** Doc of [M'] from outside *) + +(** Doc of [M''], part 1. *) +module M'' : sig + + (** Doc of [M''], part 2. *) +end + +module Alias : T +(** Doc of [Alias]. *) + +(** Doc of [c1], part 1. *) +class c1 : + int + -> object + + (** Doc of [c1], part 2. *) + end + +(** Doc of [ct], part 1. *) +class type ct = + object + + (** Doc of [ct], part 2. *) + end + +class c2 : ct +(** Doc of [c2]. *) + +module Ref_in_synopsis : sig + (** {!t}. + + This reference should resolve in the context of this module, even when + used as a synopsis. *) + + type t +end diff --git a/test/generators/cases/type.mli b/test/generators/cases/type.mli new file mode 100644 index 0000000000..228aeec027 --- /dev/null +++ b/test/generators/cases/type.mli @@ -0,0 +1,138 @@ +type abstract +(** Some {e documentation}. *) + +type alias = int + +type private_ = private int + +type 'a constructor = 'a + +type arrow = int -> int + +type higher_order = (int -> int) -> int + +type labeled = l:int -> int + +type optional = ?l:int -> int + +type labeled_higher_order = (l:int -> int) -> (?l:int -> int) -> int + +type pair = int * int + +type parens_dropped = (int * int) + +type triple = int * int * int + +type nested_pair = (int * int) * int + +type instance = int constructor + +type long = labeled_higher_order -> [ `Bar | `Baz of triple] -> pair -> labeled -> higher_order -> (string -> int) -> (int,float,char,string,char,unit) CamlinternalFormatBasics.fmtty -> nested_pair -> arrow -> string -> nested_pair array + +type variant_e = {a : int} +type variant = + | A + | B of int + | C (** foo *) + | D (** {e bar} *) + | E of variant_e + +type variant_c = {a: int} +type _ gadt = + | A : int gadt + | B : int -> string gadt + | C : variant_c -> unit gadt + +type degenerate_gadt = + | A : degenerate_gadt + +type private_variant = private A + +type record = { + a : int; + mutable b : int; + c : int; (** foo *) + d : int; (** {e bar} *) + e : 'a. 'a; +} + +(* 4.02 doesn't preserve doc comments on polymorphic variant constructors, but + they should be restored if 4.02 support is dropped, or if creating a test + that won't run on 4.02. *) +type polymorphic_variant = [ + | `A + | `B of int + | `C of int * unit + | `D +] + +type polymorphic_variant_extension = [ + | polymorphic_variant (** {not e} shown *) + | `E +] + +type nested_polymorphic_variant = [ + | `A of [ `B | `C ] +] + +type private_extenion = private [> polymorphic_variant ] + +type object_ = < + a : int; + b : int; (** foo *) + c : int; (** {e bar} *) +> + +module type X = sig type t type u end + +type module_ = (module X) + +type module_substitution = (module X with type t = int and type u = unit) + +type +'a covariant + +type -'a contravariant + +type _ bivariant = int + +type ('a, 'b) binary + +type using_binary = (int, int) binary + +type 'custom name + +type 'a constrained = 'a constraint 'a = int + +type 'a exact_variant = 'a constraint 'a = [ `A | `B of int ] + +type 'a lower_variant = 'a constraint 'a = [> `A | `B of int ] + +type 'a any_variant = 'a constraint 'a = [> ] + +type 'a upper_variant = 'a constraint 'a = [< `A | `B of int ] + +type 'a named_variant = 'a constraint 'a = [< polymorphic_variant ] + +type 'a exact_object = 'a constraint 'a = + +type 'a lower_object = 'a constraint 'a = + +type 'a poly_object = 'a constraint 'a = + +type ('a, 'b) double_constrained = 'a * 'b + constraint 'a = int + constraint 'b = unit + +type as_ = (int as 'a) * 'a + +type extensible = .. + +type extensible += + | Extension (** Documentation for {!Extension}. *) + | Another_extension (** Documentation for {!Another_extension}. *) + +type mutually = A of recursive +and recursive = B of mutually + +(* Not a type, but analogous to extensions. *) +exception Foo of int * int diff --git a/test/generators/cases/val.mli b/test/generators/cases/val.mli new file mode 100644 index 0000000000..9503f92397 --- /dev/null +++ b/test/generators/cases/val.mli @@ -0,0 +1,7 @@ +val documented : unit +(** Foo. *) + +val undocumented : unit + +(** Bar. *) +val documented_above : unit From 0659f2beee13158b3ae9cd76b288250cc2b9f869 Mon Sep 17 00:00:00 2001 From: lubegasimon Date: Tue, 6 Jul 2021 19:18:15 +0300 Subject: [PATCH 2/8] generate rules logic Signed-off-by: lubegasimon --- test/generators/dune | 29 ++ test/generators/gen_rules/dune | 5 + test/generators/gen_rules/gen_rules.ml | 102 +++++++ test/generators/gen_rules_lib.ml | 373 +++++++++++++++++++++++++ 4 files changed, 509 insertions(+) create mode 100644 test/generators/dune create mode 100644 test/generators/gen_rules/dune create mode 100644 test/generators/gen_rules/gen_rules.ml create mode 100644 test/generators/gen_rules_lib.ml diff --git a/test/generators/dune b/test/generators/dune new file mode 100644 index 0000000000..ba813043e2 --- /dev/null +++ b/test/generators/dune @@ -0,0 +1,29 @@ +(include link.dune.inc) + +(rule + (deps + (glob_files cases/*) + (glob_files html/*.targets) + (glob_files latex/*.targets) + (glob_files man/*.targets)) + (enabled_if + (>= %{ocaml_version} 4.04)) + (action + (with-stdout-to + link.dune.inc.gen + (pipe-stdout + (run gen_rules/gen_rules.exe) + (run dune format-dune-file))))) + +(rule + (alias runtest) + (enabled_if + (>= %{ocaml_version} 4.04)) + (action + (diff link.dune.inc link.dune.inc.gen))) + +(library + (name gen_rules_lib) + (libraries sexplib0 unix fpath) + (enabled_if + (>= %{ocaml_version} 4.04))) diff --git a/test/generators/gen_rules/dune b/test/generators/gen_rules/dune new file mode 100644 index 0000000000..fd0c7f3819 --- /dev/null +++ b/test/generators/gen_rules/dune @@ -0,0 +1,5 @@ +(executable + (name gen_rules) + (libraries gen_rules_lib) + (enabled_if + (>= %{ocaml_version} 4.04))) diff --git a/test/generators/gen_rules/gen_rules.ml b/test/generators/gen_rules/gen_rules.ml new file mode 100644 index 0000000000..178f8dba21 --- /dev/null +++ b/test/generators/gen_rules/gen_rules.ml @@ -0,0 +1,102 @@ +let html_target_rule path : Gen_rules_lib.sexp = + List + [ + Atom "action"; + List + [ + Atom "progn"; + List + [ + Atom "run"; + Atom "odoc"; + Atom "html-generate"; + Atom "--indent"; + Atom "--flat"; + Atom "--extra-suffix"; + Atom "gen"; + Atom "-o"; + Atom "."; + Atom ("%{dep:" ^ Fpath.to_string path ^ "}"); + ]; + ]; + ] + +let latex_target_rule path : Gen_rules_lib.sexp = + List + [ + Atom "action"; + List + [ + Atom "progn"; + List + [ + Atom "run"; + Atom "odoc"; + Atom "latex-generate"; + Atom "-o"; + Atom "."; + Atom "--extra-suffix"; + Atom "gen"; + Atom ("%{dep:" ^ Fpath.to_string path ^ "}"); + ]; + ]; + ] + +let man_target_rule path : Gen_rules_lib.sexp = + List + [ + Atom "action"; + List + [ + Atom "progn"; + List + [ + Atom "run"; + Atom "odoc"; + Atom "man-generate"; + Atom "-o"; + Atom "."; + Atom "--extra-suffix"; + Atom "gen"; + Atom ("%{dep:" ^ Fpath.to_string path ^ "}"); + ]; + ]; + ] + +let read_file_from_dir dir = + let filenames = + let arr = Sys.readdir dir in + Array.sort String.compare arr; + Array.to_list arr + in + let dir = Fpath.v dir in + List.map (Fpath.( / ) dir) filenames + +let constraints = + let open Gen_rules_lib in + [ + (Fpath.v "stop_dead_link_doc.mli", Min "4.04"); + (Fpath.v "bugs_post_406.mli", Min "4.06"); + (Fpath.v "ocamlary.mli", Min "4.07"); + (Fpath.v "recent.mli", Min "4.09"); + (Fpath.v "labels.mli", Min "4.09"); + (Fpath.v "recent_impl.ml", Min "4.09"); + (Fpath.v "bugs_pre_410.ml", Max "4.09"); + (Fpath.v "module_type_subst.mli", Min "4.13"); + ] + +let () = + let paths = read_file_from_dir (Fpath.filename Gen_rules_lib.cases) in + let paths = + List.filter (fun p -> not (Gen_rules_lib.is_dot_ocamlformat p)) paths + in + let stanzas = + Gen_rules_lib.gen_rule constraints + [ + (html_target_rule, Fpath.v "html", Some "--flat"); + (latex_target_rule, Fpath.v "latex", None); + (man_target_rule, Fpath.v "man", None); + ] + paths + in + List.iter (Sexplib0.Sexp.pp Format.std_formatter) stanzas diff --git a/test/generators/gen_rules_lib.ml b/test/generators/gen_rules_lib.ml new file mode 100644 index 0000000000..52561a25b2 --- /dev/null +++ b/test/generators/gen_rules_lib.ml @@ -0,0 +1,373 @@ +type sexp = Sexplib0.Sexp.t = Atom of string | List of sexp list + +type enabledif = Min of string | Max of string | MinMax of string * string + +let cu_target_rule enabledif dep_path target_path = + List + ([ + Atom "rule"; + List [ Atom "target"; Atom target_path ]; + List [ Atom "deps"; Atom (Fpath.to_string dep_path) ]; + List + [ + Atom "action"; + List + [ + Atom "run"; + Atom "ocamlc"; + Atom "-c"; + Atom "-bin-annot"; + Atom "-o"; + Atom "%{target}"; + Atom "%{deps}"; + ]; + ]; + ] + @ enabledif) + +let odoc_target_rule enabledif dep_path target_path = + List + ([ + Atom "rule"; + List [ Atom "target"; Atom (Fpath.basename target_path) ]; + List [ Atom "deps"; Atom (Fpath.basename dep_path) ]; + List + [ + Atom "action"; + List + [ + Atom "run"; + Atom "odoc"; + Atom "compile"; + Atom "-o"; + Atom "%{target}"; + Atom "%{deps}"; + ]; + ]; + ] + @ enabledif) + +let odocl_target_rule enabledif dep_path target_path = + List + ([ + Atom "rule"; + List [ Atom "target"; Atom (Fpath.basename target_path) ]; + List [ Atom "deps"; Atom (Fpath.basename dep_path) ]; + List + [ + Atom "action"; + List + [ + Atom "run"; + Atom "odoc"; + Atom "link"; + Atom "-o"; + Atom "%{target}"; + Atom "%{deps}"; + ]; + ]; + ] + @ enabledif) + +let mld_odoc_target_rule enabledif dep_path target_path = + List + ([ + Atom "rule"; + List [ Atom "target"; Atom (Fpath.basename target_path) ]; + List [ Atom "deps"; Atom (Fpath.to_string dep_path) ]; + List + [ + Atom "action"; + List + [ + Atom "run"; + Atom "odoc"; + Atom "compile"; + Atom "-o"; + Atom "%{target}"; + Atom "%{deps}"; + ]; + ]; + ] + @ enabledif) + +let set_odocl_ext = Fpath.set_ext ".odocl" + +let set_odoc_ext = Fpath.set_ext ".odoc" + +let file_rule enabledif path ext = + let cm_file = Fpath.set_ext ext path in + let odoc_file = set_odoc_ext path in + let odocl_file = set_odocl_ext path in + [ + cu_target_rule enabledif path (Fpath.basename cm_file); + odoc_target_rule enabledif cm_file odoc_file; + odocl_target_rule enabledif odoc_file odocl_file; + ] + +let mld_file_rule enabledif path = + let path' = Fpath.(v ("page-" ^ basename path)) in + let odoc_file = set_odoc_ext path' in + let odocl_file = set_odocl_ext path' in + [ + mld_odoc_target_rule enabledif path odoc_file; + odocl_target_rule enabledif odoc_file odocl_file; + ] + +let die s = + prerr_endline s; + exit 1 + +let path' () f = Filename.quote (Fpath.to_string f) + +let ext' () f = Filename.quote (Fpath.get_ext f) + +let cases = Fpath.v "cases" + +let is_dot_ocamlformat p = Fpath.filename p = ".ocamlformat" + +let gen_rule_for_source_file enabledif path = + let ext = Fpath.get_ext path in + match ext with + | ".ml" -> file_rule enabledif path ".cmt" + | ".mli" -> file_rule enabledif path ".cmti" + | ".mld" -> mld_file_rule enabledif path + | _ -> + die + (Printf.sprintf + "Don't know what to do with %a because of unrecognized %a extension." + path' path ext' path) + +let odocls backend p = + let path = Fpath.relativize ~root:backend p in + match path with Some p -> p | None -> assert false + +let read_lines ic = + let lines = ref [] in + try + while true do + lines := input_line ic :: !lines + done; + assert false + with End_of_file -> List.rev !lines + +let lines_of_file path = + let ic = open_in (Fpath.to_string path) in + let lines = read_lines ic in + close_in ic; + lines + +let create_targets_file f = Fpath.(base f |> set_ext ".targets") + +let get_path_to_targets_file backend f = + create_targets_file f |> Fpath.to_string |> Fpath.( / ) backend + +let expected_targets backend test_case = + let targets_file = get_path_to_targets_file backend test_case in + try lines_of_file targets_file with _ -> [] + +let expected_targets' backend test_case = + expected_targets backend test_case |> List.map (fun t -> Atom (t ^ ".gen")) + +let gen_targets_file enabledif ?flat_flag backend target_path path = + let flat_flag = match flat_flag with None -> [] | Some x -> [ Atom x ] in + List + [ + Atom "subdir"; + Atom (Fpath.to_string backend); + List + ([ + Atom "rule"; + List + [ + Atom "action"; + List + [ + Atom "with-outputs-to"; + Atom Fpath.(to_string (set_ext ".gen" target_path)); + List + ([ + Atom "run"; + Atom "odoc"; + Atom (Fpath.to_string backend ^ "-targets"); + Atom "-o"; + Atom "."; + Atom ("%{dep:" ^ Fpath.to_string path ^ "}"); + ] + @ flat_flag); + ]; + ]; + ] + @ enabledif); + ] + +let target_diff_rule enabledif backend path = + let p = Fpath.( // ) backend path in + List + ([ + Atom "rule"; + List [ Atom "alias"; Atom "runtest" ]; + List + [ + Atom "action"; + List + [ + Atom "diff"; + Atom (Fpath.to_string p); + Atom Fpath.(to_string (p |> set_ext ".gen")); + ]; + ]; + ] + @ enabledif) + +let gen_and_diff_target_files_rules enabledif ?flat_flag backend p = + match flat_flag with + | Some flat_flag -> ( + let path = Fpath.relativize ~root:backend p in + match path with + | Some p -> + let p' = create_targets_file p in + [ + gen_targets_file enabledif ~flat_flag backend p' p; + target_diff_rule enabledif backend p'; + ] + | None -> []) + | None -> ( + let path = Fpath.relativize ~root:backend p in + match path with + | Some p -> + let p' = create_targets_file p in + [ + gen_targets_file enabledif backend p' p; + target_diff_rule enabledif backend p'; + ] + | None -> []) + +let gen_backend_diff_rule enabledif (b_t_r, b, _) p = + let p = odocls b p in + match expected_targets' b p with + | [] -> [] + | _ -> + [ + List + [ + Atom "subdir"; + Atom (Fpath.to_string b); + List + ([ + Atom "rule"; + List (Atom "targets" :: expected_targets' b p); + b_t_r p; + ] + @ enabledif); + ]; + ] + +let diff_rule enabledif backend t = + let t' = Fpath.( // ) backend t in + List + ([ + Atom "rule"; + List [ Atom "alias"; Atom "runtest" ]; + List + [ + Atom "action"; + List + [ + Atom "diff"; + Atom (Fpath.to_string t'); + Atom (Fpath.to_string t' ^ ".gen"); + ]; + ]; + ] + @ enabledif) + +let diff_rule enabledif backend p = + let t = expected_targets backend p |> List.map Fpath.v in + List.map (diff_rule enabledif backend) t + +let gen_backend_rule enabledif backend_target_rules path = + List.map + (fun b_t_r -> + let _, b, flag = b_t_r in + match flag with + | Some flat_flag -> + [ + gen_backend_diff_rule enabledif b_t_r path; + diff_rule enabledif b path; + gen_and_diff_target_files_rules enabledif ~flat_flag b path; + ] + |> List.concat + | None -> + [ + gen_backend_diff_rule enabledif b_t_r path; + diff_rule enabledif b path; + gen_and_diff_target_files_rules enabledif b path; + ] + |> List.concat) + backend_target_rules + |> List.flatten + +let gen_rule enabledif backend_target_rules paths = + let enabledif v = + match List.assoc v enabledif with + | exception Not_found -> [] + | Min v -> + [ + List + [ + Atom "enabled_if"; + List [ Atom ">="; Atom "%{ocaml_version}"; Atom v ]; + ]; + ] + | Max v -> + [ + List + [ + Atom "enabled_if"; + List [ Atom "<="; Atom "%{ocaml_version}"; Atom v ]; + ]; + ] + | MinMax (min, max) -> + [ + List + [ + Atom "enabled_if"; + List + [ + Atom "and"; + List [ Atom ">="; Atom "%{ocaml_version}"; Atom min ]; + List [ Atom "<="; Atom "%{ocaml_version}"; Atom max ]; + ]; + ]; + ] + in + let paths' = + List.map + (fun origp -> + let path = Fpath.relativize ~root:cases origp in + match path with + | Some p -> + let odocl = + if Fpath.get_ext p = ".mld" then + set_odocl_ext Fpath.(parent p / ("page-" ^ filename p)) + else set_odocl_ext Fpath.(parent p / filename p) + in + (origp, odocl, enabledif p) + | None -> assert false) + paths + in + List.concat + [ + List.( + concat + (map + (fun (path, _, enabledif) -> + gen_rule_for_source_file enabledif path) + paths')); + List.map + (fun (_, p, enabledif) -> + gen_backend_rule enabledif backend_target_rules p) + paths' + |> List.flatten; + ] From 462781d3f4a64d77645a8512e935023a8b16b710 Mon Sep 17 00:00:00 2001 From: lubegasimon Date: Tue, 6 Jul 2021 19:18:42 +0300 Subject: [PATCH 3/8] add and promote `link.dune.inc` Signed-off-by: lubegasimon --- test/generators/link.dune.inc | 7172 +++++++++++++++++++++++++++++++++ 1 file changed, 7172 insertions(+) create mode 100644 test/generators/link.dune.inc diff --git a/test/generators/link.dune.inc b/test/generators/link.dune.inc new file mode 100644 index 0000000000..3645940ab5 --- /dev/null +++ b/test/generators/link.dune.inc @@ -0,0 +1,7172 @@ +(rule + (target alias.cmt) + (deps cases/alias.ml) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target alias.odoc) + (deps alias.cmt) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target alias.odocl) + (deps alias.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target bugs.cmt) + (deps cases/bugs.ml) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target bugs.odoc) + (deps bugs.cmt) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target bugs.odocl) + (deps bugs.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target bugs_post_406.cmti) + (deps cases/bugs_post_406.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.06))) + +(rule + (target bugs_post_406.odoc) + (deps bugs_post_406.cmti) + (action + (run odoc compile -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.06))) + +(rule + (target bugs_post_406.odocl) + (deps bugs_post_406.odoc) + (action + (run odoc link -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.06))) + +(rule + (target bugs_pre_410.cmt) + (deps cases/bugs_pre_410.ml) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps})) + (enabled_if + (<= %{ocaml_version} 4.09))) + +(rule + (target bugs_pre_410.odoc) + (deps bugs_pre_410.cmt) + (action + (run odoc compile -o %{target} %{deps})) + (enabled_if + (<= %{ocaml_version} 4.09))) + +(rule + (target bugs_pre_410.odocl) + (deps bugs_pre_410.odoc) + (action + (run odoc link -o %{target} %{deps})) + (enabled_if + (<= %{ocaml_version} 4.09))) + +(rule + (target class.cmti) + (deps cases/class.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target class.odoc) + (deps class.cmti) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target class.odocl) + (deps class.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target external.cmti) + (deps cases/external.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target external.odoc) + (deps external.cmti) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target external.odocl) + (deps external.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target functor.cmti) + (deps cases/functor.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target functor.odoc) + (deps functor.cmti) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target functor.odocl) + (deps functor.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target functor2.cmti) + (deps cases/functor2.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target functor2.odoc) + (deps functor2.cmti) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target functor2.odocl) + (deps functor2.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target include.cmti) + (deps cases/include.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target include.odoc) + (deps include.cmti) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target include.odocl) + (deps include.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target include2.cmt) + (deps cases/include2.ml) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target include2.odoc) + (deps include2.cmt) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target include2.odocl) + (deps include2.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target include_sections.cmti) + (deps cases/include_sections.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target include_sections.odoc) + (deps include_sections.cmti) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target include_sections.odocl) + (deps include_sections.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target interlude.cmti) + (deps cases/interlude.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target interlude.odoc) + (deps interlude.cmti) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target interlude.odocl) + (deps interlude.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target labels.cmti) + (deps cases/labels.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (target labels.odoc) + (deps labels.cmti) + (action + (run odoc compile -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (target labels.odocl) + (deps labels.odoc) + (action + (run odoc link -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (target markup.cmti) + (deps cases/markup.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target markup.odoc) + (deps markup.cmti) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target markup.odocl) + (deps markup.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target page-mld.odoc) + (deps cases/mld.mld) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target page-mld.odocl) + (deps page-mld.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target module.cmti) + (deps cases/module.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target module.odoc) + (deps module.cmti) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target module.odocl) + (deps module.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target module_type_subst.cmti) + (deps cases/module_type_subst.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.13))) + +(rule + (target module_type_subst.odoc) + (deps module_type_subst.cmti) + (action + (run odoc compile -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.13))) + +(rule + (target module_type_subst.odocl) + (deps module_type_subst.odoc) + (action + (run odoc link -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.13))) + +(rule + (target nested.cmti) + (deps cases/nested.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target nested.odoc) + (deps nested.cmti) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target nested.odocl) + (deps nested.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target ocamlary.cmti) + (deps cases/ocamlary.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (target ocamlary.odoc) + (deps ocamlary.cmti) + (action + (run odoc compile -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (target ocamlary.odocl) + (deps ocamlary.odoc) + (action + (run odoc link -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (target recent.cmti) + (deps cases/recent.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (target recent.odoc) + (deps recent.cmti) + (action + (run odoc compile -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (target recent.odocl) + (deps recent.odoc) + (action + (run odoc link -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (target recent_impl.cmt) + (deps cases/recent_impl.ml) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (target recent_impl.odoc) + (deps recent_impl.cmt) + (action + (run odoc compile -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (target recent_impl.odocl) + (deps recent_impl.odoc) + (action + (run odoc link -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (target section.cmti) + (deps cases/section.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target section.odoc) + (deps section.cmti) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target section.odocl) + (deps section.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target stop.cmti) + (deps cases/stop.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target stop.odoc) + (deps stop.cmti) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target stop.odocl) + (deps stop.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target stop_dead_link_doc.cmti) + (deps cases/stop_dead_link_doc.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.04))) + +(rule + (target stop_dead_link_doc.odoc) + (deps stop_dead_link_doc.cmti) + (action + (run odoc compile -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.04))) + +(rule + (target stop_dead_link_doc.odocl) + (deps stop_dead_link_doc.odoc) + (action + (run odoc link -o %{target} %{deps})) + (enabled_if + (>= %{ocaml_version} 4.04))) + +(rule + (target toplevel_comments.cmti) + (deps cases/toplevel_comments.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target toplevel_comments.odoc) + (deps toplevel_comments.cmti) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target toplevel_comments.odocl) + (deps toplevel_comments.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target type.cmti) + (deps cases/type.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target type.odoc) + (deps type.cmti) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target type.odocl) + (deps type.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(rule + (target val.cmti) + (deps cases/val.mli) + (action + (run ocamlc -c -bin-annot -o %{target} %{deps}))) + +(rule + (target val.odoc) + (deps val.cmti) + (action + (run odoc compile -o %{target} %{deps}))) + +(rule + (target val.odocl) + (deps val.odoc) + (action + (run odoc link -o %{target} %{deps}))) + +(subdir + html + (rule + (targets Alias.html.gen Alias-Foo__X.html.gen Alias-X.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../alias.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Alias.html html/Alias.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Alias-Foo__X.html html/Alias-Foo__X.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Alias-X.html html/Alias-X.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + alias.gen + (run odoc html-targets -o . %{dep:../alias.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/alias.targets html/alias.gen))) + +(subdir + latex + (rule + (targets Alias.tex.gen Alias.X.tex.gen) + (action + (progn + (run odoc latex-generate -o . --extra-suffix gen %{dep:../alias.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Alias.tex latex/Alias.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Alias.X.tex latex/Alias.X.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + alias.gen + (run odoc latex-targets -o . %{dep:../alias.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/alias.targets latex/alias.gen))) + +(subdir + man + (rule + (targets Alias.3o.gen Alias.Foo__X.3o.gen Alias.X.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../alias.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Alias.3o man/Alias.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Alias.Foo__X.3o man/Alias.Foo__X.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Alias.X.3o man/Alias.X.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + alias.gen + (run odoc man-targets -o . %{dep:../alias.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/alias.targets man/alias.gen))) + +(subdir + html + (rule + (targets Bugs.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../bugs.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Bugs.html html/Bugs.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + bugs.gen + (run odoc html-targets -o . %{dep:../bugs.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/bugs.targets html/bugs.gen))) + +(subdir + latex + (rule + (targets Bugs.tex.gen) + (action + (progn + (run odoc latex-generate -o . --extra-suffix gen %{dep:../bugs.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Bugs.tex latex/Bugs.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + bugs.gen + (run odoc latex-targets -o . %{dep:../bugs.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/bugs.targets latex/bugs.gen))) + +(subdir + man + (rule + (targets Bugs.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../bugs.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Bugs.3o man/Bugs.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + bugs.gen + (run odoc man-targets -o . %{dep:../bugs.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/bugs.targets man/bugs.gen))) + +(subdir + html + (rule + (targets + Bugs_post_406.html.gen + Bugs_post_406-class-type-let_open.html.gen + Bugs_post_406-class-let_open'.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../bugs_post_406.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.06)))) + +(rule + (alias runtest) + (action + (diff html/Bugs_post_406.html html/Bugs_post_406.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.06))) + +(rule + (alias runtest) + (action + (diff + html/Bugs_post_406-class-type-let_open.html + html/Bugs_post_406-class-type-let_open.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.06))) + +(rule + (alias runtest) + (action + (diff + html/Bugs_post_406-class-let_open'.html + html/Bugs_post_406-class-let_open'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.06))) + +(subdir + html + (rule + (action + (with-outputs-to + bugs_post_406.gen + (run odoc html-targets -o . %{dep:../bugs_post_406.odocl} --flat))) + (enabled_if + (>= %{ocaml_version} 4.06)))) + +(rule + (alias runtest) + (action + (diff html/bugs_post_406.targets html/bugs_post_406.gen)) + (enabled_if + (>= %{ocaml_version} 4.06))) + +(subdir + latex + (rule + (targets Bugs_post_406.tex.gen Bugs_post_406.let_open'.tex.gen) + (action + (progn + (run + odoc + latex-generate + -o + . + --extra-suffix + gen + %{dep:../bugs_post_406.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.06)))) + +(rule + (alias runtest) + (action + (diff latex/Bugs_post_406.tex latex/Bugs_post_406.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.06))) + +(rule + (alias runtest) + (action + (diff + latex/Bugs_post_406.let_open'.tex + latex/Bugs_post_406.let_open'.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.06))) + +(subdir + latex + (rule + (action + (with-outputs-to + bugs_post_406.gen + (run odoc latex-targets -o . %{dep:../bugs_post_406.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.06)))) + +(rule + (alias runtest) + (action + (diff latex/bugs_post_406.targets latex/bugs_post_406.gen)) + (enabled_if + (>= %{ocaml_version} 4.06))) + +(subdir + man + (rule + (targets Bugs_post_406.3o.gen Bugs_post_406.let_open'.3o.gen) + (action + (progn + (run + odoc + man-generate + -o + . + --extra-suffix + gen + %{dep:../bugs_post_406.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.06)))) + +(rule + (alias runtest) + (action + (diff man/Bugs_post_406.3o man/Bugs_post_406.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.06))) + +(rule + (alias runtest) + (action + (diff man/Bugs_post_406.let_open'.3o man/Bugs_post_406.let_open'.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.06))) + +(subdir + man + (rule + (action + (with-outputs-to + bugs_post_406.gen + (run odoc man-targets -o . %{dep:../bugs_post_406.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.06)))) + +(rule + (alias runtest) + (action + (diff man/bugs_post_406.targets man/bugs_post_406.gen)) + (enabled_if + (>= %{ocaml_version} 4.06))) + +(subdir + html + (rule + (targets Bugs_pre_410.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../bugs_pre_410.odocl}))) + (enabled_if + (<= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff html/Bugs_pre_410.html html/Bugs_pre_410.html.gen)) + (enabled_if + (<= %{ocaml_version} 4.09))) + +(subdir + html + (rule + (action + (with-outputs-to + bugs_pre_410.gen + (run odoc html-targets -o . %{dep:../bugs_pre_410.odocl} --flat))) + (enabled_if + (<= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff html/bugs_pre_410.targets html/bugs_pre_410.gen)) + (enabled_if + (<= %{ocaml_version} 4.09))) + +(subdir + latex + (rule + (targets Bugs_pre_410.tex.gen) + (action + (progn + (run + odoc + latex-generate + -o + . + --extra-suffix + gen + %{dep:../bugs_pre_410.odocl}))) + (enabled_if + (<= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff latex/Bugs_pre_410.tex latex/Bugs_pre_410.tex.gen)) + (enabled_if + (<= %{ocaml_version} 4.09))) + +(subdir + latex + (rule + (action + (with-outputs-to + bugs_pre_410.gen + (run odoc latex-targets -o . %{dep:../bugs_pre_410.odocl}))) + (enabled_if + (<= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff latex/bugs_pre_410.targets latex/bugs_pre_410.gen)) + (enabled_if + (<= %{ocaml_version} 4.09))) + +(subdir + man + (rule + (targets Bugs_pre_410.3o.gen) + (action + (progn + (run + odoc + man-generate + -o + . + --extra-suffix + gen + %{dep:../bugs_pre_410.odocl}))) + (enabled_if + (<= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff man/Bugs_pre_410.3o man/Bugs_pre_410.3o.gen)) + (enabled_if + (<= %{ocaml_version} 4.09))) + +(subdir + man + (rule + (action + (with-outputs-to + bugs_pre_410.gen + (run odoc man-targets -o . %{dep:../bugs_pre_410.odocl}))) + (enabled_if + (<= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff man/bugs_pre_410.targets man/bugs_pre_410.gen)) + (enabled_if + (<= %{ocaml_version} 4.09))) + +(subdir + html + (rule + (targets + Class.html.gen + Class-class-type-empty.html.gen + Class-class-type-mutually.html.gen + Class-class-type-recursive.html.gen + Class-class-mutually'.html.gen + Class-class-recursive'.html.gen + Class-class-type-empty_virtual.html.gen + Class-class-empty_virtual'.html.gen + Class-class-type-polymorphic.html.gen + Class-class-polymorphic'.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../class.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Class.html html/Class.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Class-class-type-empty.html + html/Class-class-type-empty.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Class-class-type-mutually.html + html/Class-class-type-mutually.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Class-class-type-recursive.html + html/Class-class-type-recursive.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Class-class-mutually'.html html/Class-class-mutually'.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Class-class-recursive'.html + html/Class-class-recursive'.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Class-class-type-empty_virtual.html + html/Class-class-type-empty_virtual.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Class-class-empty_virtual'.html + html/Class-class-empty_virtual'.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Class-class-type-polymorphic.html + html/Class-class-type-polymorphic.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Class-class-polymorphic'.html + html/Class-class-polymorphic'.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + class.gen + (run odoc html-targets -o . %{dep:../class.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/class.targets html/class.gen))) + +(subdir + latex + (rule + (targets + Class.tex.gen + Class.mutually'.tex.gen + Class.recursive'.tex.gen + Class.empty_virtual'.tex.gen + Class.polymorphic'.tex.gen) + (action + (progn + (run odoc latex-generate -o . --extra-suffix gen %{dep:../class.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Class.tex latex/Class.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Class.mutually'.tex latex/Class.mutually'.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Class.recursive'.tex latex/Class.recursive'.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Class.empty_virtual'.tex latex/Class.empty_virtual'.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Class.polymorphic'.tex latex/Class.polymorphic'.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + class.gen + (run odoc latex-targets -o . %{dep:../class.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/class.targets latex/class.gen))) + +(subdir + man + (rule + (targets + Class.3o.gen + Class.mutually'.3o.gen + Class.recursive'.3o.gen + Class.empty_virtual'.3o.gen + Class.polymorphic'.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../class.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Class.3o man/Class.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Class.mutually'.3o man/Class.mutually'.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Class.recursive'.3o man/Class.recursive'.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Class.empty_virtual'.3o man/Class.empty_virtual'.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Class.polymorphic'.3o man/Class.polymorphic'.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + class.gen + (run odoc man-targets -o . %{dep:../class.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/class.targets man/class.gen))) + +(subdir + html + (rule + (targets External.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../external.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/External.html html/External.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + external.gen + (run odoc html-targets -o . %{dep:../external.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/external.targets html/external.gen))) + +(subdir + latex + (rule + (targets External.tex.gen) + (action + (progn + (run + odoc + latex-generate + -o + . + --extra-suffix + gen + %{dep:../external.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/External.tex latex/External.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + external.gen + (run odoc latex-targets -o . %{dep:../external.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/external.targets latex/external.gen))) + +(subdir + man + (rule + (targets External.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../external.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/External.3o man/External.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + external.gen + (run odoc man-targets -o . %{dep:../external.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/external.targets man/external.gen))) + +(subdir + html + (rule + (targets + Functor.html.gen + Functor-module-type-S.html.gen + Functor-module-type-S1.html.gen + Functor-module-type-S1-argument-1-_.html.gen + Functor-F1.html.gen + Functor-F1-argument-1-Arg.html.gen + Functor-F2.html.gen + Functor-F2-argument-1-Arg.html.gen + Functor-F3.html.gen + Functor-F3-argument-1-Arg.html.gen + Functor-F4.html.gen + Functor-F4-argument-1-Arg.html.gen + Functor-F5.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../functor.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Functor.html html/Functor.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Functor-module-type-S.html html/Functor-module-type-S.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Functor-module-type-S1.html + html/Functor-module-type-S1.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Functor-module-type-S1-argument-1-_.html + html/Functor-module-type-S1-argument-1-_.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Functor-F1.html html/Functor-F1.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Functor-F1-argument-1-Arg.html + html/Functor-F1-argument-1-Arg.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Functor-F2.html html/Functor-F2.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Functor-F2-argument-1-Arg.html + html/Functor-F2-argument-1-Arg.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Functor-F3.html html/Functor-F3.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Functor-F3-argument-1-Arg.html + html/Functor-F3-argument-1-Arg.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Functor-F4.html html/Functor-F4.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Functor-F4-argument-1-Arg.html + html/Functor-F4-argument-1-Arg.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Functor-F5.html html/Functor-F5.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + functor.gen + (run odoc html-targets -o . %{dep:../functor.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/functor.targets html/functor.gen))) + +(subdir + latex + (rule + (targets + Functor.tex.gen + Functor.F1.tex.gen + Functor.F2.tex.gen + Functor.F3.tex.gen + Functor.F4.tex.gen + Functor.F5.tex.gen) + (action + (progn + (run odoc latex-generate -o . --extra-suffix gen %{dep:../functor.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Functor.tex latex/Functor.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Functor.F1.tex latex/Functor.F1.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Functor.F2.tex latex/Functor.F2.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Functor.F3.tex latex/Functor.F3.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Functor.F4.tex latex/Functor.F4.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Functor.F5.tex latex/Functor.F5.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + functor.gen + (run odoc latex-targets -o . %{dep:../functor.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/functor.targets latex/functor.gen))) + +(subdir + man + (rule + (targets + Functor.3o.gen + Functor.F1.3o.gen + Functor.F2.3o.gen + Functor.F3.3o.gen + Functor.F4.3o.gen + Functor.F5.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../functor.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Functor.3o man/Functor.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Functor.F1.3o man/Functor.F1.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Functor.F2.3o man/Functor.F2.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Functor.F3.3o man/Functor.F3.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Functor.F4.3o man/Functor.F4.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Functor.F5.3o man/Functor.F5.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + functor.gen + (run odoc man-targets -o . %{dep:../functor.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/functor.targets man/functor.gen))) + +(subdir + html + (rule + (targets + Functor2.html.gen + Functor2-module-type-S.html.gen + Functor2-X.html.gen + Functor2-X-argument-1-Y.html.gen + Functor2-X-argument-2-Z.html.gen + Functor2-module-type-XF.html.gen + Functor2-module-type-XF-argument-1-Y.html.gen + Functor2-module-type-XF-argument-2-Z.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../functor2.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Functor2.html html/Functor2.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Functor2-module-type-S.html + html/Functor2-module-type-S.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Functor2-X.html html/Functor2-X.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Functor2-X-argument-1-Y.html + html/Functor2-X-argument-1-Y.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Functor2-X-argument-2-Z.html + html/Functor2-X-argument-2-Z.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Functor2-module-type-XF.html + html/Functor2-module-type-XF.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Functor2-module-type-XF-argument-1-Y.html + html/Functor2-module-type-XF-argument-1-Y.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Functor2-module-type-XF-argument-2-Z.html + html/Functor2-module-type-XF-argument-2-Z.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + functor2.gen + (run odoc html-targets -o . %{dep:../functor2.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/functor2.targets html/functor2.gen))) + +(subdir + latex + (rule + (targets Functor2.tex.gen Functor2.X.tex.gen) + (action + (progn + (run + odoc + latex-generate + -o + . + --extra-suffix + gen + %{dep:../functor2.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Functor2.tex latex/Functor2.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Functor2.X.tex latex/Functor2.X.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + functor2.gen + (run odoc latex-targets -o . %{dep:../functor2.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/functor2.targets latex/functor2.gen))) + +(subdir + man + (rule + (targets Functor2.3o.gen Functor2.X.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../functor2.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Functor2.3o man/Functor2.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Functor2.X.3o man/Functor2.X.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + functor2.gen + (run odoc man-targets -o . %{dep:../functor2.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/functor2.targets man/functor2.gen))) + +(subdir + html + (rule + (targets + Include.html.gen + Include-module-type-Not_inlined.html.gen + Include-module-type-Inlined.html.gen + Include-module-type-Not_inlined_and_closed.html.gen + Include-module-type-Not_inlined_and_opened.html.gen + Include-module-type-Inherent_Module.html.gen + Include-module-type-Dorminant_Module.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../include.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Include.html html/Include.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Include-module-type-Not_inlined.html + html/Include-module-type-Not_inlined.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Include-module-type-Inlined.html + html/Include-module-type-Inlined.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Include-module-type-Not_inlined_and_closed.html + html/Include-module-type-Not_inlined_and_closed.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Include-module-type-Not_inlined_and_opened.html + html/Include-module-type-Not_inlined_and_opened.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Include-module-type-Inherent_Module.html + html/Include-module-type-Inherent_Module.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Include-module-type-Dorminant_Module.html + html/Include-module-type-Dorminant_Module.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + include.gen + (run odoc html-targets -o . %{dep:../include.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/include.targets html/include.gen))) + +(subdir + latex + (rule + (targets Include.tex.gen) + (action + (progn + (run odoc latex-generate -o . --extra-suffix gen %{dep:../include.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Include.tex latex/Include.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + include.gen + (run odoc latex-targets -o . %{dep:../include.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/include.targets latex/include.gen))) + +(subdir + man + (rule + (targets Include.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../include.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Include.3o man/Include.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + include.gen + (run odoc man-targets -o . %{dep:../include.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/include.targets man/include.gen))) + +(subdir + html + (rule + (targets + Include2.html.gen + Include2-X.html.gen + Include2-Y.html.gen + Include2-Y_include_synopsis.html.gen + Include2-Y_include_doc.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../include2.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Include2.html html/Include2.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Include2-X.html html/Include2-X.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Include2-Y.html html/Include2-Y.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Include2-Y_include_synopsis.html + html/Include2-Y_include_synopsis.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Include2-Y_include_doc.html + html/Include2-Y_include_doc.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + include2.gen + (run odoc html-targets -o . %{dep:../include2.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/include2.targets html/include2.gen))) + +(subdir + latex + (rule + (targets Include2.tex.gen) + (action + (progn + (run + odoc + latex-generate + -o + . + --extra-suffix + gen + %{dep:../include2.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Include2.tex latex/Include2.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + include2.gen + (run odoc latex-targets -o . %{dep:../include2.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/include2.targets latex/include2.gen))) + +(subdir + man + (rule + (targets + Include2.3o.gen + Include2.X.3o.gen + Include2.Y.3o.gen + Include2.Y_include_synopsis.3o.gen + Include2.Y_include_doc.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../include2.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Include2.3o man/Include2.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Include2.X.3o man/Include2.X.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Include2.Y.3o man/Include2.Y.3o.gen))) + +(rule + (alias runtest) + (action + (diff + man/Include2.Y_include_synopsis.3o + man/Include2.Y_include_synopsis.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Include2.Y_include_doc.3o man/Include2.Y_include_doc.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + include2.gen + (run odoc man-targets -o . %{dep:../include2.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/include2.targets man/include2.gen))) + +(subdir + html + (rule + (targets + Include_sections.html.gen + Include_sections-module-type-Something.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../include_sections.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Include_sections.html html/Include_sections.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Include_sections-module-type-Something.html + html/Include_sections-module-type-Something.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + include_sections.gen + (run odoc html-targets -o . %{dep:../include_sections.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/include_sections.targets html/include_sections.gen))) + +(subdir + latex + (rule + (targets Include_sections.tex.gen) + (action + (progn + (run + odoc + latex-generate + -o + . + --extra-suffix + gen + %{dep:../include_sections.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Include_sections.tex latex/Include_sections.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + include_sections.gen + (run odoc latex-targets -o . %{dep:../include_sections.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/include_sections.targets latex/include_sections.gen))) + +(subdir + man + (rule + (targets Include_sections.3o.gen) + (action + (progn + (run + odoc + man-generate + -o + . + --extra-suffix + gen + %{dep:../include_sections.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Include_sections.3o man/Include_sections.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + include_sections.gen + (run odoc man-targets -o . %{dep:../include_sections.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/include_sections.targets man/include_sections.gen))) + +(subdir + html + (rule + (targets Interlude.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../interlude.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Interlude.html html/Interlude.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + interlude.gen + (run odoc html-targets -o . %{dep:../interlude.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/interlude.targets html/interlude.gen))) + +(subdir + latex + (rule + (targets Interlude.tex.gen) + (action + (progn + (run + odoc + latex-generate + -o + . + --extra-suffix + gen + %{dep:../interlude.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Interlude.tex latex/Interlude.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + interlude.gen + (run odoc latex-targets -o . %{dep:../interlude.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/interlude.targets latex/interlude.gen))) + +(subdir + man + (rule + (targets Interlude.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../interlude.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Interlude.3o man/Interlude.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + interlude.gen + (run odoc man-targets -o . %{dep:../interlude.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/interlude.targets man/interlude.gen))) + +(subdir + html + (rule + (targets + Labels.html.gen + Labels-A.html.gen + Labels-module-type-S.html.gen + Labels-class-c.html.gen + Labels-class-type-cs.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../labels.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff html/Labels.html html/Labels.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff html/Labels-A.html html/Labels-A.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff html/Labels-module-type-S.html html/Labels-module-type-S.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff html/Labels-class-c.html html/Labels-class-c.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff html/Labels-class-type-cs.html html/Labels-class-type-cs.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + html + (rule + (action + (with-outputs-to + labels.gen + (run odoc html-targets -o . %{dep:../labels.odocl} --flat))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff html/labels.targets html/labels.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + latex + (rule + (targets Labels.tex.gen Labels.c.tex.gen) + (action + (progn + (run odoc latex-generate -o . --extra-suffix gen %{dep:../labels.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff latex/Labels.tex latex/Labels.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff latex/Labels.c.tex latex/Labels.c.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + latex + (rule + (action + (with-outputs-to + labels.gen + (run odoc latex-targets -o . %{dep:../labels.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff latex/labels.targets latex/labels.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + man + (rule + (targets Labels.3o.gen Labels.A.3o.gen Labels.c.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../labels.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff man/Labels.3o man/Labels.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff man/Labels.A.3o man/Labels.A.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff man/Labels.c.3o man/Labels.c.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + man + (rule + (action + (with-outputs-to + labels.gen + (run odoc man-targets -o . %{dep:../labels.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff man/labels.targets man/labels.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + html + (rule + (targets Markup.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../markup.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Markup.html html/Markup.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + markup.gen + (run odoc html-targets -o . %{dep:../markup.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/markup.targets html/markup.gen))) + +(subdir + latex + (rule + (targets Markup.tex.gen) + (action + (progn + (run odoc latex-generate -o . --extra-suffix gen %{dep:../markup.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Markup.tex latex/Markup.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + markup.gen + (run odoc latex-targets -o . %{dep:../markup.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/markup.targets latex/markup.gen))) + +(subdir + man + (rule + (targets Markup.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../markup.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Markup.3o man/Markup.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + markup.gen + (run odoc man-targets -o . %{dep:../markup.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/markup.targets man/markup.gen))) + +(subdir + html + (rule + (targets mld.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../page-mld.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/mld.html html/mld.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + page-mld.gen + (run odoc html-targets -o . %{dep:../page-mld.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/page-mld.targets html/page-mld.gen))) + +(subdir + latex + (rule + (targets mld.tex.gen) + (action + (progn + (run + odoc + latex-generate + -o + . + --extra-suffix + gen + %{dep:../page-mld.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/mld.tex latex/mld.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + page-mld.gen + (run odoc latex-targets -o . %{dep:../page-mld.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/page-mld.targets latex/page-mld.gen))) + +(subdir + man + (rule + (targets mld.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../page-mld.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/mld.3o man/mld.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + page-mld.gen + (run odoc man-targets -o . %{dep:../page-mld.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/page-mld.targets man/page-mld.gen))) + +(subdir + html + (rule + (targets + Module.html.gen + Module-module-type-S.html.gen + Module-module-type-S-M.html.gen + Module-module-type-S2.html.gen + Module-module-type-S2-M.html.gen + Module-module-type-S3.html.gen + Module-module-type-S3-M.html.gen + Module-module-type-S4.html.gen + Module-module-type-S4-M.html.gen + Module-module-type-S5.html.gen + Module-module-type-S5-M.html.gen + Module-module-type-S6.html.gen + Module-module-type-S6-M.html.gen + Module-M'.html.gen + Module-module-type-S7.html.gen + Module-module-type-S8.html.gen + Module-module-type-S9.html.gen + Module-Mutually.html.gen + Module-Recursive.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../module.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Module.html html/Module.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Module-module-type-S.html html/Module-module-type-S.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Module-module-type-S-M.html + html/Module-module-type-S-M.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Module-module-type-S2.html html/Module-module-type-S2.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Module-module-type-S2-M.html + html/Module-module-type-S2-M.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Module-module-type-S3.html html/Module-module-type-S3.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Module-module-type-S3-M.html + html/Module-module-type-S3-M.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Module-module-type-S4.html html/Module-module-type-S4.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Module-module-type-S4-M.html + html/Module-module-type-S4-M.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Module-module-type-S5.html html/Module-module-type-S5.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Module-module-type-S5-M.html + html/Module-module-type-S5-M.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Module-module-type-S6.html html/Module-module-type-S6.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Module-module-type-S6-M.html + html/Module-module-type-S6-M.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Module-M'.html html/Module-M'.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Module-module-type-S7.html html/Module-module-type-S7.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Module-module-type-S8.html html/Module-module-type-S8.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Module-module-type-S9.html html/Module-module-type-S9.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Module-Mutually.html html/Module-Mutually.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Module-Recursive.html html/Module-Recursive.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + module.gen + (run odoc html-targets -o . %{dep:../module.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/module.targets html/module.gen))) + +(subdir + latex + (rule + (targets Module.tex.gen) + (action + (progn + (run odoc latex-generate -o . --extra-suffix gen %{dep:../module.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Module.tex latex/Module.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + module.gen + (run odoc latex-targets -o . %{dep:../module.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/module.targets latex/module.gen))) + +(subdir + man + (rule + (targets + Module.3o.gen + Module.M'.3o.gen + Module.Mutually.3o.gen + Module.Recursive.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../module.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Module.3o man/Module.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Module.M'.3o man/Module.M'.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Module.Mutually.3o man/Module.Mutually.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Module.Recursive.3o man/Module.Recursive.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + module.gen + (run odoc man-targets -o . %{dep:../module.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/module.targets man/module.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + module_type_subst.gen + (run odoc html-targets -o . %{dep:../module_type_subst.odocl} --flat))) + (enabled_if + (>= %{ocaml_version} 4.13)))) + +(rule + (alias runtest) + (action + (diff html/module_type_subst.targets html/module_type_subst.gen)) + (enabled_if + (>= %{ocaml_version} 4.13))) + +(subdir + latex + (rule + (action + (with-outputs-to + module_type_subst.gen + (run odoc latex-targets -o . %{dep:../module_type_subst.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.13)))) + +(rule + (alias runtest) + (action + (diff latex/module_type_subst.targets latex/module_type_subst.gen)) + (enabled_if + (>= %{ocaml_version} 4.13))) + +(subdir + man + (rule + (action + (with-outputs-to + module_type_subst.gen + (run odoc man-targets -o . %{dep:../module_type_subst.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.13)))) + +(rule + (alias runtest) + (action + (diff man/module_type_subst.targets man/module_type_subst.gen)) + (enabled_if + (>= %{ocaml_version} 4.13))) + +(subdir + html + (rule + (targets + Nested.html.gen + Nested-X.html.gen + Nested-module-type-Y.html.gen + Nested-F.html.gen + Nested-F-argument-1-Arg1.html.gen + Nested-F-argument-2-Arg2.html.gen + Nested-class-z.html.gen + Nested-class-inherits.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../nested.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Nested.html html/Nested.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Nested-X.html html/Nested-X.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Nested-module-type-Y.html html/Nested-module-type-Y.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Nested-F.html html/Nested-F.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Nested-F-argument-1-Arg1.html + html/Nested-F-argument-1-Arg1.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Nested-F-argument-2-Arg2.html + html/Nested-F-argument-2-Arg2.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Nested-class-z.html html/Nested-class-z.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Nested-class-inherits.html html/Nested-class-inherits.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + nested.gen + (run odoc html-targets -o . %{dep:../nested.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/nested.targets html/nested.gen))) + +(subdir + latex + (rule + (targets + Nested.tex.gen + Nested.F.tex.gen + Nested.z.tex.gen + Nested.inherits.tex.gen) + (action + (progn + (run odoc latex-generate -o . --extra-suffix gen %{dep:../nested.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Nested.tex latex/Nested.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Nested.F.tex latex/Nested.F.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Nested.z.tex latex/Nested.z.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Nested.inherits.tex latex/Nested.inherits.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + nested.gen + (run odoc latex-targets -o . %{dep:../nested.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/nested.targets latex/nested.gen))) + +(subdir + man + (rule + (targets + Nested.3o.gen + Nested.X.3o.gen + Nested.F.3o.gen + Nested.z.3o.gen + Nested.inherits.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../nested.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Nested.3o man/Nested.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Nested.X.3o man/Nested.X.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Nested.F.3o man/Nested.F.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Nested.z.3o man/Nested.z.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Nested.inherits.3o man/Nested.inherits.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + nested.gen + (run odoc man-targets -o . %{dep:../nested.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/nested.targets man/nested.gen))) + +(subdir + html + (rule + (targets + Ocamlary.html.gen + Ocamlary-Empty.html.gen + Ocamlary-module-type-Empty.html.gen + Ocamlary-module-type-MissingComment.html.gen + Ocamlary-module-type-EmptySig.html.gen + Ocamlary-module-type-EmptySigAlias.html.gen + Ocamlary-ModuleWithSignature.html.gen + Ocamlary-ModuleWithSignatureAlias.html.gen + Ocamlary-One.html.gen + Ocamlary-module-type-SigForMod.html.gen + Ocamlary-module-type-SigForMod-Inner.html.gen + Ocamlary-module-type-SigForMod-Inner-module-type-Empty.html.gen + Ocamlary-module-type-SuperSig.html.gen + Ocamlary-module-type-SuperSig-module-type-SubSigA.html.gen + Ocamlary-module-type-SuperSig-module-type-SubSigA-SubSigAMod.html.gen + Ocamlary-module-type-SuperSig-module-type-SubSigB.html.gen + Ocamlary-module-type-SuperSig-module-type-EmptySig.html.gen + Ocamlary-module-type-SuperSig-module-type-One.html.gen + Ocamlary-module-type-SuperSig-module-type-SuperSig.html.gen + Ocamlary-Buffer.html.gen + Ocamlary-CollectionModule.html.gen + Ocamlary-CollectionModule-InnerModuleA.html.gen + Ocamlary-CollectionModule-InnerModuleA-InnerModuleA'.html.gen + Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html.gen + Ocamlary-CollectionModule-module-type-InnerModuleTypeA.html.gen + Ocamlary-module-type-COLLECTION.html.gen + Ocamlary-module-type-COLLECTION-InnerModuleA.html.gen + Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA'.html.gen + Ocamlary-module-type-COLLECTION-InnerModuleA-module-type-InnerModuleTypeA'.html.gen + Ocamlary-module-type-COLLECTION-module-type-InnerModuleTypeA.html.gen + Ocamlary-Recollection.html.gen + Ocamlary-Recollection-argument-1-C.html.gen + Ocamlary-Recollection-argument-1-C-InnerModuleA.html.gen + Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA'.html.gen + Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA'.html.gen + Ocamlary-Recollection-argument-1-C-module-type-InnerModuleTypeA.html.gen + Ocamlary-Recollection-InnerModuleA.html.gen + Ocamlary-Recollection-InnerModuleA-InnerModuleA'.html.gen + Ocamlary-Recollection-InnerModuleA-module-type-InnerModuleTypeA'.html.gen + Ocamlary-Recollection-module-type-InnerModuleTypeA.html.gen + Ocamlary-module-type-MMM.html.gen + Ocamlary-module-type-MMM-C.html.gen + Ocamlary-module-type-MMM-C-InnerModuleA.html.gen + Ocamlary-module-type-MMM-C-InnerModuleA-InnerModuleA'.html.gen + Ocamlary-module-type-MMM-C-InnerModuleA-module-type-InnerModuleTypeA'.html.gen + Ocamlary-module-type-MMM-C-module-type-InnerModuleTypeA.html.gen + Ocamlary-module-type-RECOLLECTION.html.gen + Ocamlary-module-type-RecollectionModule.html.gen + Ocamlary-module-type-RecollectionModule-InnerModuleA.html.gen + Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA'.html.gen + Ocamlary-module-type-RecollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html.gen + Ocamlary-module-type-RecollectionModule-module-type-InnerModuleTypeA.html.gen + Ocamlary-module-type-A.html.gen + Ocamlary-module-type-A-Q.html.gen + Ocamlary-module-type-A-Q-InnerModuleA.html.gen + Ocamlary-module-type-A-Q-InnerModuleA-InnerModuleA'.html.gen + Ocamlary-module-type-A-Q-InnerModuleA-module-type-InnerModuleTypeA'.html.gen + Ocamlary-module-type-A-Q-module-type-InnerModuleTypeA.html.gen + Ocamlary-module-type-B.html.gen + Ocamlary-module-type-B-Q.html.gen + Ocamlary-module-type-B-Q-InnerModuleA.html.gen + Ocamlary-module-type-B-Q-InnerModuleA-InnerModuleA'.html.gen + Ocamlary-module-type-B-Q-InnerModuleA-module-type-InnerModuleTypeA'.html.gen + Ocamlary-module-type-B-Q-module-type-InnerModuleTypeA.html.gen + Ocamlary-module-type-C.html.gen + Ocamlary-module-type-C-Q.html.gen + Ocamlary-module-type-C-Q-InnerModuleA.html.gen + Ocamlary-module-type-C-Q-InnerModuleA-InnerModuleA'.html.gen + Ocamlary-module-type-C-Q-InnerModuleA-module-type-InnerModuleTypeA'.html.gen + Ocamlary-module-type-C-Q-module-type-InnerModuleTypeA.html.gen + Ocamlary-FunctorTypeOf.html.gen + Ocamlary-FunctorTypeOf-argument-1-Collection.html.gen + Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA.html.gen + Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA'.html.gen + Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA'.html.gen + Ocamlary-FunctorTypeOf-argument-1-Collection-module-type-InnerModuleTypeA.html.gen + Ocamlary-module-type-IncludeModuleType.html.gen + Ocamlary-module-type-ToInclude.html.gen + Ocamlary-module-type-ToInclude-IncludedA.html.gen + Ocamlary-module-type-ToInclude-module-type-IncludedB.html.gen + Ocamlary-IncludedA.html.gen + Ocamlary-module-type-IncludedB.html.gen + Ocamlary-ExtMod.html.gen + Ocamlary-class-empty_class.html.gen + Ocamlary-class-one_method_class.html.gen + Ocamlary-class-two_method_class.html.gen + Ocamlary-class-param_class.html.gen + Ocamlary-Dep1.html.gen + Ocamlary-Dep1-module-type-S.html.gen + Ocamlary-Dep1-module-type-S-class-c.html.gen + Ocamlary-Dep1-X.html.gen + Ocamlary-Dep1-X-Y.html.gen + Ocamlary-Dep1-X-Y-class-c.html.gen + Ocamlary-Dep2.html.gen + Ocamlary-Dep2-argument-1-Arg.html.gen + Ocamlary-Dep2-argument-1-Arg-X.html.gen + Ocamlary-Dep2-A.html.gen + Ocamlary-Dep3.html.gen + Ocamlary-Dep4.html.gen + Ocamlary-Dep4-module-type-T.html.gen + Ocamlary-Dep4-module-type-S.html.gen + Ocamlary-Dep4-module-type-S-X.html.gen + Ocamlary-Dep4-module-type-S-Y.html.gen + Ocamlary-Dep4-X.html.gen + Ocamlary-Dep5.html.gen + Ocamlary-Dep5-argument-1-Arg.html.gen + Ocamlary-Dep5-argument-1-Arg-module-type-S.html.gen + Ocamlary-Dep5-argument-1-Arg-module-type-S-Y.html.gen + Ocamlary-Dep5-Z.html.gen + Ocamlary-Dep6.html.gen + Ocamlary-Dep6-module-type-S.html.gen + Ocamlary-Dep6-module-type-T.html.gen + Ocamlary-Dep6-module-type-T-module-type-R.html.gen + Ocamlary-Dep6-module-type-T-Y.html.gen + Ocamlary-Dep6-X.html.gen + Ocamlary-Dep6-X-module-type-R.html.gen + Ocamlary-Dep6-X-Y.html.gen + Ocamlary-Dep7.html.gen + Ocamlary-Dep7-argument-1-Arg.html.gen + Ocamlary-Dep7-argument-1-Arg-module-type-T.html.gen + Ocamlary-Dep7-argument-1-Arg-X.html.gen + Ocamlary-Dep7-M.html.gen + Ocamlary-Dep8.html.gen + Ocamlary-Dep8-module-type-T.html.gen + Ocamlary-Dep9.html.gen + Ocamlary-Dep9-argument-1-X.html.gen + Ocamlary-module-type-Dep10.html.gen + Ocamlary-Dep11.html.gen + Ocamlary-Dep11-module-type-S.html.gen + Ocamlary-Dep11-module-type-S-class-c.html.gen + Ocamlary-Dep12.html.gen + Ocamlary-Dep12-argument-1-Arg.html.gen + Ocamlary-Dep13.html.gen + Ocamlary-Dep13-class-c.html.gen + Ocamlary-module-type-With1.html.gen + Ocamlary-module-type-With1-M.html.gen + Ocamlary-With2.html.gen + Ocamlary-With2-module-type-S.html.gen + Ocamlary-With3.html.gen + Ocamlary-With3-N.html.gen + Ocamlary-With4.html.gen + Ocamlary-With4-N.html.gen + Ocamlary-With5.html.gen + Ocamlary-With5-module-type-S.html.gen + Ocamlary-With5-N.html.gen + Ocamlary-With6.html.gen + Ocamlary-With6-module-type-T.html.gen + Ocamlary-With6-module-type-T-M.html.gen + Ocamlary-With7.html.gen + Ocamlary-With7-argument-1-X.html.gen + Ocamlary-module-type-With8.html.gen + Ocamlary-module-type-With8-M.html.gen + Ocamlary-module-type-With8-M-module-type-S.html.gen + Ocamlary-module-type-With8-M-N.html.gen + Ocamlary-With9.html.gen + Ocamlary-With9-module-type-S.html.gen + Ocamlary-With10.html.gen + Ocamlary-With10-module-type-T.html.gen + Ocamlary-With10-module-type-T-M.html.gen + Ocamlary-module-type-With11.html.gen + Ocamlary-module-type-With11-N.html.gen + Ocamlary-module-type-NestedInclude1.html.gen + Ocamlary-module-type-NestedInclude1-module-type-NestedInclude2.html.gen + Ocamlary-module-type-NestedInclude2.html.gen + Ocamlary-DoubleInclude1.html.gen + Ocamlary-DoubleInclude1-DoubleInclude2.html.gen + Ocamlary-DoubleInclude3.html.gen + Ocamlary-DoubleInclude3-DoubleInclude2.html.gen + Ocamlary-IncludeInclude1.html.gen + Ocamlary-IncludeInclude1-module-type-IncludeInclude2.html.gen + Ocamlary-module-type-IncludeInclude2.html.gen + Ocamlary-CanonicalTest.html.gen + Ocamlary-CanonicalTest-Base__List.html.gen + Ocamlary-CanonicalTest-Base__.html.gen + Ocamlary-CanonicalTest-Base.html.gen + Ocamlary-CanonicalTest-Base-List.html.gen + Ocamlary-CanonicalTest-Base__Tests.html.gen + Ocamlary-CanonicalTest-Base__Tests-C.html.gen + Ocamlary-CanonicalTest-List_modif.html.gen + Ocamlary-Aliases.html.gen + Ocamlary-Aliases-Foo__A.html.gen + Ocamlary-Aliases-Foo__B.html.gen + Ocamlary-Aliases-Foo__C.html.gen + Ocamlary-Aliases-Foo__D.html.gen + Ocamlary-Aliases-Foo__E.html.gen + Ocamlary-Aliases-Foo__.html.gen + Ocamlary-Aliases-Foo.html.gen + Ocamlary-Aliases-Foo-A.html.gen + Ocamlary-Aliases-Foo-B.html.gen + Ocamlary-Aliases-Foo-C.html.gen + Ocamlary-Aliases-Foo-D.html.gen + Ocamlary-Aliases-Foo-E.html.gen + Ocamlary-Aliases-Std.html.gen + Ocamlary-Aliases-E.html.gen + Ocamlary-Aliases-P1.html.gen + Ocamlary-Aliases-P1-Y.html.gen + Ocamlary-Aliases-P2.html.gen + Ocamlary-module-type-M.html.gen + Ocamlary-M.html.gen + Ocamlary-Only_a_module.html.gen + Ocamlary-module-type-TypeExt.html.gen + Ocamlary-module-type-TypeExtPruned.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../ocamlary.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.07)))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary.html html/Ocamlary.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Empty.html html/Ocamlary-Empty.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-Empty.html + html/Ocamlary-module-type-Empty.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-MissingComment.html + html/Ocamlary-module-type-MissingComment.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-EmptySig.html + html/Ocamlary-module-type-EmptySig.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-EmptySigAlias.html + html/Ocamlary-module-type-EmptySigAlias.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-ModuleWithSignature.html + html/Ocamlary-ModuleWithSignature.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-ModuleWithSignatureAlias.html + html/Ocamlary-ModuleWithSignatureAlias.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-One.html html/Ocamlary-One.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-SigForMod.html + html/Ocamlary-module-type-SigForMod.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-SigForMod-Inner.html + html/Ocamlary-module-type-SigForMod-Inner.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-SigForMod-Inner-module-type-Empty.html + html/Ocamlary-module-type-SigForMod-Inner-module-type-Empty.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-SuperSig.html + html/Ocamlary-module-type-SuperSig.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-SuperSig-module-type-SubSigA.html + html/Ocamlary-module-type-SuperSig-module-type-SubSigA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-SuperSig-module-type-SubSigA-SubSigAMod.html + html/Ocamlary-module-type-SuperSig-module-type-SubSigA-SubSigAMod.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-SuperSig-module-type-SubSigB.html + html/Ocamlary-module-type-SuperSig-module-type-SubSigB.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-SuperSig-module-type-EmptySig.html + html/Ocamlary-module-type-SuperSig-module-type-EmptySig.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-SuperSig-module-type-One.html + html/Ocamlary-module-type-SuperSig-module-type-One.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-SuperSig-module-type-SuperSig.html + html/Ocamlary-module-type-SuperSig-module-type-SuperSig.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Buffer.html html/Ocamlary-Buffer.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-CollectionModule.html + html/Ocamlary-CollectionModule.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-CollectionModule-InnerModuleA.html + html/Ocamlary-CollectionModule-InnerModuleA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-CollectionModule-InnerModuleA-InnerModuleA'.html + html/Ocamlary-CollectionModule-InnerModuleA-InnerModuleA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html + html/Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-CollectionModule-module-type-InnerModuleTypeA.html + html/Ocamlary-CollectionModule-module-type-InnerModuleTypeA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-COLLECTION.html + html/Ocamlary-module-type-COLLECTION.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-COLLECTION-InnerModuleA.html + html/Ocamlary-module-type-COLLECTION-InnerModuleA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA'.html + html/Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-COLLECTION-InnerModuleA-module-type-InnerModuleTypeA'.html + html/Ocamlary-module-type-COLLECTION-InnerModuleA-module-type-InnerModuleTypeA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-COLLECTION-module-type-InnerModuleTypeA.html + html/Ocamlary-module-type-COLLECTION-module-type-InnerModuleTypeA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Recollection.html html/Ocamlary-Recollection.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Recollection-argument-1-C.html + html/Ocamlary-Recollection-argument-1-C.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Recollection-argument-1-C-InnerModuleA.html + html/Ocamlary-Recollection-argument-1-C-InnerModuleA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA'.html + html/Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA'.html + html/Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Recollection-argument-1-C-module-type-InnerModuleTypeA.html + html/Ocamlary-Recollection-argument-1-C-module-type-InnerModuleTypeA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Recollection-InnerModuleA.html + html/Ocamlary-Recollection-InnerModuleA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Recollection-InnerModuleA-InnerModuleA'.html + html/Ocamlary-Recollection-InnerModuleA-InnerModuleA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Recollection-InnerModuleA-module-type-InnerModuleTypeA'.html + html/Ocamlary-Recollection-InnerModuleA-module-type-InnerModuleTypeA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Recollection-module-type-InnerModuleTypeA.html + html/Ocamlary-Recollection-module-type-InnerModuleTypeA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-MMM.html + html/Ocamlary-module-type-MMM.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-MMM-C.html + html/Ocamlary-module-type-MMM-C.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-MMM-C-InnerModuleA.html + html/Ocamlary-module-type-MMM-C-InnerModuleA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-MMM-C-InnerModuleA-InnerModuleA'.html + html/Ocamlary-module-type-MMM-C-InnerModuleA-InnerModuleA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-MMM-C-InnerModuleA-module-type-InnerModuleTypeA'.html + html/Ocamlary-module-type-MMM-C-InnerModuleA-module-type-InnerModuleTypeA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-MMM-C-module-type-InnerModuleTypeA.html + html/Ocamlary-module-type-MMM-C-module-type-InnerModuleTypeA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-RECOLLECTION.html + html/Ocamlary-module-type-RECOLLECTION.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-RecollectionModule.html + html/Ocamlary-module-type-RecollectionModule.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-RecollectionModule-InnerModuleA.html + html/Ocamlary-module-type-RecollectionModule-InnerModuleA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA'.html + html/Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-RecollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html + html/Ocamlary-module-type-RecollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-RecollectionModule-module-type-InnerModuleTypeA.html + html/Ocamlary-module-type-RecollectionModule-module-type-InnerModuleTypeA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-A.html + html/Ocamlary-module-type-A.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-A-Q.html + html/Ocamlary-module-type-A-Q.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-A-Q-InnerModuleA.html + html/Ocamlary-module-type-A-Q-InnerModuleA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-A-Q-InnerModuleA-InnerModuleA'.html + html/Ocamlary-module-type-A-Q-InnerModuleA-InnerModuleA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-A-Q-InnerModuleA-module-type-InnerModuleTypeA'.html + html/Ocamlary-module-type-A-Q-InnerModuleA-module-type-InnerModuleTypeA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-A-Q-module-type-InnerModuleTypeA.html + html/Ocamlary-module-type-A-Q-module-type-InnerModuleTypeA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-B.html + html/Ocamlary-module-type-B.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-B-Q.html + html/Ocamlary-module-type-B-Q.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-B-Q-InnerModuleA.html + html/Ocamlary-module-type-B-Q-InnerModuleA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-B-Q-InnerModuleA-InnerModuleA'.html + html/Ocamlary-module-type-B-Q-InnerModuleA-InnerModuleA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-B-Q-InnerModuleA-module-type-InnerModuleTypeA'.html + html/Ocamlary-module-type-B-Q-InnerModuleA-module-type-InnerModuleTypeA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-B-Q-module-type-InnerModuleTypeA.html + html/Ocamlary-module-type-B-Q-module-type-InnerModuleTypeA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-C.html + html/Ocamlary-module-type-C.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-C-Q.html + html/Ocamlary-module-type-C-Q.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-C-Q-InnerModuleA.html + html/Ocamlary-module-type-C-Q-InnerModuleA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-C-Q-InnerModuleA-InnerModuleA'.html + html/Ocamlary-module-type-C-Q-InnerModuleA-InnerModuleA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-C-Q-InnerModuleA-module-type-InnerModuleTypeA'.html + html/Ocamlary-module-type-C-Q-InnerModuleA-module-type-InnerModuleTypeA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-C-Q-module-type-InnerModuleTypeA.html + html/Ocamlary-module-type-C-Q-module-type-InnerModuleTypeA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-FunctorTypeOf.html + html/Ocamlary-FunctorTypeOf.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-FunctorTypeOf-argument-1-Collection.html + html/Ocamlary-FunctorTypeOf-argument-1-Collection.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA.html + html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA'.html + html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA'.html + html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA'.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-FunctorTypeOf-argument-1-Collection-module-type-InnerModuleTypeA.html + html/Ocamlary-FunctorTypeOf-argument-1-Collection-module-type-InnerModuleTypeA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-IncludeModuleType.html + html/Ocamlary-module-type-IncludeModuleType.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-ToInclude.html + html/Ocamlary-module-type-ToInclude.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-ToInclude-IncludedA.html + html/Ocamlary-module-type-ToInclude-IncludedA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-ToInclude-module-type-IncludedB.html + html/Ocamlary-module-type-ToInclude-module-type-IncludedB.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-IncludedA.html html/Ocamlary-IncludedA.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-IncludedB.html + html/Ocamlary-module-type-IncludedB.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-ExtMod.html html/Ocamlary-ExtMod.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-class-empty_class.html + html/Ocamlary-class-empty_class.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-class-one_method_class.html + html/Ocamlary-class-one_method_class.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-class-two_method_class.html + html/Ocamlary-class-two_method_class.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-class-param_class.html + html/Ocamlary-class-param_class.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep1.html html/Ocamlary-Dep1.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep1-module-type-S.html + html/Ocamlary-Dep1-module-type-S.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep1-module-type-S-class-c.html + html/Ocamlary-Dep1-module-type-S-class-c.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep1-X.html html/Ocamlary-Dep1-X.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep1-X-Y.html html/Ocamlary-Dep1-X-Y.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep1-X-Y-class-c.html + html/Ocamlary-Dep1-X-Y-class-c.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep2.html html/Ocamlary-Dep2.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep2-argument-1-Arg.html + html/Ocamlary-Dep2-argument-1-Arg.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep2-argument-1-Arg-X.html + html/Ocamlary-Dep2-argument-1-Arg-X.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep2-A.html html/Ocamlary-Dep2-A.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep3.html html/Ocamlary-Dep3.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep4.html html/Ocamlary-Dep4.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep4-module-type-T.html + html/Ocamlary-Dep4-module-type-T.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep4-module-type-S.html + html/Ocamlary-Dep4-module-type-S.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep4-module-type-S-X.html + html/Ocamlary-Dep4-module-type-S-X.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep4-module-type-S-Y.html + html/Ocamlary-Dep4-module-type-S-Y.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep4-X.html html/Ocamlary-Dep4-X.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep5.html html/Ocamlary-Dep5.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep5-argument-1-Arg.html + html/Ocamlary-Dep5-argument-1-Arg.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep5-argument-1-Arg-module-type-S.html + html/Ocamlary-Dep5-argument-1-Arg-module-type-S.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep5-argument-1-Arg-module-type-S-Y.html + html/Ocamlary-Dep5-argument-1-Arg-module-type-S-Y.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep5-Z.html html/Ocamlary-Dep5-Z.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep6.html html/Ocamlary-Dep6.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep6-module-type-S.html + html/Ocamlary-Dep6-module-type-S.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep6-module-type-T.html + html/Ocamlary-Dep6-module-type-T.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep6-module-type-T-module-type-R.html + html/Ocamlary-Dep6-module-type-T-module-type-R.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep6-module-type-T-Y.html + html/Ocamlary-Dep6-module-type-T-Y.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep6-X.html html/Ocamlary-Dep6-X.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep6-X-module-type-R.html + html/Ocamlary-Dep6-X-module-type-R.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep6-X-Y.html html/Ocamlary-Dep6-X-Y.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep7.html html/Ocamlary-Dep7.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep7-argument-1-Arg.html + html/Ocamlary-Dep7-argument-1-Arg.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep7-argument-1-Arg-module-type-T.html + html/Ocamlary-Dep7-argument-1-Arg-module-type-T.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep7-argument-1-Arg-X.html + html/Ocamlary-Dep7-argument-1-Arg-X.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep7-M.html html/Ocamlary-Dep7-M.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep8.html html/Ocamlary-Dep8.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep8-module-type-T.html + html/Ocamlary-Dep8-module-type-T.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep9.html html/Ocamlary-Dep9.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep9-argument-1-X.html + html/Ocamlary-Dep9-argument-1-X.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-Dep10.html + html/Ocamlary-module-type-Dep10.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep11.html html/Ocamlary-Dep11.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep11-module-type-S.html + html/Ocamlary-Dep11-module-type-S.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep11-module-type-S-class-c.html + html/Ocamlary-Dep11-module-type-S-class-c.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep12.html html/Ocamlary-Dep12.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep12-argument-1-Arg.html + html/Ocamlary-Dep12-argument-1-Arg.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Dep13.html html/Ocamlary-Dep13.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Dep13-class-c.html + html/Ocamlary-Dep13-class-c.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-With1.html + html/Ocamlary-module-type-With1.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-With1-M.html + html/Ocamlary-module-type-With1-M.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-With2.html html/Ocamlary-With2.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-With2-module-type-S.html + html/Ocamlary-With2-module-type-S.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-With3.html html/Ocamlary-With3.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-With3-N.html html/Ocamlary-With3-N.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-With4.html html/Ocamlary-With4.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-With4-N.html html/Ocamlary-With4-N.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-With5.html html/Ocamlary-With5.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-With5-module-type-S.html + html/Ocamlary-With5-module-type-S.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-With5-N.html html/Ocamlary-With5-N.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-With6.html html/Ocamlary-With6.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-With6-module-type-T.html + html/Ocamlary-With6-module-type-T.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-With6-module-type-T-M.html + html/Ocamlary-With6-module-type-T-M.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-With7.html html/Ocamlary-With7.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-With7-argument-1-X.html + html/Ocamlary-With7-argument-1-X.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-With8.html + html/Ocamlary-module-type-With8.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-With8-M.html + html/Ocamlary-module-type-With8-M.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-With8-M-module-type-S.html + html/Ocamlary-module-type-With8-M-module-type-S.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-With8-M-N.html + html/Ocamlary-module-type-With8-M-N.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-With9.html html/Ocamlary-With9.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-With9-module-type-S.html + html/Ocamlary-With9-module-type-S.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-With10.html html/Ocamlary-With10.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-With10-module-type-T.html + html/Ocamlary-With10-module-type-T.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-With10-module-type-T-M.html + html/Ocamlary-With10-module-type-T-M.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-With11.html + html/Ocamlary-module-type-With11.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-With11-N.html + html/Ocamlary-module-type-With11-N.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-NestedInclude1.html + html/Ocamlary-module-type-NestedInclude1.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-NestedInclude1-module-type-NestedInclude2.html + html/Ocamlary-module-type-NestedInclude1-module-type-NestedInclude2.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-NestedInclude2.html + html/Ocamlary-module-type-NestedInclude2.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-DoubleInclude1.html + html/Ocamlary-DoubleInclude1.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-DoubleInclude1-DoubleInclude2.html + html/Ocamlary-DoubleInclude1-DoubleInclude2.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-DoubleInclude3.html + html/Ocamlary-DoubleInclude3.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-DoubleInclude3-DoubleInclude2.html + html/Ocamlary-DoubleInclude3-DoubleInclude2.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-IncludeInclude1.html + html/Ocamlary-IncludeInclude1.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-IncludeInclude1-module-type-IncludeInclude2.html + html/Ocamlary-IncludeInclude1-module-type-IncludeInclude2.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-IncludeInclude2.html + html/Ocamlary-module-type-IncludeInclude2.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-CanonicalTest.html + html/Ocamlary-CanonicalTest.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-CanonicalTest-Base__List.html + html/Ocamlary-CanonicalTest-Base__List.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-CanonicalTest-Base__.html + html/Ocamlary-CanonicalTest-Base__.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-CanonicalTest-Base.html + html/Ocamlary-CanonicalTest-Base.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-CanonicalTest-Base-List.html + html/Ocamlary-CanonicalTest-Base-List.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-CanonicalTest-Base__Tests.html + html/Ocamlary-CanonicalTest-Base__Tests.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-CanonicalTest-Base__Tests-C.html + html/Ocamlary-CanonicalTest-Base__Tests-C.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-CanonicalTest-List_modif.html + html/Ocamlary-CanonicalTest-List_modif.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Aliases.html html/Ocamlary-Aliases.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Aliases-Foo__A.html + html/Ocamlary-Aliases-Foo__A.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Aliases-Foo__B.html + html/Ocamlary-Aliases-Foo__B.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Aliases-Foo__C.html + html/Ocamlary-Aliases-Foo__C.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Aliases-Foo__D.html + html/Ocamlary-Aliases-Foo__D.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Aliases-Foo__E.html + html/Ocamlary-Aliases-Foo__E.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Aliases-Foo__.html + html/Ocamlary-Aliases-Foo__.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Aliases-Foo.html html/Ocamlary-Aliases-Foo.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Aliases-Foo-A.html + html/Ocamlary-Aliases-Foo-A.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Aliases-Foo-B.html + html/Ocamlary-Aliases-Foo-B.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Aliases-Foo-C.html + html/Ocamlary-Aliases-Foo-C.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Aliases-Foo-D.html + html/Ocamlary-Aliases-Foo-D.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Aliases-Foo-E.html + html/Ocamlary-Aliases-Foo-E.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Aliases-Std.html html/Ocamlary-Aliases-Std.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Aliases-E.html html/Ocamlary-Aliases-E.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Aliases-P1.html html/Ocamlary-Aliases-P1.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Aliases-P1-Y.html html/Ocamlary-Aliases-P1-Y.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-Aliases-P2.html html/Ocamlary-Aliases-P2.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-M.html + html/Ocamlary-module-type-M.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff html/Ocamlary-M.html html/Ocamlary-M.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-Only_a_module.html + html/Ocamlary-Only_a_module.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-TypeExt.html + html/Ocamlary-module-type-TypeExt.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + html/Ocamlary-module-type-TypeExtPruned.html + html/Ocamlary-module-type-TypeExtPruned.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(subdir + html + (rule + (action + (with-outputs-to + ocamlary.gen + (run odoc html-targets -o . %{dep:../ocamlary.odocl} --flat))) + (enabled_if + (>= %{ocaml_version} 4.07)))) + +(rule + (alias runtest) + (action + (diff html/ocamlary.targets html/ocamlary.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(subdir + latex + (rule + (targets + Ocamlary.tex.gen + Ocamlary.ModuleWithSignature.tex.gen + Ocamlary.ModuleWithSignatureAlias.tex.gen + Ocamlary.Recollection.tex.gen + Ocamlary.FunctorTypeOf.tex.gen + Ocamlary.empty_class.tex.gen + Ocamlary.one_method_class.tex.gen + Ocamlary.two_method_class.tex.gen + Ocamlary.param_class.tex.gen + Ocamlary.Dep2.tex.gen + Ocamlary.Dep5.tex.gen + Ocamlary.Dep5.Z.tex.gen + Ocamlary.Dep7.tex.gen + Ocamlary.Dep7.M.tex.gen + Ocamlary.Dep9.tex.gen + Ocamlary.Dep12.tex.gen + Ocamlary.Dep13.tex.gen + Ocamlary.Dep13.c.tex.gen + Ocamlary.With3.tex.gen + Ocamlary.With3.N.tex.gen + Ocamlary.With4.tex.gen + Ocamlary.With4.N.tex.gen + Ocamlary.With7.tex.gen) + (action + (progn + (run + odoc + latex-generate + -o + . + --extra-suffix + gen + %{dep:../ocamlary.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.07)))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.tex latex/Ocamlary.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + latex/Ocamlary.ModuleWithSignature.tex + latex/Ocamlary.ModuleWithSignature.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + latex/Ocamlary.ModuleWithSignatureAlias.tex + latex/Ocamlary.ModuleWithSignatureAlias.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.Recollection.tex latex/Ocamlary.Recollection.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + latex/Ocamlary.FunctorTypeOf.tex + latex/Ocamlary.FunctorTypeOf.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.empty_class.tex latex/Ocamlary.empty_class.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + latex/Ocamlary.one_method_class.tex + latex/Ocamlary.one_method_class.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + latex/Ocamlary.two_method_class.tex + latex/Ocamlary.two_method_class.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.param_class.tex latex/Ocamlary.param_class.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.Dep2.tex latex/Ocamlary.Dep2.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.Dep5.tex latex/Ocamlary.Dep5.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.Dep5.Z.tex latex/Ocamlary.Dep5.Z.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.Dep7.tex latex/Ocamlary.Dep7.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.Dep7.M.tex latex/Ocamlary.Dep7.M.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.Dep9.tex latex/Ocamlary.Dep9.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.Dep12.tex latex/Ocamlary.Dep12.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.Dep13.tex latex/Ocamlary.Dep13.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.Dep13.c.tex latex/Ocamlary.Dep13.c.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.With3.tex latex/Ocamlary.With3.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.With3.N.tex latex/Ocamlary.With3.N.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.With4.tex latex/Ocamlary.With4.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.With4.N.tex latex/Ocamlary.With4.N.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff latex/Ocamlary.With7.tex latex/Ocamlary.With7.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(subdir + latex + (rule + (action + (with-outputs-to + ocamlary.gen + (run odoc latex-targets -o . %{dep:../ocamlary.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.07)))) + +(rule + (alias runtest) + (action + (diff latex/ocamlary.targets latex/ocamlary.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(subdir + man + (rule + (targets + Ocamlary.3o.gen + Ocamlary.Empty.3o.gen + Ocamlary.ModuleWithSignature.3o.gen + Ocamlary.ModuleWithSignatureAlias.3o.gen + Ocamlary.One.3o.gen + Ocamlary.Buffer.3o.gen + Ocamlary.CollectionModule.3o.gen + Ocamlary.CollectionModule.InnerModuleA.3o.gen + Ocamlary.CollectionModule.InnerModuleA.InnerModuleA'.3o.gen + Ocamlary.Recollection.3o.gen + Ocamlary.Recollection.InnerModuleA.3o.gen + Ocamlary.Recollection.InnerModuleA.InnerModuleA'.3o.gen + Ocamlary.FunctorTypeOf.3o.gen + Ocamlary.IncludedA.3o.gen + Ocamlary.ExtMod.3o.gen + Ocamlary.empty_class.3o.gen + Ocamlary.one_method_class.3o.gen + Ocamlary.two_method_class.3o.gen + Ocamlary.param_class.3o.gen + Ocamlary.Dep1.3o.gen + Ocamlary.Dep1.X.3o.gen + Ocamlary.Dep1.X.Y.3o.gen + Ocamlary.Dep1.X.Y.c.3o.gen + Ocamlary.Dep2.3o.gen + Ocamlary.Dep2.A.3o.gen + Ocamlary.Dep3.3o.gen + Ocamlary.Dep4.3o.gen + Ocamlary.Dep4.X.3o.gen + Ocamlary.Dep5.3o.gen + Ocamlary.Dep5.Z.3o.gen + Ocamlary.Dep6.3o.gen + Ocamlary.Dep6.X.3o.gen + Ocamlary.Dep6.X.Y.3o.gen + Ocamlary.Dep7.3o.gen + Ocamlary.Dep7.M.3o.gen + Ocamlary.Dep8.3o.gen + Ocamlary.Dep9.3o.gen + Ocamlary.Dep11.3o.gen + Ocamlary.Dep12.3o.gen + Ocamlary.Dep13.3o.gen + Ocamlary.Dep13.c.3o.gen + Ocamlary.With2.3o.gen + Ocamlary.With3.3o.gen + Ocamlary.With3.N.3o.gen + Ocamlary.With4.3o.gen + Ocamlary.With4.N.3o.gen + Ocamlary.With5.3o.gen + Ocamlary.With5.N.3o.gen + Ocamlary.With6.3o.gen + Ocamlary.With7.3o.gen + Ocamlary.With9.3o.gen + Ocamlary.With10.3o.gen + Ocamlary.DoubleInclude1.3o.gen + Ocamlary.DoubleInclude1.DoubleInclude2.3o.gen + Ocamlary.DoubleInclude3.3o.gen + Ocamlary.DoubleInclude3.DoubleInclude2.3o.gen + Ocamlary.IncludeInclude1.3o.gen + Ocamlary.CanonicalTest.3o.gen + Ocamlary.CanonicalTest.Base__List.3o.gen + Ocamlary.CanonicalTest.Base__.3o.gen + Ocamlary.CanonicalTest.Base.3o.gen + Ocamlary.CanonicalTest.Base.List.3o.gen + Ocamlary.CanonicalTest.Base__Tests.3o.gen + Ocamlary.CanonicalTest.Base__Tests.C.3o.gen + Ocamlary.CanonicalTest.List_modif.3o.gen + Ocamlary.Aliases.3o.gen + Ocamlary.Aliases.Foo__A.3o.gen + Ocamlary.Aliases.Foo__B.3o.gen + Ocamlary.Aliases.Foo__C.3o.gen + Ocamlary.Aliases.Foo__D.3o.gen + Ocamlary.Aliases.Foo__E.3o.gen + Ocamlary.Aliases.Foo__.3o.gen + Ocamlary.Aliases.Foo.3o.gen + Ocamlary.Aliases.Foo.A.3o.gen + Ocamlary.Aliases.Foo.B.3o.gen + Ocamlary.Aliases.Foo.C.3o.gen + Ocamlary.Aliases.Foo.D.3o.gen + Ocamlary.Aliases.Foo.E.3o.gen + Ocamlary.Aliases.Std.3o.gen + Ocamlary.Aliases.E.3o.gen + Ocamlary.Aliases.P1.3o.gen + Ocamlary.Aliases.P1.Y.3o.gen + Ocamlary.Aliases.P2.3o.gen + Ocamlary.M.3o.gen + Ocamlary.Only_a_module.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../ocamlary.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.07)))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.3o man/Ocamlary.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Empty.3o man/Ocamlary.Empty.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.ModuleWithSignature.3o + man/Ocamlary.ModuleWithSignature.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.ModuleWithSignatureAlias.3o + man/Ocamlary.ModuleWithSignatureAlias.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.One.3o man/Ocamlary.One.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Buffer.3o man/Ocamlary.Buffer.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.CollectionModule.3o + man/Ocamlary.CollectionModule.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.CollectionModule.InnerModuleA.3o + man/Ocamlary.CollectionModule.InnerModuleA.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.CollectionModule.InnerModuleA.InnerModuleA'.3o + man/Ocamlary.CollectionModule.InnerModuleA.InnerModuleA'.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Recollection.3o man/Ocamlary.Recollection.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.Recollection.InnerModuleA.3o + man/Ocamlary.Recollection.InnerModuleA.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.Recollection.InnerModuleA.InnerModuleA'.3o + man/Ocamlary.Recollection.InnerModuleA.InnerModuleA'.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.FunctorTypeOf.3o man/Ocamlary.FunctorTypeOf.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.IncludedA.3o man/Ocamlary.IncludedA.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.ExtMod.3o man/Ocamlary.ExtMod.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.empty_class.3o man/Ocamlary.empty_class.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.one_method_class.3o + man/Ocamlary.one_method_class.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.two_method_class.3o + man/Ocamlary.two_method_class.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.param_class.3o man/Ocamlary.param_class.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep1.3o man/Ocamlary.Dep1.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep1.X.3o man/Ocamlary.Dep1.X.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep1.X.Y.3o man/Ocamlary.Dep1.X.Y.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep1.X.Y.c.3o man/Ocamlary.Dep1.X.Y.c.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep2.3o man/Ocamlary.Dep2.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep2.A.3o man/Ocamlary.Dep2.A.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep3.3o man/Ocamlary.Dep3.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep4.3o man/Ocamlary.Dep4.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep4.X.3o man/Ocamlary.Dep4.X.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep5.3o man/Ocamlary.Dep5.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep5.Z.3o man/Ocamlary.Dep5.Z.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep6.3o man/Ocamlary.Dep6.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep6.X.3o man/Ocamlary.Dep6.X.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep6.X.Y.3o man/Ocamlary.Dep6.X.Y.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep7.3o man/Ocamlary.Dep7.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep7.M.3o man/Ocamlary.Dep7.M.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep8.3o man/Ocamlary.Dep8.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep9.3o man/Ocamlary.Dep9.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep11.3o man/Ocamlary.Dep11.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep12.3o man/Ocamlary.Dep12.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep13.3o man/Ocamlary.Dep13.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Dep13.c.3o man/Ocamlary.Dep13.c.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.With2.3o man/Ocamlary.With2.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.With3.3o man/Ocamlary.With3.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.With3.N.3o man/Ocamlary.With3.N.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.With4.3o man/Ocamlary.With4.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.With4.N.3o man/Ocamlary.With4.N.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.With5.3o man/Ocamlary.With5.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.With5.N.3o man/Ocamlary.With5.N.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.With6.3o man/Ocamlary.With6.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.With7.3o man/Ocamlary.With7.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.With9.3o man/Ocamlary.With9.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.With10.3o man/Ocamlary.With10.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.DoubleInclude1.3o man/Ocamlary.DoubleInclude1.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.DoubleInclude1.DoubleInclude2.3o + man/Ocamlary.DoubleInclude1.DoubleInclude2.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.DoubleInclude3.3o man/Ocamlary.DoubleInclude3.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.DoubleInclude3.DoubleInclude2.3o + man/Ocamlary.DoubleInclude3.DoubleInclude2.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.IncludeInclude1.3o man/Ocamlary.IncludeInclude1.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.CanonicalTest.3o man/Ocamlary.CanonicalTest.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.CanonicalTest.Base__List.3o + man/Ocamlary.CanonicalTest.Base__List.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.CanonicalTest.Base__.3o + man/Ocamlary.CanonicalTest.Base__.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.CanonicalTest.Base.3o + man/Ocamlary.CanonicalTest.Base.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.CanonicalTest.Base.List.3o + man/Ocamlary.CanonicalTest.Base.List.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.CanonicalTest.Base__Tests.3o + man/Ocamlary.CanonicalTest.Base__Tests.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.CanonicalTest.Base__Tests.C.3o + man/Ocamlary.CanonicalTest.Base__Tests.C.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff + man/Ocamlary.CanonicalTest.List_modif.3o + man/Ocamlary.CanonicalTest.List_modif.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.3o man/Ocamlary.Aliases.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.Foo__A.3o man/Ocamlary.Aliases.Foo__A.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.Foo__B.3o man/Ocamlary.Aliases.Foo__B.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.Foo__C.3o man/Ocamlary.Aliases.Foo__C.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.Foo__D.3o man/Ocamlary.Aliases.Foo__D.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.Foo__E.3o man/Ocamlary.Aliases.Foo__E.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.Foo__.3o man/Ocamlary.Aliases.Foo__.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.Foo.3o man/Ocamlary.Aliases.Foo.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.Foo.A.3o man/Ocamlary.Aliases.Foo.A.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.Foo.B.3o man/Ocamlary.Aliases.Foo.B.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.Foo.C.3o man/Ocamlary.Aliases.Foo.C.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.Foo.D.3o man/Ocamlary.Aliases.Foo.D.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.Foo.E.3o man/Ocamlary.Aliases.Foo.E.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.Std.3o man/Ocamlary.Aliases.Std.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.E.3o man/Ocamlary.Aliases.E.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.P1.3o man/Ocamlary.Aliases.P1.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.P1.Y.3o man/Ocamlary.Aliases.P1.Y.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Aliases.P2.3o man/Ocamlary.Aliases.P2.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.M.3o man/Ocamlary.M.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(rule + (alias runtest) + (action + (diff man/Ocamlary.Only_a_module.3o man/Ocamlary.Only_a_module.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(subdir + man + (rule + (action + (with-outputs-to + ocamlary.gen + (run odoc man-targets -o . %{dep:../ocamlary.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.07)))) + +(rule + (alias runtest) + (action + (diff man/ocamlary.targets man/ocamlary.gen)) + (enabled_if + (>= %{ocaml_version} 4.07))) + +(subdir + html + (rule + (targets + Recent.html.gen + Recent-module-type-S.html.gen + Recent-module-type-S1.html.gen + Recent-module-type-S1-argument-1-_.html.gen + Recent-Z.html.gen + Recent-Z-Y.html.gen + Recent-Z-Y-X.html.gen + Recent-X.html.gen + Recent-module-type-PolyS.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../recent.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff html/Recent.html html/Recent.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff html/Recent-module-type-S.html html/Recent-module-type-S.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff html/Recent-module-type-S1.html html/Recent-module-type-S1.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff + html/Recent-module-type-S1-argument-1-_.html + html/Recent-module-type-S1-argument-1-_.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff html/Recent-Z.html html/Recent-Z.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff html/Recent-Z-Y.html html/Recent-Z-Y.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff html/Recent-Z-Y-X.html html/Recent-Z-Y-X.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff html/Recent-X.html html/Recent-X.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff + html/Recent-module-type-PolyS.html + html/Recent-module-type-PolyS.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + html + (rule + (action + (with-outputs-to + recent.gen + (run odoc html-targets -o . %{dep:../recent.odocl} --flat))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff html/recent.targets html/recent.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + latex + (rule + (targets Recent.tex.gen) + (action + (progn + (run odoc latex-generate -o . --extra-suffix gen %{dep:../recent.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff latex/Recent.tex latex/Recent.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + latex + (rule + (action + (with-outputs-to + recent.gen + (run odoc latex-targets -o . %{dep:../recent.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff latex/recent.targets latex/recent.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + man + (rule + (targets + Recent.3o.gen + Recent.Z.3o.gen + Recent.Z.Y.3o.gen + Recent.Z.Y.X.3o.gen + Recent.X.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../recent.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff man/Recent.3o man/Recent.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff man/Recent.Z.3o man/Recent.Z.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff man/Recent.Z.Y.3o man/Recent.Z.Y.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff man/Recent.Z.Y.X.3o man/Recent.Z.Y.X.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff man/Recent.X.3o man/Recent.X.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + man + (rule + (action + (with-outputs-to + recent.gen + (run odoc man-targets -o . %{dep:../recent.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff man/recent.targets man/recent.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + html + (rule + (targets + Recent_impl.html.gen + Recent_impl-Foo.html.gen + Recent_impl-Foo-A.html.gen + Recent_impl-Foo-B.html.gen + Recent_impl-B.html.gen + Recent_impl-module-type-S.html.gen + Recent_impl-module-type-S-F.html.gen + Recent_impl-module-type-S-F-argument-1-_.html.gen + Recent_impl-module-type-S-X.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../recent_impl.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff html/Recent_impl.html html/Recent_impl.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff html/Recent_impl-Foo.html html/Recent_impl-Foo.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff html/Recent_impl-Foo-A.html html/Recent_impl-Foo-A.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff html/Recent_impl-Foo-B.html html/Recent_impl-Foo-B.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff html/Recent_impl-B.html html/Recent_impl-B.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff + html/Recent_impl-module-type-S.html + html/Recent_impl-module-type-S.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff + html/Recent_impl-module-type-S-F.html + html/Recent_impl-module-type-S-F.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff + html/Recent_impl-module-type-S-F-argument-1-_.html + html/Recent_impl-module-type-S-F-argument-1-_.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff + html/Recent_impl-module-type-S-X.html + html/Recent_impl-module-type-S-X.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + html + (rule + (action + (with-outputs-to + recent_impl.gen + (run odoc html-targets -o . %{dep:../recent_impl.odocl} --flat))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff html/recent_impl.targets html/recent_impl.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + latex + (rule + (targets Recent_impl.tex.gen Recent_impl.B.tex.gen) + (action + (progn + (run + odoc + latex-generate + -o + . + --extra-suffix + gen + %{dep:../recent_impl.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff latex/Recent_impl.tex latex/Recent_impl.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff latex/Recent_impl.B.tex latex/Recent_impl.B.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + latex + (rule + (action + (with-outputs-to + recent_impl.gen + (run odoc latex-targets -o . %{dep:../recent_impl.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff latex/recent_impl.targets latex/recent_impl.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + man + (rule + (targets + Recent_impl.3o.gen + Recent_impl.Foo.3o.gen + Recent_impl.Foo.A.3o.gen + Recent_impl.Foo.B.3o.gen + Recent_impl.B.3o.gen) + (action + (progn + (run + odoc + man-generate + -o + . + --extra-suffix + gen + %{dep:../recent_impl.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff man/Recent_impl.3o man/Recent_impl.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff man/Recent_impl.Foo.3o man/Recent_impl.Foo.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff man/Recent_impl.Foo.A.3o man/Recent_impl.Foo.A.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff man/Recent_impl.Foo.B.3o man/Recent_impl.Foo.B.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(rule + (alias runtest) + (action + (diff man/Recent_impl.B.3o man/Recent_impl.B.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + man + (rule + (action + (with-outputs-to + recent_impl.gen + (run odoc man-targets -o . %{dep:../recent_impl.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.09)))) + +(rule + (alias runtest) + (action + (diff man/recent_impl.targets man/recent_impl.gen)) + (enabled_if + (>= %{ocaml_version} 4.09))) + +(subdir + html + (rule + (targets Section.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../section.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Section.html html/Section.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + section.gen + (run odoc html-targets -o . %{dep:../section.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/section.targets html/section.gen))) + +(subdir + latex + (rule + (targets Section.tex.gen) + (action + (progn + (run odoc latex-generate -o . --extra-suffix gen %{dep:../section.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Section.tex latex/Section.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + section.gen + (run odoc latex-targets -o . %{dep:../section.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/section.targets latex/section.gen))) + +(subdir + man + (rule + (targets Section.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../section.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Section.3o man/Section.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + section.gen + (run odoc man-targets -o . %{dep:../section.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/section.targets man/section.gen))) + +(subdir + html + (rule + (targets Stop.html.gen Stop-N.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../stop.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Stop.html html/Stop.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Stop-N.html html/Stop-N.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + stop.gen + (run odoc html-targets -o . %{dep:../stop.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/stop.targets html/stop.gen))) + +(subdir + latex + (rule + (targets Stop.tex.gen) + (action + (progn + (run odoc latex-generate -o . --extra-suffix gen %{dep:../stop.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Stop.tex latex/Stop.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + stop.gen + (run odoc latex-targets -o . %{dep:../stop.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/stop.targets latex/stop.gen))) + +(subdir + man + (rule + (targets Stop.3o.gen Stop.N.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../stop.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Stop.3o man/Stop.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Stop.N.3o man/Stop.N.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + stop.gen + (run odoc man-targets -o . %{dep:../stop.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/stop.targets man/stop.gen))) + +(subdir + html + (rule + (targets Stop_dead_link_doc.html.gen Stop_dead_link_doc-Foo.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../stop_dead_link_doc.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.04)))) + +(rule + (alias runtest) + (action + (diff html/Stop_dead_link_doc.html html/Stop_dead_link_doc.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.04))) + +(rule + (alias runtest) + (action + (diff + html/Stop_dead_link_doc-Foo.html + html/Stop_dead_link_doc-Foo.html.gen)) + (enabled_if + (>= %{ocaml_version} 4.04))) + +(subdir + html + (rule + (action + (with-outputs-to + stop_dead_link_doc.gen + (run odoc html-targets -o . %{dep:../stop_dead_link_doc.odocl} --flat))) + (enabled_if + (>= %{ocaml_version} 4.04)))) + +(rule + (alias runtest) + (action + (diff html/stop_dead_link_doc.targets html/stop_dead_link_doc.gen)) + (enabled_if + (>= %{ocaml_version} 4.04))) + +(subdir + latex + (rule + (targets Stop_dead_link_doc.tex.gen) + (action + (progn + (run + odoc + latex-generate + -o + . + --extra-suffix + gen + %{dep:../stop_dead_link_doc.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.04)))) + +(rule + (alias runtest) + (action + (diff latex/Stop_dead_link_doc.tex latex/Stop_dead_link_doc.tex.gen)) + (enabled_if + (>= %{ocaml_version} 4.04))) + +(subdir + latex + (rule + (action + (with-outputs-to + stop_dead_link_doc.gen + (run odoc latex-targets -o . %{dep:../stop_dead_link_doc.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.04)))) + +(rule + (alias runtest) + (action + (diff latex/stop_dead_link_doc.targets latex/stop_dead_link_doc.gen)) + (enabled_if + (>= %{ocaml_version} 4.04))) + +(subdir + man + (rule + (targets Stop_dead_link_doc.3o.gen Stop_dead_link_doc.Foo.3o.gen) + (action + (progn + (run + odoc + man-generate + -o + . + --extra-suffix + gen + %{dep:../stop_dead_link_doc.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.04)))) + +(rule + (alias runtest) + (action + (diff man/Stop_dead_link_doc.3o man/Stop_dead_link_doc.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.04))) + +(rule + (alias runtest) + (action + (diff man/Stop_dead_link_doc.Foo.3o man/Stop_dead_link_doc.Foo.3o.gen)) + (enabled_if + (>= %{ocaml_version} 4.04))) + +(subdir + man + (rule + (action + (with-outputs-to + stop_dead_link_doc.gen + (run odoc man-targets -o . %{dep:../stop_dead_link_doc.odocl}))) + (enabled_if + (>= %{ocaml_version} 4.04)))) + +(rule + (alias runtest) + (action + (diff man/stop_dead_link_doc.targets man/stop_dead_link_doc.gen)) + (enabled_if + (>= %{ocaml_version} 4.04))) + +(subdir + html + (rule + (targets + Toplevel_comments.html.gen + Toplevel_comments-module-type-T.html.gen + Toplevel_comments-Include_inline.html.gen + Toplevel_comments-Include_inline'.html.gen + Toplevel_comments-module-type-Include_inline_T.html.gen + Toplevel_comments-module-type-Include_inline_T'.html.gen + Toplevel_comments-M.html.gen + Toplevel_comments-M'.html.gen + Toplevel_comments-M''.html.gen + Toplevel_comments-Alias.html.gen + Toplevel_comments-class-c1.html.gen + Toplevel_comments-class-type-ct.html.gen + Toplevel_comments-class-c2.html.gen + Toplevel_comments-Ref_in_synopsis.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../toplevel_comments.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Toplevel_comments.html html/Toplevel_comments.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Toplevel_comments-module-type-T.html + html/Toplevel_comments-module-type-T.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Toplevel_comments-Include_inline.html + html/Toplevel_comments-Include_inline.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Toplevel_comments-Include_inline'.html + html/Toplevel_comments-Include_inline'.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Toplevel_comments-module-type-Include_inline_T.html + html/Toplevel_comments-module-type-Include_inline_T.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Toplevel_comments-module-type-Include_inline_T'.html + html/Toplevel_comments-module-type-Include_inline_T'.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Toplevel_comments-M.html html/Toplevel_comments-M.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Toplevel_comments-M'.html html/Toplevel_comments-M'.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Toplevel_comments-M''.html html/Toplevel_comments-M''.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Toplevel_comments-Alias.html + html/Toplevel_comments-Alias.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Toplevel_comments-class-c1.html + html/Toplevel_comments-class-c1.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Toplevel_comments-class-type-ct.html + html/Toplevel_comments-class-type-ct.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Toplevel_comments-class-c2.html + html/Toplevel_comments-class-c2.html.gen))) + +(rule + (alias runtest) + (action + (diff + html/Toplevel_comments-Ref_in_synopsis.html + html/Toplevel_comments-Ref_in_synopsis.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + toplevel_comments.gen + (run odoc html-targets -o . %{dep:../toplevel_comments.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/toplevel_comments.targets html/toplevel_comments.gen))) + +(subdir + latex + (rule + (targets + Toplevel_comments.tex.gen + Toplevel_comments.Alias.tex.gen + Toplevel_comments.c1.tex.gen + Toplevel_comments.c2.tex.gen) + (action + (progn + (run + odoc + latex-generate + -o + . + --extra-suffix + gen + %{dep:../toplevel_comments.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Toplevel_comments.tex latex/Toplevel_comments.tex.gen))) + +(rule + (alias runtest) + (action + (diff + latex/Toplevel_comments.Alias.tex + latex/Toplevel_comments.Alias.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Toplevel_comments.c1.tex latex/Toplevel_comments.c1.tex.gen))) + +(rule + (alias runtest) + (action + (diff latex/Toplevel_comments.c2.tex latex/Toplevel_comments.c2.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + toplevel_comments.gen + (run odoc latex-targets -o . %{dep:../toplevel_comments.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/toplevel_comments.targets latex/toplevel_comments.gen))) + +(subdir + man + (rule + (targets + Toplevel_comments.3o.gen + Toplevel_comments.Include_inline.3o.gen + Toplevel_comments.Include_inline'.3o.gen + Toplevel_comments.M.3o.gen + Toplevel_comments.M'.3o.gen + Toplevel_comments.M''.3o.gen + Toplevel_comments.Alias.3o.gen + Toplevel_comments.c1.3o.gen + Toplevel_comments.c2.3o.gen + Toplevel_comments.Ref_in_synopsis.3o.gen) + (action + (progn + (run + odoc + man-generate + -o + . + --extra-suffix + gen + %{dep:../toplevel_comments.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Toplevel_comments.3o man/Toplevel_comments.3o.gen))) + +(rule + (alias runtest) + (action + (diff + man/Toplevel_comments.Include_inline.3o + man/Toplevel_comments.Include_inline.3o.gen))) + +(rule + (alias runtest) + (action + (diff + man/Toplevel_comments.Include_inline'.3o + man/Toplevel_comments.Include_inline'.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Toplevel_comments.M.3o man/Toplevel_comments.M.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Toplevel_comments.M'.3o man/Toplevel_comments.M'.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Toplevel_comments.M''.3o man/Toplevel_comments.M''.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Toplevel_comments.Alias.3o man/Toplevel_comments.Alias.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Toplevel_comments.c1.3o man/Toplevel_comments.c1.3o.gen))) + +(rule + (alias runtest) + (action + (diff man/Toplevel_comments.c2.3o man/Toplevel_comments.c2.3o.gen))) + +(rule + (alias runtest) + (action + (diff + man/Toplevel_comments.Ref_in_synopsis.3o + man/Toplevel_comments.Ref_in_synopsis.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + toplevel_comments.gen + (run odoc man-targets -o . %{dep:../toplevel_comments.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/toplevel_comments.targets man/toplevel_comments.gen))) + +(subdir + html + (rule + (targets Type.html.gen Type-module-type-X.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../type.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Type.html html/Type.html.gen))) + +(rule + (alias runtest) + (action + (diff html/Type-module-type-X.html html/Type-module-type-X.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + type.gen + (run odoc html-targets -o . %{dep:../type.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/type.targets html/type.gen))) + +(subdir + latex + (rule + (targets Type.tex.gen) + (action + (progn + (run odoc latex-generate -o . --extra-suffix gen %{dep:../type.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Type.tex latex/Type.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + type.gen + (run odoc latex-targets -o . %{dep:../type.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/type.targets latex/type.gen))) + +(subdir + man + (rule + (targets Type.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../type.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Type.3o man/Type.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + type.gen + (run odoc man-targets -o . %{dep:../type.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/type.targets man/type.gen))) + +(subdir + html + (rule + (targets Val.html.gen) + (action + (progn + (run + odoc + html-generate + --indent + --flat + --extra-suffix + gen + -o + . + %{dep:../val.odocl}))))) + +(rule + (alias runtest) + (action + (diff html/Val.html html/Val.html.gen))) + +(subdir + html + (rule + (action + (with-outputs-to + val.gen + (run odoc html-targets -o . %{dep:../val.odocl} --flat))))) + +(rule + (alias runtest) + (action + (diff html/val.targets html/val.gen))) + +(subdir + latex + (rule + (targets Val.tex.gen) + (action + (progn + (run odoc latex-generate -o . --extra-suffix gen %{dep:../val.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/Val.tex latex/Val.tex.gen))) + +(subdir + latex + (rule + (action + (with-outputs-to + val.gen + (run odoc latex-targets -o . %{dep:../val.odocl}))))) + +(rule + (alias runtest) + (action + (diff latex/val.targets latex/val.gen))) + +(subdir + man + (rule + (targets Val.3o.gen) + (action + (progn + (run odoc man-generate -o . --extra-suffix gen %{dep:../val.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/Val.3o man/Val.3o.gen))) + +(subdir + man + (rule + (action + (with-outputs-to + val.gen + (run odoc man-targets -o . %{dep:../val.odocl}))))) + +(rule + (alias runtest) + (action + (diff man/val.targets man/val.gen))) From 3a307e3e8db78fcca2947ea2889d9da90c0f9cbd Mon Sep 17 00:00:00 2001 From: lubegasimon Date: Tue, 6 Jul 2021 19:19:11 +0300 Subject: [PATCH 4/8] add html dir and promote html files Signed-off-by: lubegasimon --- test/generators/html/Alias-Foo__X.html | 33 + test/generators/html/Alias-X.html | 32 + test/generators/html/Alias.html | 38 + test/generators/html/Bugs.html | 44 + .../html/Bugs_post_406-class-let_open'.html | 18 + .../Bugs_post_406-class-type-let_open.html | 18 + test/generators/html/Bugs_post_406.html | 46 + test/generators/html/Bugs_pre_410.html | 48 + .../html/Class-class-empty_virtual'.html | 18 + .../html/Class-class-mutually'.html | 18 + .../html/Class-class-polymorphic'.html | 18 + .../html/Class-class-recursive'.html | 18 + .../html/Class-class-type-empty.html | 18 + .../html/Class-class-type-empty_virtual.html | 18 + .../html/Class-class-type-mutually.html | 18 + .../html/Class-class-type-polymorphic.html | 18 + .../html/Class-class-type-recursive.html | 18 + test/generators/html/Class.html | 131 + test/generators/html/External.html | 27 + .../html/Functor-F1-argument-1-Arg.html | 27 + test/generators/html/Functor-F1.html | 42 + .../html/Functor-F2-argument-1-Arg.html | 27 + test/generators/html/Functor-F2.html | 45 + .../html/Functor-F3-argument-1-Arg.html | 27 + test/generators/html/Functor-F3.html | 45 + .../html/Functor-F4-argument-1-Arg.html | 27 + test/generators/html/Functor-F4.html | 42 + test/generators/html/Functor-F5.html | 33 + .../html/Functor-module-type-S.html | 25 + .../Functor-module-type-S1-argument-1-_.html | 27 + .../html/Functor-module-type-S1.html | 42 + test/generators/html/Functor.html | 108 + .../html/Functor2-X-argument-1-Y.html | 27 + .../html/Functor2-X-argument-2-Z.html | 27 + test/generators/html/Functor2-X.html | 69 + .../html/Functor2-module-type-S.html | 25 + .../Functor2-module-type-XF-argument-1-Y.html | 27 + .../Functor2-module-type-XF-argument-2-Z.html | 27 + .../html/Functor2-module-type-XF.html | 74 + test/generators/html/Functor2.html | 65 + .../Include-module-type-Dorminant_Module.html | 52 + .../Include-module-type-Inherent_Module.html | 30 + .../html/Include-module-type-Inlined.html | 26 + .../html/Include-module-type-Not_inlined.html | 26 + ...de-module-type-Not_inlined_and_closed.html | 27 + ...de-module-type-Not_inlined_and_opened.html | 27 + test/generators/html/Include.html | 245 ++ test/generators/html/Include2-X.html | 28 + test/generators/html/Include2-Y.html | 26 + .../html/Include2-Y_include_doc.html | 47 + .../html/Include2-Y_include_synopsis.html | 45 + test/generators/html/Include2.html | 93 + ...nclude_sections-module-type-Something.html | 54 + test/generators/html/Include_sections.html | 202 ++ test/generators/html/Interlude.html | 54 + test/generators/html/Labels-A.html | 23 + test/generators/html/Labels-class-c.html | 22 + .../generators/html/Labels-class-type-cs.html | 23 + .../generators/html/Labels-module-type-S.html | 23 + test/generators/html/Labels.html | 199 ++ test/generators/html/Markup.html | 249 ++ test/generators/html/Module-M'.html | 17 + test/generators/html/Module-Mutually.html | 18 + test/generators/html/Module-Recursive.html | 18 + .../html/Module-module-type-S-M.html | 17 + .../generators/html/Module-module-type-S.html | 57 + .../html/Module-module-type-S2-M.html | 18 + .../html/Module-module-type-S2.html | 57 + .../html/Module-module-type-S3-M.html | 18 + .../html/Module-module-type-S3.html | 61 + .../html/Module-module-type-S4-M.html | 18 + .../html/Module-module-type-S4.html | 51 + .../html/Module-module-type-S5-M.html | 18 + .../html/Module-module-type-S5.html | 50 + .../html/Module-module-type-S6-M.html | 18 + .../html/Module-module-type-S6.html | 49 + .../html/Module-module-type-S7.html | 54 + .../html/Module-module-type-S8.html | 46 + .../html/Module-module-type-S9.html | 17 + test/generators/html/Module.html | 228 ++ .../html/Nested-F-argument-1-Arg1.html | 41 + .../html/Nested-F-argument-2-Arg2.html | 29 + test/generators/html/Nested-F.html | 60 + test/generators/html/Nested-X.html | 40 + .../html/Nested-class-inherits.html | 29 + test/generators/html/Nested-class-z.html | 56 + .../generators/html/Nested-module-type-Y.html | 40 + test/generators/html/Nested.html | 92 + test/generators/html/Ocamlary-Aliases-E.html | 38 + .../html/Ocamlary-Aliases-Foo-A.html | 39 + .../html/Ocamlary-Aliases-Foo-B.html | 39 + .../html/Ocamlary-Aliases-Foo-C.html | 39 + .../html/Ocamlary-Aliases-Foo-D.html | 39 + .../html/Ocamlary-Aliases-Foo-E.html | 39 + .../generators/html/Ocamlary-Aliases-Foo.html | 76 + .../html/Ocamlary-Aliases-Foo__.html | 61 + .../html/Ocamlary-Aliases-Foo__A.html | 39 + .../html/Ocamlary-Aliases-Foo__B.html | 39 + .../html/Ocamlary-Aliases-Foo__C.html | 39 + .../html/Ocamlary-Aliases-Foo__D.html | 39 + .../html/Ocamlary-Aliases-Foo__E.html | 39 + .../html/Ocamlary-Aliases-P1-Y.html | 39 + test/generators/html/Ocamlary-Aliases-P1.html | 32 + test/generators/html/Ocamlary-Aliases-P2.html | 29 + .../generators/html/Ocamlary-Aliases-Std.html | 61 + test/generators/html/Ocamlary-Aliases.html | 295 ++ test/generators/html/Ocamlary-Buffer.html | 33 + .../Ocamlary-CanonicalTest-Base-List.html | 43 + .../html/Ocamlary-CanonicalTest-Base.html | 32 + .../html/Ocamlary-CanonicalTest-Base__.html | 29 + .../Ocamlary-CanonicalTest-Base__List.html | 46 + .../Ocamlary-CanonicalTest-Base__Tests-C.html | 48 + .../Ocamlary-CanonicalTest-Base__Tests.html | 99 + .../Ocamlary-CanonicalTest-List_modif.html | 49 + .../html/Ocamlary-CanonicalTest.html | 88 + ...tionModule-InnerModuleA-InnerModuleA'.html | 39 + ...ModuleA-module-type-InnerModuleTypeA'.html | 42 + ...camlary-CollectionModule-InnerModuleA.html | 76 + ...onModule-module-type-InnerModuleTypeA.html | 39 + .../html/Ocamlary-CollectionModule.html | 76 + .../html/Ocamlary-Dep1-X-Y-class-c.html | 28 + test/generators/html/Ocamlary-Dep1-X-Y.html | 32 + test/generators/html/Ocamlary-Dep1-X.html | 30 + .../Ocamlary-Dep1-module-type-S-class-c.html | 27 + .../html/Ocamlary-Dep1-module-type-S.html | 32 + test/generators/html/Ocamlary-Dep1.html | 44 + .../Ocamlary-Dep11-module-type-S-class-c.html | 27 + .../html/Ocamlary-Dep11-module-type-S.html | 32 + test/generators/html/Ocamlary-Dep11.html | 33 + .../html/Ocamlary-Dep12-argument-1-Arg.html | 31 + test/generators/html/Ocamlary-Dep12.html | 52 + .../html/Ocamlary-Dep13-class-c.html | 27 + test/generators/html/Ocamlary-Dep13.html | 31 + test/generators/html/Ocamlary-Dep2-A.html | 31 + .../html/Ocamlary-Dep2-argument-1-Arg-X.html | 32 + .../html/Ocamlary-Dep2-argument-1-Arg.html | 42 + test/generators/html/Ocamlary-Dep2.html | 58 + test/generators/html/Ocamlary-Dep3.html | 26 + test/generators/html/Ocamlary-Dep4-X.html | 27 + .../html/Ocamlary-Dep4-module-type-S-X.html | 27 + .../html/Ocamlary-Dep4-module-type-S-Y.html | 19 + .../html/Ocamlary-Dep4-module-type-S.html | 41 + .../html/Ocamlary-Dep4-module-type-T.html | 27 + test/generators/html/Ocamlary-Dep4.html | 55 + test/generators/html/Ocamlary-Dep5-Z.html | 39 + ...y-Dep5-argument-1-Arg-module-type-S-Y.html | 22 + ...ary-Dep5-argument-1-Arg-module-type-S.html | 44 + .../html/Ocamlary-Dep5-argument-1-Arg.html | 54 + test/generators/html/Ocamlary-Dep5.html | 55 + test/generators/html/Ocamlary-Dep6-X-Y.html | 27 + .../html/Ocamlary-Dep6-X-module-type-R.html | 28 + test/generators/html/Ocamlary-Dep6-X.html | 41 + .../html/Ocamlary-Dep6-module-type-S.html | 27 + .../html/Ocamlary-Dep6-module-type-T-Y.html | 27 + ...lary-Dep6-module-type-T-module-type-R.html | 28 + .../html/Ocamlary-Dep6-module-type-T.html | 43 + test/generators/html/Ocamlary-Dep6.html | 55 + test/generators/html/Ocamlary-Dep7-M.html | 42 + .../html/Ocamlary-Dep7-argument-1-Arg-X.html | 43 + ...ary-Dep7-argument-1-Arg-module-type-T.html | 43 + .../html/Ocamlary-Dep7-argument-1-Arg.html | 57 + test/generators/html/Ocamlary-Dep7.html | 50 + .../html/Ocamlary-Dep8-module-type-T.html | 27 + test/generators/html/Ocamlary-Dep8.html | 33 + .../html/Ocamlary-Dep9-argument-1-X.html | 31 + test/generators/html/Ocamlary-Dep9.html | 52 + ...camlary-DoubleInclude1-DoubleInclude2.html | 29 + .../html/Ocamlary-DoubleInclude1.html | 34 + ...camlary-DoubleInclude3-DoubleInclude2.html | 29 + .../html/Ocamlary-DoubleInclude3.html | 47 + test/generators/html/Ocamlary-Empty.html | 20 + test/generators/html/Ocamlary-ExtMod.html | 48 + ...Collection-InnerModuleA-InnerModuleA'.html | 45 + ...ModuleA-module-type-InnerModuleTypeA'.html | 46 + ...Of-argument-1-Collection-InnerModuleA.html | 82 + ...llection-module-type-InnerModuleTypeA.html | 41 + ...y-FunctorTypeOf-argument-1-Collection.html | 82 + .../html/Ocamlary-FunctorTypeOf.html | 58 + ...eInclude1-module-type-IncludeInclude2.html | 31 + .../html/Ocamlary-IncludeInclude1.html | 39 + test/generators/html/Ocamlary-IncludedA.html | 26 + test/generators/html/Ocamlary-M.html | 25 + .../html/Ocamlary-ModuleWithSignature.html | 22 + .../Ocamlary-ModuleWithSignatureAlias.html | 25 + test/generators/html/Ocamlary-One.html | 26 + .../html/Ocamlary-Only_a_module.html | 26 + ...collection-InnerModuleA-InnerModuleA'.html | 39 + ...ModuleA-module-type-InnerModuleTypeA'.html | 40 + .../Ocamlary-Recollection-InnerModuleA.html | 75 + ...gument-1-C-InnerModuleA-InnerModuleA'.html | 42 + ...ModuleA-module-type-InnerModuleTypeA'.html | 45 + ...ecollection-argument-1-C-InnerModuleA.html | 80 + ...ment-1-C-module-type-InnerModuleTypeA.html | 40 + .../Ocamlary-Recollection-argument-1-C.html | 80 + ...llection-module-type-InnerModuleTypeA.html | 37 + .../html/Ocamlary-Recollection.html | 108 + .../html/Ocamlary-With10-module-type-T-M.html | 31 + .../html/Ocamlary-With10-module-type-T.html | 43 + test/generators/html/Ocamlary-With10.html | 39 + .../html/Ocamlary-With2-module-type-S.html | 27 + test/generators/html/Ocamlary-With2.html | 33 + test/generators/html/Ocamlary-With3-N.html | 27 + test/generators/html/Ocamlary-With3.html | 37 + test/generators/html/Ocamlary-With4-N.html | 27 + test/generators/html/Ocamlary-With4.html | 29 + test/generators/html/Ocamlary-With5-N.html | 27 + .../html/Ocamlary-With5-module-type-S.html | 27 + test/generators/html/Ocamlary-With5.html | 42 + .../html/Ocamlary-With6-module-type-T-M.html | 39 + .../html/Ocamlary-With6-module-type-T.html | 32 + test/generators/html/Ocamlary-With6.html | 33 + .../html/Ocamlary-With7-argument-1-X.html | 31 + test/generators/html/Ocamlary-With7.html | 52 + .../html/Ocamlary-With9-module-type-S.html | 27 + test/generators/html/Ocamlary-With9.html | 33 + .../html/Ocamlary-class-empty_class.html | 18 + .../html/Ocamlary-class-one_method_class.html | 26 + .../html/Ocamlary-class-param_class.html | 30 + .../html/Ocamlary-class-two_method_class.html | 37 + ...e-type-A-Q-InnerModuleA-InnerModuleA'.html | 39 + ...ModuleA-module-type-InnerModuleTypeA'.html | 41 + ...Ocamlary-module-type-A-Q-InnerModuleA.html | 75 + ...type-A-Q-module-type-InnerModuleTypeA.html | 37 + .../html/Ocamlary-module-type-A-Q.html | 76 + .../html/Ocamlary-module-type-A.html | 35 + ...e-type-B-Q-InnerModuleA-InnerModuleA'.html | 39 + ...ModuleA-module-type-InnerModuleTypeA'.html | 41 + ...Ocamlary-module-type-B-Q-InnerModuleA.html | 75 + ...type-B-Q-module-type-InnerModuleTypeA.html | 37 + .../html/Ocamlary-module-type-B-Q.html | 76 + .../html/Ocamlary-module-type-B.html | 35 + ...e-type-C-Q-InnerModuleA-InnerModuleA'.html | 39 + ...ModuleA-module-type-InnerModuleTypeA'.html | 41 + ...Ocamlary-module-type-C-Q-InnerModuleA.html | 75 + ...type-C-Q-module-type-InnerModuleTypeA.html | 37 + .../html/Ocamlary-module-type-C-Q.html | 76 + .../html/Ocamlary-module-type-C.html | 75 + ...COLLECTION-InnerModuleA-InnerModuleA'.html | 40 + ...ModuleA-module-type-InnerModuleTypeA'.html | 42 + ...y-module-type-COLLECTION-InnerModuleA.html | 78 + ...LLECTION-module-type-InnerModuleTypeA.html | 37 + .../html/Ocamlary-module-type-COLLECTION.html | 80 + .../html/Ocamlary-module-type-Dep10.html | 28 + .../html/Ocamlary-module-type-Empty.html | 27 + .../html/Ocamlary-module-type-EmptySig.html | 19 + .../Ocamlary-module-type-EmptySigAlias.html | 20 + .../Ocamlary-module-type-IncludeInclude2.html | 27 + ...camlary-module-type-IncludeModuleType.html | 35 + .../html/Ocamlary-module-type-IncludedB.html | 26 + .../html/Ocamlary-module-type-M.html | 25 + ...type-MMM-C-InnerModuleA-InnerModuleA'.html | 40 + ...ModuleA-module-type-InnerModuleTypeA'.html | 41 + ...amlary-module-type-MMM-C-InnerModuleA.html | 76 + ...pe-MMM-C-module-type-InnerModuleTypeA.html | 37 + .../html/Ocamlary-module-type-MMM-C.html | 78 + .../html/Ocamlary-module-type-MMM.html | 30 + .../Ocamlary-module-type-MissingComment.html | 27 + ...edInclude1-module-type-NestedInclude2.html | 31 + .../Ocamlary-module-type-NestedInclude1.html | 40 + .../Ocamlary-module-type-NestedInclude2.html | 27 + .../Ocamlary-module-type-RECOLLECTION.html | 31 + ...tionModule-InnerModuleA-InnerModuleA'.html | 42 + ...ModuleA-module-type-InnerModuleTypeA'.html | 44 + ...-type-RecollectionModule-InnerModuleA.html | 79 + ...onModule-module-type-InnerModuleTypeA.html | 40 + ...amlary-module-type-RecollectionModule.html | 90 + ...ype-SigForMod-Inner-module-type-Empty.html | 22 + .../Ocamlary-module-type-SigForMod-Inner.html | 40 + .../html/Ocamlary-module-type-SigForMod.html | 33 + ...le-type-SuperSig-module-type-EmptySig.html | 29 + ...-module-type-SuperSig-module-type-One.html | 28 + ...perSig-module-type-SubSigA-SubSigAMod.html | 32 + ...ule-type-SuperSig-module-type-SubSigA.html | 53 + ...ule-type-SuperSig-module-type-SubSigB.html | 39 + ...le-type-SuperSig-module-type-SuperSig.html | 20 + .../html/Ocamlary-module-type-SuperSig.html | 108 + ...mlary-module-type-ToInclude-IncludedA.html | 28 + ...-type-ToInclude-module-type-IncludedB.html | 28 + .../html/Ocamlary-module-type-ToInclude.html | 51 + .../html/Ocamlary-module-type-TypeExt.html | 56 + .../Ocamlary-module-type-TypeExtPruned.html | 50 + .../html/Ocamlary-module-type-With1-M.html | 31 + .../html/Ocamlary-module-type-With1.html | 41 + .../html/Ocamlary-module-type-With11-N.html | 29 + .../html/Ocamlary-module-type-With11.html | 42 + .../html/Ocamlary-module-type-With8-M-N.html | 29 + ...ary-module-type-With8-M-module-type-S.html | 28 + .../html/Ocamlary-module-type-With8-M.html | 56 + .../html/Ocamlary-module-type-With8.html | 40 + test/generators/html/Ocamlary.html | 2961 +++++++++++++++++ test/generators/html/Recent-X.html | 59 + test/generators/html/Recent-Z-Y-X.html | 27 + test/generators/html/Recent-Z-Y.html | 30 + test/generators/html/Recent-Z.html | 30 + .../html/Recent-module-type-PolyS.html | 40 + .../generators/html/Recent-module-type-S.html | 17 + .../Recent-module-type-S1-argument-1-_.html | 19 + .../html/Recent-module-type-S1.html | 36 + test/generators/html/Recent.html | 336 ++ test/generators/html/Recent_impl-B.html | 36 + test/generators/html/Recent_impl-Foo-A.html | 37 + test/generators/html/Recent_impl-Foo-B.html | 37 + test/generators/html/Recent_impl-Foo.html | 42 + ...ent_impl-module-type-S-F-argument-1-_.html | 20 + .../html/Recent_impl-module-type-S-F.html | 46 + .../html/Recent_impl-module-type-S-X.html | 18 + .../html/Recent_impl-module-type-S.html | 54 + test/generators/html/Recent_impl.html | 66 + test/generators/html/Section.html | 74 + test/generators/html/Stop-N.html | 25 + test/generators/html/Stop.html | 51 + .../html/Stop_dead_link_doc-Foo.html | 27 + test/generators/html/Stop_dead_link_doc.html | 146 + .../html/Toplevel_comments-Alias.html | 27 + .../Toplevel_comments-Include_inline'.html | 31 + .../Toplevel_comments-Include_inline.html | 30 + .../html/Toplevel_comments-M''.html | 20 + .../generators/html/Toplevel_comments-M'.html | 19 + test/generators/html/Toplevel_comments-M.html | 19 + .../Toplevel_comments-Ref_in_synopsis.html | 31 + .../html/Toplevel_comments-class-c1.html | 20 + .../html/Toplevel_comments-class-c2.html | 19 + .../html/Toplevel_comments-class-type-ct.html | 20 + ...omments-module-type-Include_inline_T'.html | 32 + ...comments-module-type-Include_inline_T.html | 31 + .../html/Toplevel_comments-module-type-T.html | 27 + test/generators/html/Toplevel_comments.html | 200 ++ test/generators/html/Type-module-type-X.html | 31 + test/generators/html/Type.html | 876 +++++ test/generators/html/Val.html | 37 + test/generators/html/alias.targets | 3 + test/generators/html/bugs.targets | 1 + test/generators/html/bugs_post_406.targets | 3 + test/generators/html/bugs_pre_410.targets | 1 + test/generators/html/class.targets | 10 + test/generators/html/external.targets | 1 + test/generators/html/functor.targets | 13 + test/generators/html/functor2.targets | 8 + test/generators/html/include.targets | 7 + test/generators/html/include2.targets | 5 + test/generators/html/include_sections.targets | 2 + test/generators/html/interlude.targets | 1 + test/generators/html/labels.targets | 5 + test/generators/html/markup.targets | 1 + test/generators/html/mld.html | 41 + test/generators/html/module.targets | 19 + test/generators/html/nested.targets | 8 + test/generators/html/ocamlary.targets | 202 ++ test/generators/html/page-mld.targets | 1 + test/generators/html/recent.targets | 9 + test/generators/html/recent_impl.targets | 9 + test/generators/html/section.targets | 1 + test/generators/html/stop.targets | 2 + .../html/stop_dead_link_doc.targets | 2 + .../generators/html/toplevel_comments.targets | 14 + test/generators/html/type.targets | 2 + test/generators/html/val.targets | 1 + 357 files changed, 18921 insertions(+) create mode 100644 test/generators/html/Alias-Foo__X.html create mode 100644 test/generators/html/Alias-X.html create mode 100644 test/generators/html/Alias.html create mode 100644 test/generators/html/Bugs.html create mode 100644 test/generators/html/Bugs_post_406-class-let_open'.html create mode 100644 test/generators/html/Bugs_post_406-class-type-let_open.html create mode 100644 test/generators/html/Bugs_post_406.html create mode 100644 test/generators/html/Bugs_pre_410.html create mode 100644 test/generators/html/Class-class-empty_virtual'.html create mode 100644 test/generators/html/Class-class-mutually'.html create mode 100644 test/generators/html/Class-class-polymorphic'.html create mode 100644 test/generators/html/Class-class-recursive'.html create mode 100644 test/generators/html/Class-class-type-empty.html create mode 100644 test/generators/html/Class-class-type-empty_virtual.html create mode 100644 test/generators/html/Class-class-type-mutually.html create mode 100644 test/generators/html/Class-class-type-polymorphic.html create mode 100644 test/generators/html/Class-class-type-recursive.html create mode 100644 test/generators/html/Class.html create mode 100644 test/generators/html/External.html create mode 100644 test/generators/html/Functor-F1-argument-1-Arg.html create mode 100644 test/generators/html/Functor-F1.html create mode 100644 test/generators/html/Functor-F2-argument-1-Arg.html create mode 100644 test/generators/html/Functor-F2.html create mode 100644 test/generators/html/Functor-F3-argument-1-Arg.html create mode 100644 test/generators/html/Functor-F3.html create mode 100644 test/generators/html/Functor-F4-argument-1-Arg.html create mode 100644 test/generators/html/Functor-F4.html create mode 100644 test/generators/html/Functor-F5.html create mode 100644 test/generators/html/Functor-module-type-S.html create mode 100644 test/generators/html/Functor-module-type-S1-argument-1-_.html create mode 100644 test/generators/html/Functor-module-type-S1.html create mode 100644 test/generators/html/Functor.html create mode 100644 test/generators/html/Functor2-X-argument-1-Y.html create mode 100644 test/generators/html/Functor2-X-argument-2-Z.html create mode 100644 test/generators/html/Functor2-X.html create mode 100644 test/generators/html/Functor2-module-type-S.html create mode 100644 test/generators/html/Functor2-module-type-XF-argument-1-Y.html create mode 100644 test/generators/html/Functor2-module-type-XF-argument-2-Z.html create mode 100644 test/generators/html/Functor2-module-type-XF.html create mode 100644 test/generators/html/Functor2.html create mode 100644 test/generators/html/Include-module-type-Dorminant_Module.html create mode 100644 test/generators/html/Include-module-type-Inherent_Module.html create mode 100644 test/generators/html/Include-module-type-Inlined.html create mode 100644 test/generators/html/Include-module-type-Not_inlined.html create mode 100644 test/generators/html/Include-module-type-Not_inlined_and_closed.html create mode 100644 test/generators/html/Include-module-type-Not_inlined_and_opened.html create mode 100644 test/generators/html/Include.html create mode 100644 test/generators/html/Include2-X.html create mode 100644 test/generators/html/Include2-Y.html create mode 100644 test/generators/html/Include2-Y_include_doc.html create mode 100644 test/generators/html/Include2-Y_include_synopsis.html create mode 100644 test/generators/html/Include2.html create mode 100644 test/generators/html/Include_sections-module-type-Something.html create mode 100644 test/generators/html/Include_sections.html create mode 100644 test/generators/html/Interlude.html create mode 100644 test/generators/html/Labels-A.html create mode 100644 test/generators/html/Labels-class-c.html create mode 100644 test/generators/html/Labels-class-type-cs.html create mode 100644 test/generators/html/Labels-module-type-S.html create mode 100644 test/generators/html/Labels.html create mode 100644 test/generators/html/Markup.html create mode 100644 test/generators/html/Module-M'.html create mode 100644 test/generators/html/Module-Mutually.html create mode 100644 test/generators/html/Module-Recursive.html create mode 100644 test/generators/html/Module-module-type-S-M.html create mode 100644 test/generators/html/Module-module-type-S.html create mode 100644 test/generators/html/Module-module-type-S2-M.html create mode 100644 test/generators/html/Module-module-type-S2.html create mode 100644 test/generators/html/Module-module-type-S3-M.html create mode 100644 test/generators/html/Module-module-type-S3.html create mode 100644 test/generators/html/Module-module-type-S4-M.html create mode 100644 test/generators/html/Module-module-type-S4.html create mode 100644 test/generators/html/Module-module-type-S5-M.html create mode 100644 test/generators/html/Module-module-type-S5.html create mode 100644 test/generators/html/Module-module-type-S6-M.html create mode 100644 test/generators/html/Module-module-type-S6.html create mode 100644 test/generators/html/Module-module-type-S7.html create mode 100644 test/generators/html/Module-module-type-S8.html create mode 100644 test/generators/html/Module-module-type-S9.html create mode 100644 test/generators/html/Module.html create mode 100644 test/generators/html/Nested-F-argument-1-Arg1.html create mode 100644 test/generators/html/Nested-F-argument-2-Arg2.html create mode 100644 test/generators/html/Nested-F.html create mode 100644 test/generators/html/Nested-X.html create mode 100644 test/generators/html/Nested-class-inherits.html create mode 100644 test/generators/html/Nested-class-z.html create mode 100644 test/generators/html/Nested-module-type-Y.html create mode 100644 test/generators/html/Nested.html create mode 100644 test/generators/html/Ocamlary-Aliases-E.html create mode 100644 test/generators/html/Ocamlary-Aliases-Foo-A.html create mode 100644 test/generators/html/Ocamlary-Aliases-Foo-B.html create mode 100644 test/generators/html/Ocamlary-Aliases-Foo-C.html create mode 100644 test/generators/html/Ocamlary-Aliases-Foo-D.html create mode 100644 test/generators/html/Ocamlary-Aliases-Foo-E.html create mode 100644 test/generators/html/Ocamlary-Aliases-Foo.html create mode 100644 test/generators/html/Ocamlary-Aliases-Foo__.html create mode 100644 test/generators/html/Ocamlary-Aliases-Foo__A.html create mode 100644 test/generators/html/Ocamlary-Aliases-Foo__B.html create mode 100644 test/generators/html/Ocamlary-Aliases-Foo__C.html create mode 100644 test/generators/html/Ocamlary-Aliases-Foo__D.html create mode 100644 test/generators/html/Ocamlary-Aliases-Foo__E.html create mode 100644 test/generators/html/Ocamlary-Aliases-P1-Y.html create mode 100644 test/generators/html/Ocamlary-Aliases-P1.html create mode 100644 test/generators/html/Ocamlary-Aliases-P2.html create mode 100644 test/generators/html/Ocamlary-Aliases-Std.html create mode 100644 test/generators/html/Ocamlary-Aliases.html create mode 100644 test/generators/html/Ocamlary-Buffer.html create mode 100644 test/generators/html/Ocamlary-CanonicalTest-Base-List.html create mode 100644 test/generators/html/Ocamlary-CanonicalTest-Base.html create mode 100644 test/generators/html/Ocamlary-CanonicalTest-Base__.html create mode 100644 test/generators/html/Ocamlary-CanonicalTest-Base__List.html create mode 100644 test/generators/html/Ocamlary-CanonicalTest-Base__Tests-C.html create mode 100644 test/generators/html/Ocamlary-CanonicalTest-Base__Tests.html create mode 100644 test/generators/html/Ocamlary-CanonicalTest-List_modif.html create mode 100644 test/generators/html/Ocamlary-CanonicalTest.html create mode 100644 test/generators/html/Ocamlary-CollectionModule-InnerModuleA-InnerModuleA'.html create mode 100644 test/generators/html/Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html create mode 100644 test/generators/html/Ocamlary-CollectionModule-InnerModuleA.html create mode 100644 test/generators/html/Ocamlary-CollectionModule-module-type-InnerModuleTypeA.html create mode 100644 test/generators/html/Ocamlary-CollectionModule.html create mode 100644 test/generators/html/Ocamlary-Dep1-X-Y-class-c.html create mode 100644 test/generators/html/Ocamlary-Dep1-X-Y.html create mode 100644 test/generators/html/Ocamlary-Dep1-X.html create mode 100644 test/generators/html/Ocamlary-Dep1-module-type-S-class-c.html create mode 100644 test/generators/html/Ocamlary-Dep1-module-type-S.html create mode 100644 test/generators/html/Ocamlary-Dep1.html create mode 100644 test/generators/html/Ocamlary-Dep11-module-type-S-class-c.html create mode 100644 test/generators/html/Ocamlary-Dep11-module-type-S.html create mode 100644 test/generators/html/Ocamlary-Dep11.html create mode 100644 test/generators/html/Ocamlary-Dep12-argument-1-Arg.html create mode 100644 test/generators/html/Ocamlary-Dep12.html create mode 100644 test/generators/html/Ocamlary-Dep13-class-c.html create mode 100644 test/generators/html/Ocamlary-Dep13.html create mode 100644 test/generators/html/Ocamlary-Dep2-A.html create mode 100644 test/generators/html/Ocamlary-Dep2-argument-1-Arg-X.html create mode 100644 test/generators/html/Ocamlary-Dep2-argument-1-Arg.html create mode 100644 test/generators/html/Ocamlary-Dep2.html create mode 100644 test/generators/html/Ocamlary-Dep3.html create mode 100644 test/generators/html/Ocamlary-Dep4-X.html create mode 100644 test/generators/html/Ocamlary-Dep4-module-type-S-X.html create mode 100644 test/generators/html/Ocamlary-Dep4-module-type-S-Y.html create mode 100644 test/generators/html/Ocamlary-Dep4-module-type-S.html create mode 100644 test/generators/html/Ocamlary-Dep4-module-type-T.html create mode 100644 test/generators/html/Ocamlary-Dep4.html create mode 100644 test/generators/html/Ocamlary-Dep5-Z.html create mode 100644 test/generators/html/Ocamlary-Dep5-argument-1-Arg-module-type-S-Y.html create mode 100644 test/generators/html/Ocamlary-Dep5-argument-1-Arg-module-type-S.html create mode 100644 test/generators/html/Ocamlary-Dep5-argument-1-Arg.html create mode 100644 test/generators/html/Ocamlary-Dep5.html create mode 100644 test/generators/html/Ocamlary-Dep6-X-Y.html create mode 100644 test/generators/html/Ocamlary-Dep6-X-module-type-R.html create mode 100644 test/generators/html/Ocamlary-Dep6-X.html create mode 100644 test/generators/html/Ocamlary-Dep6-module-type-S.html create mode 100644 test/generators/html/Ocamlary-Dep6-module-type-T-Y.html create mode 100644 test/generators/html/Ocamlary-Dep6-module-type-T-module-type-R.html create mode 100644 test/generators/html/Ocamlary-Dep6-module-type-T.html create mode 100644 test/generators/html/Ocamlary-Dep6.html create mode 100644 test/generators/html/Ocamlary-Dep7-M.html create mode 100644 test/generators/html/Ocamlary-Dep7-argument-1-Arg-X.html create mode 100644 test/generators/html/Ocamlary-Dep7-argument-1-Arg-module-type-T.html create mode 100644 test/generators/html/Ocamlary-Dep7-argument-1-Arg.html create mode 100644 test/generators/html/Ocamlary-Dep7.html create mode 100644 test/generators/html/Ocamlary-Dep8-module-type-T.html create mode 100644 test/generators/html/Ocamlary-Dep8.html create mode 100644 test/generators/html/Ocamlary-Dep9-argument-1-X.html create mode 100644 test/generators/html/Ocamlary-Dep9.html create mode 100644 test/generators/html/Ocamlary-DoubleInclude1-DoubleInclude2.html create mode 100644 test/generators/html/Ocamlary-DoubleInclude1.html create mode 100644 test/generators/html/Ocamlary-DoubleInclude3-DoubleInclude2.html create mode 100644 test/generators/html/Ocamlary-DoubleInclude3.html create mode 100644 test/generators/html/Ocamlary-Empty.html create mode 100644 test/generators/html/Ocamlary-ExtMod.html create mode 100644 test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA'.html create mode 100644 test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA'.html create mode 100644 test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA.html create mode 100644 test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-module-type-InnerModuleTypeA.html create mode 100644 test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection.html create mode 100644 test/generators/html/Ocamlary-FunctorTypeOf.html create mode 100644 test/generators/html/Ocamlary-IncludeInclude1-module-type-IncludeInclude2.html create mode 100644 test/generators/html/Ocamlary-IncludeInclude1.html create mode 100644 test/generators/html/Ocamlary-IncludedA.html create mode 100644 test/generators/html/Ocamlary-M.html create mode 100644 test/generators/html/Ocamlary-ModuleWithSignature.html create mode 100644 test/generators/html/Ocamlary-ModuleWithSignatureAlias.html create mode 100644 test/generators/html/Ocamlary-One.html create mode 100644 test/generators/html/Ocamlary-Only_a_module.html create mode 100644 test/generators/html/Ocamlary-Recollection-InnerModuleA-InnerModuleA'.html create mode 100644 test/generators/html/Ocamlary-Recollection-InnerModuleA-module-type-InnerModuleTypeA'.html create mode 100644 test/generators/html/Ocamlary-Recollection-InnerModuleA.html create mode 100644 test/generators/html/Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA'.html create mode 100644 test/generators/html/Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA'.html create mode 100644 test/generators/html/Ocamlary-Recollection-argument-1-C-InnerModuleA.html create mode 100644 test/generators/html/Ocamlary-Recollection-argument-1-C-module-type-InnerModuleTypeA.html create mode 100644 test/generators/html/Ocamlary-Recollection-argument-1-C.html create mode 100644 test/generators/html/Ocamlary-Recollection-module-type-InnerModuleTypeA.html create mode 100644 test/generators/html/Ocamlary-Recollection.html create mode 100644 test/generators/html/Ocamlary-With10-module-type-T-M.html create mode 100644 test/generators/html/Ocamlary-With10-module-type-T.html create mode 100644 test/generators/html/Ocamlary-With10.html create mode 100644 test/generators/html/Ocamlary-With2-module-type-S.html create mode 100644 test/generators/html/Ocamlary-With2.html create mode 100644 test/generators/html/Ocamlary-With3-N.html create mode 100644 test/generators/html/Ocamlary-With3.html create mode 100644 test/generators/html/Ocamlary-With4-N.html create mode 100644 test/generators/html/Ocamlary-With4.html create mode 100644 test/generators/html/Ocamlary-With5-N.html create mode 100644 test/generators/html/Ocamlary-With5-module-type-S.html create mode 100644 test/generators/html/Ocamlary-With5.html create mode 100644 test/generators/html/Ocamlary-With6-module-type-T-M.html create mode 100644 test/generators/html/Ocamlary-With6-module-type-T.html create mode 100644 test/generators/html/Ocamlary-With6.html create mode 100644 test/generators/html/Ocamlary-With7-argument-1-X.html create mode 100644 test/generators/html/Ocamlary-With7.html create mode 100644 test/generators/html/Ocamlary-With9-module-type-S.html create mode 100644 test/generators/html/Ocamlary-With9.html create mode 100644 test/generators/html/Ocamlary-class-empty_class.html create mode 100644 test/generators/html/Ocamlary-class-one_method_class.html create mode 100644 test/generators/html/Ocamlary-class-param_class.html create mode 100644 test/generators/html/Ocamlary-class-two_method_class.html create mode 100644 test/generators/html/Ocamlary-module-type-A-Q-InnerModuleA-InnerModuleA'.html create mode 100644 test/generators/html/Ocamlary-module-type-A-Q-InnerModuleA-module-type-InnerModuleTypeA'.html create mode 100644 test/generators/html/Ocamlary-module-type-A-Q-InnerModuleA.html create mode 100644 test/generators/html/Ocamlary-module-type-A-Q-module-type-InnerModuleTypeA.html create mode 100644 test/generators/html/Ocamlary-module-type-A-Q.html create mode 100644 test/generators/html/Ocamlary-module-type-A.html create mode 100644 test/generators/html/Ocamlary-module-type-B-Q-InnerModuleA-InnerModuleA'.html create mode 100644 test/generators/html/Ocamlary-module-type-B-Q-InnerModuleA-module-type-InnerModuleTypeA'.html create mode 100644 test/generators/html/Ocamlary-module-type-B-Q-InnerModuleA.html create mode 100644 test/generators/html/Ocamlary-module-type-B-Q-module-type-InnerModuleTypeA.html create mode 100644 test/generators/html/Ocamlary-module-type-B-Q.html create mode 100644 test/generators/html/Ocamlary-module-type-B.html create mode 100644 test/generators/html/Ocamlary-module-type-C-Q-InnerModuleA-InnerModuleA'.html create mode 100644 test/generators/html/Ocamlary-module-type-C-Q-InnerModuleA-module-type-InnerModuleTypeA'.html create mode 100644 test/generators/html/Ocamlary-module-type-C-Q-InnerModuleA.html create mode 100644 test/generators/html/Ocamlary-module-type-C-Q-module-type-InnerModuleTypeA.html create mode 100644 test/generators/html/Ocamlary-module-type-C-Q.html create mode 100644 test/generators/html/Ocamlary-module-type-C.html create mode 100644 test/generators/html/Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA'.html create mode 100644 test/generators/html/Ocamlary-module-type-COLLECTION-InnerModuleA-module-type-InnerModuleTypeA'.html create mode 100644 test/generators/html/Ocamlary-module-type-COLLECTION-InnerModuleA.html create mode 100644 test/generators/html/Ocamlary-module-type-COLLECTION-module-type-InnerModuleTypeA.html create mode 100644 test/generators/html/Ocamlary-module-type-COLLECTION.html create mode 100644 test/generators/html/Ocamlary-module-type-Dep10.html create mode 100644 test/generators/html/Ocamlary-module-type-Empty.html create mode 100644 test/generators/html/Ocamlary-module-type-EmptySig.html create mode 100644 test/generators/html/Ocamlary-module-type-EmptySigAlias.html create mode 100644 test/generators/html/Ocamlary-module-type-IncludeInclude2.html create mode 100644 test/generators/html/Ocamlary-module-type-IncludeModuleType.html create mode 100644 test/generators/html/Ocamlary-module-type-IncludedB.html create mode 100644 test/generators/html/Ocamlary-module-type-M.html create mode 100644 test/generators/html/Ocamlary-module-type-MMM-C-InnerModuleA-InnerModuleA'.html create mode 100644 test/generators/html/Ocamlary-module-type-MMM-C-InnerModuleA-module-type-InnerModuleTypeA'.html create mode 100644 test/generators/html/Ocamlary-module-type-MMM-C-InnerModuleA.html create mode 100644 test/generators/html/Ocamlary-module-type-MMM-C-module-type-InnerModuleTypeA.html create mode 100644 test/generators/html/Ocamlary-module-type-MMM-C.html create mode 100644 test/generators/html/Ocamlary-module-type-MMM.html create mode 100644 test/generators/html/Ocamlary-module-type-MissingComment.html create mode 100644 test/generators/html/Ocamlary-module-type-NestedInclude1-module-type-NestedInclude2.html create mode 100644 test/generators/html/Ocamlary-module-type-NestedInclude1.html create mode 100644 test/generators/html/Ocamlary-module-type-NestedInclude2.html create mode 100644 test/generators/html/Ocamlary-module-type-RECOLLECTION.html create mode 100644 test/generators/html/Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA'.html create mode 100644 test/generators/html/Ocamlary-module-type-RecollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html create mode 100644 test/generators/html/Ocamlary-module-type-RecollectionModule-InnerModuleA.html create mode 100644 test/generators/html/Ocamlary-module-type-RecollectionModule-module-type-InnerModuleTypeA.html create mode 100644 test/generators/html/Ocamlary-module-type-RecollectionModule.html create mode 100644 test/generators/html/Ocamlary-module-type-SigForMod-Inner-module-type-Empty.html create mode 100644 test/generators/html/Ocamlary-module-type-SigForMod-Inner.html create mode 100644 test/generators/html/Ocamlary-module-type-SigForMod.html create mode 100644 test/generators/html/Ocamlary-module-type-SuperSig-module-type-EmptySig.html create mode 100644 test/generators/html/Ocamlary-module-type-SuperSig-module-type-One.html create mode 100644 test/generators/html/Ocamlary-module-type-SuperSig-module-type-SubSigA-SubSigAMod.html create mode 100644 test/generators/html/Ocamlary-module-type-SuperSig-module-type-SubSigA.html create mode 100644 test/generators/html/Ocamlary-module-type-SuperSig-module-type-SubSigB.html create mode 100644 test/generators/html/Ocamlary-module-type-SuperSig-module-type-SuperSig.html create mode 100644 test/generators/html/Ocamlary-module-type-SuperSig.html create mode 100644 test/generators/html/Ocamlary-module-type-ToInclude-IncludedA.html create mode 100644 test/generators/html/Ocamlary-module-type-ToInclude-module-type-IncludedB.html create mode 100644 test/generators/html/Ocamlary-module-type-ToInclude.html create mode 100644 test/generators/html/Ocamlary-module-type-TypeExt.html create mode 100644 test/generators/html/Ocamlary-module-type-TypeExtPruned.html create mode 100644 test/generators/html/Ocamlary-module-type-With1-M.html create mode 100644 test/generators/html/Ocamlary-module-type-With1.html create mode 100644 test/generators/html/Ocamlary-module-type-With11-N.html create mode 100644 test/generators/html/Ocamlary-module-type-With11.html create mode 100644 test/generators/html/Ocamlary-module-type-With8-M-N.html create mode 100644 test/generators/html/Ocamlary-module-type-With8-M-module-type-S.html create mode 100644 test/generators/html/Ocamlary-module-type-With8-M.html create mode 100644 test/generators/html/Ocamlary-module-type-With8.html create mode 100644 test/generators/html/Ocamlary.html create mode 100644 test/generators/html/Recent-X.html create mode 100644 test/generators/html/Recent-Z-Y-X.html create mode 100644 test/generators/html/Recent-Z-Y.html create mode 100644 test/generators/html/Recent-Z.html create mode 100644 test/generators/html/Recent-module-type-PolyS.html create mode 100644 test/generators/html/Recent-module-type-S.html create mode 100644 test/generators/html/Recent-module-type-S1-argument-1-_.html create mode 100644 test/generators/html/Recent-module-type-S1.html create mode 100644 test/generators/html/Recent.html create mode 100644 test/generators/html/Recent_impl-B.html create mode 100644 test/generators/html/Recent_impl-Foo-A.html create mode 100644 test/generators/html/Recent_impl-Foo-B.html create mode 100644 test/generators/html/Recent_impl-Foo.html create mode 100644 test/generators/html/Recent_impl-module-type-S-F-argument-1-_.html create mode 100644 test/generators/html/Recent_impl-module-type-S-F.html create mode 100644 test/generators/html/Recent_impl-module-type-S-X.html create mode 100644 test/generators/html/Recent_impl-module-type-S.html create mode 100644 test/generators/html/Recent_impl.html create mode 100644 test/generators/html/Section.html create mode 100644 test/generators/html/Stop-N.html create mode 100644 test/generators/html/Stop.html create mode 100644 test/generators/html/Stop_dead_link_doc-Foo.html create mode 100644 test/generators/html/Stop_dead_link_doc.html create mode 100644 test/generators/html/Toplevel_comments-Alias.html create mode 100644 test/generators/html/Toplevel_comments-Include_inline'.html create mode 100644 test/generators/html/Toplevel_comments-Include_inline.html create mode 100644 test/generators/html/Toplevel_comments-M''.html create mode 100644 test/generators/html/Toplevel_comments-M'.html create mode 100644 test/generators/html/Toplevel_comments-M.html create mode 100644 test/generators/html/Toplevel_comments-Ref_in_synopsis.html create mode 100644 test/generators/html/Toplevel_comments-class-c1.html create mode 100644 test/generators/html/Toplevel_comments-class-c2.html create mode 100644 test/generators/html/Toplevel_comments-class-type-ct.html create mode 100644 test/generators/html/Toplevel_comments-module-type-Include_inline_T'.html create mode 100644 test/generators/html/Toplevel_comments-module-type-Include_inline_T.html create mode 100644 test/generators/html/Toplevel_comments-module-type-T.html create mode 100644 test/generators/html/Toplevel_comments.html create mode 100644 test/generators/html/Type-module-type-X.html create mode 100644 test/generators/html/Type.html create mode 100644 test/generators/html/Val.html create mode 100644 test/generators/html/alias.targets create mode 100644 test/generators/html/bugs.targets create mode 100644 test/generators/html/bugs_post_406.targets create mode 100644 test/generators/html/bugs_pre_410.targets create mode 100644 test/generators/html/class.targets create mode 100644 test/generators/html/external.targets create mode 100644 test/generators/html/functor.targets create mode 100644 test/generators/html/functor2.targets create mode 100644 test/generators/html/include.targets create mode 100644 test/generators/html/include2.targets create mode 100644 test/generators/html/include_sections.targets create mode 100644 test/generators/html/interlude.targets create mode 100644 test/generators/html/labels.targets create mode 100644 test/generators/html/markup.targets create mode 100644 test/generators/html/mld.html create mode 100644 test/generators/html/module.targets create mode 100644 test/generators/html/nested.targets create mode 100644 test/generators/html/ocamlary.targets create mode 100644 test/generators/html/page-mld.targets create mode 100644 test/generators/html/recent.targets create mode 100644 test/generators/html/recent_impl.targets create mode 100644 test/generators/html/section.targets create mode 100644 test/generators/html/stop.targets create mode 100644 test/generators/html/stop_dead_link_doc.targets create mode 100644 test/generators/html/toplevel_comments.targets create mode 100644 test/generators/html/type.targets create mode 100644 test/generators/html/val.targets diff --git a/test/generators/html/Alias-Foo__X.html b/test/generators/html/Alias-Foo__X.html new file mode 100644 index 0000000000..f95cf0bf8a --- /dev/null +++ b/test/generators/html/Alias-Foo__X.html @@ -0,0 +1,33 @@ + + + Foo__X (Alias.Foo__X) + + + + + + + + +
+

Module Alias.Foo__X

+
+
+
+
+ + type t + = int + +
+
+

Module Foo__X documentation. This should appear in the documentation + for the alias to this module 'X' +

+
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Alias-X.html b/test/generators/html/Alias-X.html new file mode 100644 index 0000000000..16211f07b0 --- /dev/null +++ b/test/generators/html/Alias-X.html @@ -0,0 +1,32 @@ + + + X (Alias.X) + + + + + + + +
+

Module Alias.X

+
+
+
+
+ + type t + = int + +
+
+

Module Foo__X documentation. This should appear in the documentation + for the alias to this module 'X' +

+
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Alias.html b/test/generators/html/Alias.html new file mode 100644 index 0000000000..23ee2dda43 --- /dev/null +++ b/test/generators/html/Alias.html @@ -0,0 +1,38 @@ + + + Alias (Alias) + + + + + + +
+

Module Alias

+
+
+
+
+ + module + Foo__X + : sig ... + end + + +
+
+
+
+ + module + X + : sig ... + end + + +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Bugs.html b/test/generators/html/Bugs.html new file mode 100644 index 0000000000..dc716de80f --- /dev/null +++ b/test/generators/html/Bugs.html @@ -0,0 +1,44 @@ + + + Bugs (Bugs) + + + + + + +
+

Module Bugs

+
+
+
+
+ + type 'a opt + = 'a option + +
+
+
+
+ + + val foo : + ?bar:'a + -> + unit -> + unit + + +
+
+

Triggers an assertion failure when + + https://github.com/ocaml/odoc/issues/101 + is not fixed. +

+
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Bugs_post_406-class-let_open'.html b/test/generators/html/Bugs_post_406-class-let_open'.html new file mode 100644 index 0000000000..86e5fd16aa --- /dev/null +++ b/test/generators/html/Bugs_post_406-class-let_open'.html @@ -0,0 +1,18 @@ + + + let_open' (Bugs_post_406.let_open') + + + + + + + + +
+

Class Bugs_post_406.let_open'

+
+ + \ No newline at end of file diff --git a/test/generators/html/Bugs_post_406-class-type-let_open.html b/test/generators/html/Bugs_post_406-class-type-let_open.html new file mode 100644 index 0000000000..ec17fd0b48 --- /dev/null +++ b/test/generators/html/Bugs_post_406-class-type-let_open.html @@ -0,0 +1,18 @@ + + + let_open (Bugs_post_406.let_open) + + + + + + + + +
+

Class type Bugs_post_406.let_open

+
+ + \ No newline at end of file diff --git a/test/generators/html/Bugs_post_406.html b/test/generators/html/Bugs_post_406.html new file mode 100644 index 0000000000..73ca532ec8 --- /dev/null +++ b/test/generators/html/Bugs_post_406.html @@ -0,0 +1,46 @@ + + + Bugs_post_406 (Bugs_post_406) + + + + + + + +
+

Module Bugs_post_406

+

Let-open in class types, https://github.com/ocaml/odoc/issues/543 + This was added to the language in 4.06 +

+
+
+
+
+ + + class + type + + let_open + + = object ... + end + + +
+
+
+
+ + class + let_open' + : object ... + end + + +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Bugs_pre_410.html b/test/generators/html/Bugs_pre_410.html new file mode 100644 index 0000000000..5078379897 --- /dev/null +++ b/test/generators/html/Bugs_pre_410.html @@ -0,0 +1,48 @@ + + + Bugs_pre_410 (Bugs_pre_410) + + + + + + + +
+

Module Bugs_pre_410

+
+
+
+
+ + + type 'a opt' + = int option + +
+
+
+
+ + + val foo' : + ?bar:'a + -> + unit -> + unit + + +
+
+

Similar to Bugs, but the printed type of + ~bar should be int, not 'a + . This probably requires fixing in the compiler. See + + https://github.com/ocaml/odoc/pull/230#issuecomment-433226807 + . +

+
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Class-class-empty_virtual'.html b/test/generators/html/Class-class-empty_virtual'.html new file mode 100644 index 0000000000..41dfda1c47 --- /dev/null +++ b/test/generators/html/Class-class-empty_virtual'.html @@ -0,0 +1,18 @@ + + + empty_virtual' (Class.empty_virtual') + + + + + + + + +
+

Class Class.empty_virtual'

+
+ + \ No newline at end of file diff --git a/test/generators/html/Class-class-mutually'.html b/test/generators/html/Class-class-mutually'.html new file mode 100644 index 0000000000..25e126a401 --- /dev/null +++ b/test/generators/html/Class-class-mutually'.html @@ -0,0 +1,18 @@ + + + mutually' (Class.mutually') + + + + + + + + +
+

Class Class.mutually'

+
+ + \ No newline at end of file diff --git a/test/generators/html/Class-class-polymorphic'.html b/test/generators/html/Class-class-polymorphic'.html new file mode 100644 index 0000000000..cd04d271b0 --- /dev/null +++ b/test/generators/html/Class-class-polymorphic'.html @@ -0,0 +1,18 @@ + + + polymorphic' (Class.polymorphic') + + + + + + + + +
+

Class Class.polymorphic'

+
+ + \ No newline at end of file diff --git a/test/generators/html/Class-class-recursive'.html b/test/generators/html/Class-class-recursive'.html new file mode 100644 index 0000000000..974cbd3cfc --- /dev/null +++ b/test/generators/html/Class-class-recursive'.html @@ -0,0 +1,18 @@ + + + recursive' (Class.recursive') + + + + + + + + +
+

Class Class.recursive'

+
+ + \ No newline at end of file diff --git a/test/generators/html/Class-class-type-empty.html b/test/generators/html/Class-class-type-empty.html new file mode 100644 index 0000000000..56970f1b82 --- /dev/null +++ b/test/generators/html/Class-class-type-empty.html @@ -0,0 +1,18 @@ + + + empty (Class.empty) + + + + + + + + +
+

Class type Class.empty

+
+ + \ No newline at end of file diff --git a/test/generators/html/Class-class-type-empty_virtual.html b/test/generators/html/Class-class-type-empty_virtual.html new file mode 100644 index 0000000000..d7cd23b007 --- /dev/null +++ b/test/generators/html/Class-class-type-empty_virtual.html @@ -0,0 +1,18 @@ + + + empty_virtual (Class.empty_virtual) + + + + + + + + +
+

Class type Class.empty_virtual

+
+ + \ No newline at end of file diff --git a/test/generators/html/Class-class-type-mutually.html b/test/generators/html/Class-class-type-mutually.html new file mode 100644 index 0000000000..5a3376dacc --- /dev/null +++ b/test/generators/html/Class-class-type-mutually.html @@ -0,0 +1,18 @@ + + + mutually (Class.mutually) + + + + + + + + +
+

Class type Class.mutually

+
+ + \ No newline at end of file diff --git a/test/generators/html/Class-class-type-polymorphic.html b/test/generators/html/Class-class-type-polymorphic.html new file mode 100644 index 0000000000..62f50d12a2 --- /dev/null +++ b/test/generators/html/Class-class-type-polymorphic.html @@ -0,0 +1,18 @@ + + + polymorphic (Class.polymorphic) + + + + + + + + +
+

Class type Class.polymorphic

+
+ + \ No newline at end of file diff --git a/test/generators/html/Class-class-type-recursive.html b/test/generators/html/Class-class-type-recursive.html new file mode 100644 index 0000000000..52cbe9a37f --- /dev/null +++ b/test/generators/html/Class-class-type-recursive.html @@ -0,0 +1,18 @@ + + + recursive (Class.recursive) + + + + + + + + +
+

Class type Class.recursive

+
+ + \ No newline at end of file diff --git a/test/generators/html/Class.html b/test/generators/html/Class.html new file mode 100644 index 0000000000..99af51a5bc --- /dev/null +++ b/test/generators/html/Class.html @@ -0,0 +1,131 @@ + + + Class (Class) + + + + + + +
+

Module Class

+
+
+
+
+ + + class + type + empty + = object ... + end + + +
+
+
+
+ + + class + type + + mutually + = object ... + end + + +
+
+
+
+ + + class + type + + recursive + = object ... + end + + +
+
+
+
+ + class + mutually' + : mutually + +
+
+
+
+ + class + recursive' + : recursive + +
+
+
+
+ + class + type virtual + + + empty_virtual + + = object ... + end + + +
+
+
+
+ + + class + virtual + + empty_virtual' + : empty + +
+
+
+
+ + + class + type 'a + + polymorphic + + = object ... + end + + +
+
+
+
+ + class 'a + polymorphic' + : + 'a + polymorphic + + + +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/External.html b/test/generators/html/External.html new file mode 100644 index 0000000000..bda7395d2f --- /dev/null +++ b/test/generators/html/External.html @@ -0,0 +1,27 @@ + + + External (External) + + + + + + + +
+

Module External

+
+
+
+
+ + + val foo : + unit -> unit + + +

Foo bar.

+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor-F1-argument-1-Arg.html b/test/generators/html/Functor-F1-argument-1-Arg.html new file mode 100644 index 0000000000..6f1fdddf7b --- /dev/null +++ b/test/generators/html/Functor-F1-argument-1-Arg.html @@ -0,0 +1,27 @@ + + + Arg (Functor.F1.1-Arg) + + + + + + + + +
+

Parameter F1.1-Arg

+
+
+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor-F1.html b/test/generators/html/Functor-F1.html new file mode 100644 index 0000000000..4374fabfa6 --- /dev/null +++ b/test/generators/html/Functor-F1.html @@ -0,0 +1,42 @@ + + + F1 (Functor.F1) + + + + + + + +
+

Module Functor.F1

+
+ +
+

Parameters +

+
+
+ + module + Arg + : S + +
+
+

Signature

+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor-F2-argument-1-Arg.html b/test/generators/html/Functor-F2-argument-1-Arg.html new file mode 100644 index 0000000000..566fbde26a --- /dev/null +++ b/test/generators/html/Functor-F2-argument-1-Arg.html @@ -0,0 +1,27 @@ + + + Arg (Functor.F2.1-Arg) + + + + + + + + +
+

Parameter F2.1-Arg

+
+
+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor-F2.html b/test/generators/html/Functor-F2.html new file mode 100644 index 0000000000..8569659e87 --- /dev/null +++ b/test/generators/html/Functor-F2.html @@ -0,0 +1,45 @@ + + + F2 (Functor.F2) + + + + + + + +
+

Module Functor.F2

+
+ +
+

Parameters +

+
+
+ + module + Arg + : S + +
+
+

Signature

+
+
+ + type t + = Arg.t + + +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor-F3-argument-1-Arg.html b/test/generators/html/Functor-F3-argument-1-Arg.html new file mode 100644 index 0000000000..ae9df67c95 --- /dev/null +++ b/test/generators/html/Functor-F3-argument-1-Arg.html @@ -0,0 +1,27 @@ + + + Arg (Functor.F3.1-Arg) + + + + + + + + +
+

Parameter F3.1-Arg

+
+
+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor-F3.html b/test/generators/html/Functor-F3.html new file mode 100644 index 0000000000..eb8fa26a51 --- /dev/null +++ b/test/generators/html/Functor-F3.html @@ -0,0 +1,45 @@ + + + F3 (Functor.F3) + + + + + + + +
+

Module Functor.F3

+
+ +
+

Parameters +

+
+
+ + module + Arg + : S + +
+
+

Signature

+
+
+ + type t + = Arg.t + + +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor-F4-argument-1-Arg.html b/test/generators/html/Functor-F4-argument-1-Arg.html new file mode 100644 index 0000000000..06bbe6c3d9 --- /dev/null +++ b/test/generators/html/Functor-F4-argument-1-Arg.html @@ -0,0 +1,27 @@ + + + Arg (Functor.F4.1-Arg) + + + + + + + + +
+

Parameter F4.1-Arg

+
+
+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor-F4.html b/test/generators/html/Functor-F4.html new file mode 100644 index 0000000000..fa74de1950 --- /dev/null +++ b/test/generators/html/Functor-F4.html @@ -0,0 +1,42 @@ + + + F4 (Functor.F4) + + + + + + + +
+

Module Functor.F4

+
+ +
+

Parameters +

+
+
+ + module + Arg + : S + +
+
+

Signature

+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor-F5.html b/test/generators/html/Functor-F5.html new file mode 100644 index 0000000000..b476e8e7c7 --- /dev/null +++ b/test/generators/html/Functor-F5.html @@ -0,0 +1,33 @@ + + + F5 (Functor.F5) + + + + + + + +
+

Module Functor.F5

+
+ +
+

Parameters +

+

Signature

+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor-module-type-S.html b/test/generators/html/Functor-module-type-S.html new file mode 100644 index 0000000000..c7ae05228e --- /dev/null +++ b/test/generators/html/Functor-module-type-S.html @@ -0,0 +1,25 @@ + + + S (Functor.S) + + + + + + + +
+

Module type Functor.S

+
+
+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor-module-type-S1-argument-1-_.html b/test/generators/html/Functor-module-type-S1-argument-1-_.html new file mode 100644 index 0000000000..ef0e8cd037 --- /dev/null +++ b/test/generators/html/Functor-module-type-S1-argument-1-_.html @@ -0,0 +1,27 @@ + + + _ (Functor.S1.1-_) + + + + + + + + +
+

Parameter S1.1-_

+
+
+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor-module-type-S1.html b/test/generators/html/Functor-module-type-S1.html new file mode 100644 index 0000000000..7564aaee5b --- /dev/null +++ b/test/generators/html/Functor-module-type-S1.html @@ -0,0 +1,42 @@ + + + S1 (Functor.S1) + + + + + + + +
+

Module type Functor.S1

+
+ +
+

Parameters +

+
+
+ + module + _ + : S + +
+
+

Signature

+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor.html b/test/generators/html/Functor.html new file mode 100644 index 0000000000..5fae9d0284 --- /dev/null +++ b/test/generators/html/Functor.html @@ -0,0 +1,108 @@ + + + Functor (Functor) + + + + + + + +
+

Module Functor

+
+
+
+
+ + + module + type + S + = sig ... + end + + +
+
+
+
+ + + module + type + S1 + = functor + (_ + : S) + -> + S + + +
+
+
+
+ + module + F1 + (Arg : + S) : + S + + +
+
+
+
+ + module + F2 + (Arg : + S) : + S + with + type + t = + Arg.t + + + +
+
+
+
+ + module + F3 + (Arg : + S) : + sig ... end + + +
+
+
+
+ + module + F4 + (Arg : + S) : + S + + +
+
+
+
+ + module + F5 + () : S + +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor2-X-argument-1-Y.html b/test/generators/html/Functor2-X-argument-1-Y.html new file mode 100644 index 0000000000..7c5a10e847 --- /dev/null +++ b/test/generators/html/Functor2-X-argument-1-Y.html @@ -0,0 +1,27 @@ + + + Y (Functor2.X.1-Y) + + + + + + + + +
+

Parameter X.1-Y

+
+
+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor2-X-argument-2-Z.html b/test/generators/html/Functor2-X-argument-2-Z.html new file mode 100644 index 0000000000..34503908cf --- /dev/null +++ b/test/generators/html/Functor2-X-argument-2-Z.html @@ -0,0 +1,27 @@ + + + Z (Functor2.X.2-Z) + + + + + + + + +
+

Parameter X.2-Z

+
+
+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor2-X.html b/test/generators/html/Functor2-X.html new file mode 100644 index 0000000000..01e7a1aa23 --- /dev/null +++ b/test/generators/html/Functor2-X.html @@ -0,0 +1,69 @@ + + + X (Functor2.X) + + + + + + + +
+

Module Functor2.X

+
+ +
+

Parameters +

+
+
+ + module + Y + : S + +
+
+
+
+ + module + Z + : S + +
+
+

Signature

+
+
+ + type y_t + = Y.t + +
+
+
+
+ + type z_t + = Z.t + +
+
+
+
+ + type x_t + = y_t + +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor2-module-type-S.html b/test/generators/html/Functor2-module-type-S.html new file mode 100644 index 0000000000..f9af33d977 --- /dev/null +++ b/test/generators/html/Functor2-module-type-S.html @@ -0,0 +1,25 @@ + + + S (Functor2.S) + + + + + + + +
+

Module type Functor2.S

+
+
+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor2-module-type-XF-argument-1-Y.html b/test/generators/html/Functor2-module-type-XF-argument-1-Y.html new file mode 100644 index 0000000000..e25c3fe51c --- /dev/null +++ b/test/generators/html/Functor2-module-type-XF-argument-1-Y.html @@ -0,0 +1,27 @@ + + + Y (Functor2.XF.1-Y) + + + + + + + + +
+

Parameter XF.1-Y

+
+
+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor2-module-type-XF-argument-2-Z.html b/test/generators/html/Functor2-module-type-XF-argument-2-Z.html new file mode 100644 index 0000000000..b7852cda04 --- /dev/null +++ b/test/generators/html/Functor2-module-type-XF-argument-2-Z.html @@ -0,0 +1,27 @@ + + + Z (Functor2.XF.2-Z) + + + + + + + + +
+

Parameter XF.2-Z

+
+
+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor2-module-type-XF.html b/test/generators/html/Functor2-module-type-XF.html new file mode 100644 index 0000000000..6fc9b6cbfe --- /dev/null +++ b/test/generators/html/Functor2-module-type-XF.html @@ -0,0 +1,74 @@ + + + XF (Functor2.XF) + + + + + + + + +
+

Module type Functor2.XF

+
+ +
+

Parameters +

+
+
+ + module + Y + : S + +
+
+
+
+ + module + Z + : S + +
+
+

Signature

+
+
+ + type y_t + = + Y.t + + +
+
+
+
+ + type z_t + = + Z.t + + +
+
+
+
+ + type x_t + = y_t + +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Functor2.html b/test/generators/html/Functor2.html new file mode 100644 index 0000000000..01b52ebb80 --- /dev/null +++ b/test/generators/html/Functor2.html @@ -0,0 +1,65 @@ + + + Functor2 (Functor2) + + + + + + + +
+

Module Functor2

+
+
+
+
+ + + module + type + S + = sig ... + end + + +
+
+
+
+ + module + X + (Y : + S) ( + Z : + S) : + sig ... end + + +
+
+
+
+ + + module + type + XF + = functor + (Y + : S) + -> + functor + (Z + : S) + -> + sig ... + end + + +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Include-module-type-Dorminant_Module.html b/test/generators/html/Include-module-type-Dorminant_Module.html new file mode 100644 index 0000000000..4137415651 --- /dev/null +++ b/test/generators/html/Include-module-type-Dorminant_Module.html @@ -0,0 +1,52 @@ + + + Dorminant_Module (Include.Dorminant_Module) + + + + + + + + +
+

Module type Include.Dorminant_Module

+
+
+
+
+ + + include + Inherent_Module + + + + +
+
+ + + val a : + t + + +
+
+
+
+
+
+ + + val a : + u + + +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Include-module-type-Inherent_Module.html b/test/generators/html/Include-module-type-Inherent_Module.html new file mode 100644 index 0000000000..f4d502d5f1 --- /dev/null +++ b/test/generators/html/Include-module-type-Inherent_Module.html @@ -0,0 +1,30 @@ + + + Inherent_Module (Include.Inherent_Module) + + + + + + + + +
+

Module type Include.Inherent_Module

+
+
+
+
+ + + val a : + t + + +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Include-module-type-Inlined.html b/test/generators/html/Include-module-type-Inlined.html new file mode 100644 index 0000000000..38ee80ccf3 --- /dev/null +++ b/test/generators/html/Include-module-type-Inlined.html @@ -0,0 +1,26 @@ + + + Inlined (Include.Inlined) + + + + + + + + +
+

Module type Include.Inlined

+
+
+
+
+ + type u +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Include-module-type-Not_inlined.html b/test/generators/html/Include-module-type-Not_inlined.html new file mode 100644 index 0000000000..02f8bb787b --- /dev/null +++ b/test/generators/html/Include-module-type-Not_inlined.html @@ -0,0 +1,26 @@ + + + Not_inlined (Include.Not_inlined) + + + + + + + + +
+

Module type Include.Not_inlined

+
+
+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Include-module-type-Not_inlined_and_closed.html b/test/generators/html/Include-module-type-Not_inlined_and_closed.html new file mode 100644 index 0000000000..a18903a118 --- /dev/null +++ b/test/generators/html/Include-module-type-Not_inlined_and_closed.html @@ -0,0 +1,27 @@ + + + Not_inlined_and_closed (Include.Not_inlined_and_closed) + + + + + + + + +
+

Module type Include.Not_inlined_and_closed +

+
+
+
+
+ + type v +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Include-module-type-Not_inlined_and_opened.html b/test/generators/html/Include-module-type-Not_inlined_and_opened.html new file mode 100644 index 0000000000..f6f16266b8 --- /dev/null +++ b/test/generators/html/Include-module-type-Not_inlined_and_opened.html @@ -0,0 +1,27 @@ + + + Not_inlined_and_opened (Include.Not_inlined_and_opened) + + + + + + + + +
+

Module type Include.Not_inlined_and_opened +

+
+
+
+
+ + type w +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Include.html b/test/generators/html/Include.html new file mode 100644 index 0000000000..d71616759a --- /dev/null +++ b/test/generators/html/Include.html @@ -0,0 +1,245 @@ + + + Include (Include) + + + + + + + +
+

Module Include

+
+
+
+
+ + module + type + + Not_inlined + + = sig ... + end + + +
+
+
+
+ + + include + Not_inlined + + + +
+
+ + type t +
+
+
+
+
+
+ + + module + type + + Inlined + = sig ... + end + + +
+
+
+
+
+ + type u +
+
+
+
+
+ + + module + type + + + + Not_inlined_and_closed + + + = sig ... + end + + +
+
+
+
+ + + include + + Not_inlined_and_closed + + + + +
+
+ + type v +
+
+
+
+
+
+ + + module + type + + + + Not_inlined_and_opened + + + = sig ... + end + + +
+
+
+
+ + + include + + Not_inlined_and_opened + + + + +
+
+ + type w +
+
+
+
+
+
+ + + module + type + + + Inherent_Module + + = sig ... + end + + +
+
+
+
+ + + include + Inherent_Module + + + + +
+
+ + + val a : t + + +
+
+
+
+
+
+ + + module + type + + + Dorminant_Module + + + = sig ... + end + + +
+
+
+
+ + + include + Dorminant_Module + + + + +
+
+ + + include + Inherent_Module + + + + +
+
+ + + val a : t + + +
+
+
+
+
+
+ + + val a : u + + +
+
+
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Include2-X.html b/test/generators/html/Include2-X.html new file mode 100644 index 0000000000..456361ca4f --- /dev/null +++ b/test/generators/html/Include2-X.html @@ -0,0 +1,28 @@ + + + X (Include2.X) + + + + + + + +
+

Module Include2.X

+

Comment about X that should not appear when including X below.

+
+
+
+
+ + type t + = int + +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Include2-Y.html b/test/generators/html/Include2-Y.html new file mode 100644 index 0000000000..01e0fe9cb7 --- /dev/null +++ b/test/generators/html/Include2-Y.html @@ -0,0 +1,26 @@ + + + Y (Include2.Y) + + + + + + + +
+

Module Include2.Y

+

Top-comment of Y.

+
+
+
+
+ + type t +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Include2-Y_include_doc.html b/test/generators/html/Include2-Y_include_doc.html new file mode 100644 index 0000000000..ed554b29d2 --- /dev/null +++ b/test/generators/html/Include2-Y_include_doc.html @@ -0,0 +1,47 @@ + + + Y_include_doc (Include2.Y_include_doc) + + + + + + + + +
+

Module Include2.Y_include_doc

+
+
+
+
+

Doc attached to include Y. Y's top-comment + shouldn't appear here. +

+
+
+ + + include + module type + of struct + include Y + end + + + +
+
+ + type t + = Y.t + +
+
+
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Include2-Y_include_synopsis.html b/test/generators/html/Include2-Y_include_synopsis.html new file mode 100644 index 0000000000..01eb9a3cb8 --- /dev/null +++ b/test/generators/html/Include2-Y_include_synopsis.html @@ -0,0 +1,45 @@ + + + Y_include_synopsis (Include2.Y_include_synopsis) + + + + + + + + +
+

Module Include2.Y_include_synopsis

+

The include Y below should have the synopsis from + Y's top-comment attached to it. +

+
+
+
+
+ + + include + module type + of struct + include Y + end + + + +
+
+ + type t + = Y.t + +
+
+
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Include2.html b/test/generators/html/Include2.html new file mode 100644 index 0000000000..7442071db2 --- /dev/null +++ b/test/generators/html/Include2.html @@ -0,0 +1,93 @@ + + + Include2 (Include2) + + + + + + + +
+

Module Include2

+
+
+
+
+ + module + X + : sig ... + end + + +
+
+

Comment about X that should not appear when including X below.

+
+
+
+
+ + + include + module type + of struct + include X + end + + + +

Comment about X that should not appear when including X below.

+
+
+ + type t + = int + +
+
+
+
+
+
+ + module + Y + : sig ... + end + + +

Top-comment of Y.

+
+
+
+ + module + Y_include_synopsis + + : sig ... + end + + +
+
+

The include Y below should have the synopsis from + Y's top-comment attached to it. +

+
+
+
+
+ + module + Y_include_doc + : sig ... + end + + +
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Include_sections-module-type-Something.html b/test/generators/html/Include_sections-module-type-Something.html new file mode 100644 index 0000000000..07b3300b9c --- /dev/null +++ b/test/generators/html/Include_sections-module-type-Something.html @@ -0,0 +1,54 @@ + + + Something (Include_sections.Something) + + + + + + + + +
+

Module type Include_sections.Something

+

A module type.

+
+ +
+
+
+ + val something : unit + +
+
+

Something 1 +

foo

+
+
+ + val foo : unit +
+
+

Something 2 +

+
+
+ + val bar : unit +

foo bar

+
+

+ Something 1-bis +

Some text.

+
+ + \ No newline at end of file diff --git a/test/generators/html/Include_sections.html b/test/generators/html/Include_sections.html new file mode 100644 index 0000000000..c1119122bc --- /dev/null +++ b/test/generators/html/Include_sections.html @@ -0,0 +1,202 @@ + + + Include_sections (Include_sections) + + + + + + + +
+

Module Include_sections

+
+ +
+
+
+ + + module + type + + + Something + + = sig ... + end + + +

A module type.

+
+

Let's include + + Something + once +

+
+
+
+ + val something : unit + +
+
+

Something + 1 +

foo

+
+
+ + val foo : unit +
+
+

Something + 2 +

+
+
+ + val bar : unit +

foo bar

+
+

+ Something 1-bis +

Some text.

+
+

+ Second include +

+

Let's include + + Something + a second time: the heading level should be shift here. +

+
+
+
+ + val something : unit + +
+
+

Something + 1 +

foo

+
+
+ + val foo : unit +
+
+

Something + 2 +

+
+
+ + val bar : unit +

foo bar

+
+

+ Something 1-bis +

Some text.

+
+

+ Third include +

Shifted some more.

+
+
+
+ + val something : unit + +
+
+

Something + 1 +

foo

+
+
+ + val foo : unit +
+
+
Something + 2 +
+
+
+ + val bar : unit +

foo bar

+
+

+ Something 1-bis +

Some text.

+
+

And let's include it again, but without inlining it this time: + the ToC shouldn't grow. +

+
+
+ + + include + Something + + + +
+
+ + val something : unit + +
+
+

Something + 1 +

foo

+
+
+ + val foo : unit +
+
+

Something + 2 +

+
+
+ + val bar : unit +

foo bar

+
+

+ Something 1-bis +

Some text.

+
+
+
+ + \ No newline at end of file diff --git a/test/generators/html/Interlude.html b/test/generators/html/Interlude.html new file mode 100644 index 0000000000..eb79c5bd32 --- /dev/null +++ b/test/generators/html/Interlude.html @@ -0,0 +1,54 @@ + + + Interlude (Interlude) + + + + + + + +
+

Module Interlude

+

This is the comment associated to the module.

+
+
+

Some separate stray text at the top of the module.

+
+
+ + val foo : unit +

Foo.

+
+

Some stray text that is not associated with any signature item.

+

It has multiple paragraphs.

+

A separate block of stray text, adjacent to the preceding one.

+
+
+ + val bar : unit +

Bar.

+
+
+
+ + val multiple : unit + +
+
+
+
+ + val signature : unit + +
+
+
+
+ + val items : unit +
+

Stray text at the bottom of the module.

+
+ + \ No newline at end of file diff --git a/test/generators/html/Labels-A.html b/test/generators/html/Labels-A.html new file mode 100644 index 0000000000..92faccb3c9 --- /dev/null +++ b/test/generators/html/Labels-A.html @@ -0,0 +1,23 @@ + + + A (Labels.A) + + + + + + + +
+

Module Labels.A

+
+ +
+

Attached to module

+
+ + \ No newline at end of file diff --git a/test/generators/html/Labels-class-c.html b/test/generators/html/Labels-class-c.html new file mode 100644 index 0000000000..bb78a6f93c --- /dev/null +++ b/test/generators/html/Labels-class-c.html @@ -0,0 +1,22 @@ + + + c (Labels.c) + + + + + + + +
+

Class Labels.c

+
+ +
+

Attached to class

+
+ + \ No newline at end of file diff --git a/test/generators/html/Labels-class-type-cs.html b/test/generators/html/Labels-class-type-cs.html new file mode 100644 index 0000000000..ef9e1533a3 --- /dev/null +++ b/test/generators/html/Labels-class-type-cs.html @@ -0,0 +1,23 @@ + + + cs (Labels.cs) + + + + + + + +
+

Class type Labels.cs

+
+ +
+

Attached to class type

+
+ + \ No newline at end of file diff --git a/test/generators/html/Labels-module-type-S.html b/test/generators/html/Labels-module-type-S.html new file mode 100644 index 0000000000..7aa84927e6 --- /dev/null +++ b/test/generators/html/Labels-module-type-S.html @@ -0,0 +1,23 @@ + + + S (Labels.S) + + + + + + + +
+

Module type Labels.S

+
+ +
+

Attached to module type

+
+ + \ No newline at end of file diff --git a/test/generators/html/Labels.html b/test/generators/html/Labels.html new file mode 100644 index 0000000000..070ab53bad --- /dev/null +++ b/test/generators/html/Labels.html @@ -0,0 +1,199 @@ + + + Labels (Labels) + + + + + + +
+

Module Labels

+
+ +
+

Attached to unit

+

Attached to nothing

+
+
+ + module + A + : sig ... + end + + +
+
+
+
+ + type t +

Attached to type

+
+
+
+ + + val f : t + + +

Attached to value

+
+
+
+ + + val e : + unit -> + t + + +

Attached to external

+
+
+
+ + + module + type + S + = sig ... + end + + +
+
+
+
+ + class + c + : object ... + end + + +
+
+
+
+ + + class + type + cs + = object ... + end + + +
+
+
+
+ + exception + E + +

Attached to exception

+
+
+
+ + type x = + .. + +
+
+
+
+ + + type x += + + + + + + +
+ | X + +
+

Attached to extension

+
+
+
+ + + module S := + A + + +

Attached to module subst

+
+
+
+ + type s + := t + +

Attached to type subst

+
+
+
+ + type u = + + + + + + +
+ + | A' + + (* +

Attached to constructor

*) +
+
+
+
+
+ + type v = + { + + + + + + +
+ f : t; + (* +

Attached to field

*) +
} +
+

Testing that labels can be referenced

+ +
+ + \ No newline at end of file diff --git a/test/generators/html/Markup.html b/test/generators/html/Markup.html new file mode 100644 index 0000000000..bf54a2690b --- /dev/null +++ b/test/generators/html/Markup.html @@ -0,0 +1,249 @@ + + + Markup (Markup) + + + + + + +
+

Module Markup

+

Here, we test the rendering of comment markup.

+
+ +
+

Sections

+

Let's get these done first, because sections will be used to break + up the rest of this test. +

Besides the section heading above, there are also

+

+ Subsection headings +

and

+

+ Sub-subsection + headings +

+

but odoc has banned deeper headings. There are also title headings, + but they are only allowed in mld files. +

Anchors

+

Sections can have attached Anchors, and + it is possible to link to them. Links to section + headers should not be set in source code style. +

+
Paragraph
+

Individual paragraphs can have a heading.

+
+ Subparagraph +
+

Parts of a longer paragraph that can be considered alone can also + have headings. +

Styling

+

This paragraph has some styled elements: bold and italic + , bold italic, emphasis, + emphasis within emphasis, + bold italic, superscript, subscript + . The line spacing should be enough for superscripts and subscripts + not to look odd. +

+

Note: + In italics emphasis is rendered as normal text while + emphasis in emphasis is rendered in + italics. + + It also work the same in + links in italics with + emphasis in emphasis. + + +

+

code is a different kind of markup that doesn't allow + nested markup. +

+

It's possible for two markup elements to appear next to + each other and have a space, and appear nextto each + other with no space. It doesn't matter how much space + it was in the source: in this sentence, it was two space characters. + And in this one, there is a newline. +

+

This is also true between non-code markup + and code. +

+

Code can appear inside other markup. Its display + shouldn't be affected. +

+ +

This is a link. It sends you to the top of this + page. Links can have markup inside them: bold + , italics, emphasis + , superscript, + subscript, and + code. Links can also be nested + inside markup. Links cannot be nested inside + each other. This link has no replacement text: # + . The text is filled in by odoc. This is a shorthand link: + #. The text is also filled in by odoc in this case. +

+

This is a reference to foo. + References can have replacement text: + the value foo. Except for the special lookup + support, references are pretty much just like links. The replacement + text can have nested styles: bold, + italic, + emphasis, + superscript, + subscript, and + code. It's also possible to surround + a reference in a style: foo + . References can't be nested inside references, and links and references + can't be nested inside each other. +

+

+ Preformatted text +

This is a code block:

+
+    
+     let foo = ()
+     (** There are some nested comments in here, but an unpaired comment
+         terminator would terminate the whole doc surrounding comment. It's
+         best to keep code blocks no wider than 72 characters. *)
+     
+     let bar =
+       ignore foo
+    
+   

There are also verbatim blocks:

+
The main difference is these don't get syntax highlighting.
+

Lists

+
  • This is a
  • shorthand bulleted list,
  • +
  • and the paragraphs in each list item support styling.
  • +
  1. This is a
  2. shorthand numbered list.
+
    +
  • Shorthand list items can span multiple lines, however trying + to put two paragraphs into a shorthand list item using a double + line break +
  • +

just creates a paragraph outside the list.

+
  • Similarly, inserting a blank line between two list items
+
  • creates two separate lists.
+
    +
  • To get around this limitation, one

    +

    can use explicitly-delimited lists.

    +
  • This one is bulleted,
  • +
  1. but there is also the numbered variant.
+
    +
  • +
    • lists
    • can be nested
    • +
    • and can include references
    • +
    • foo
    • +
    +
  • +

Unicode

+

The parser supports any ASCII-compatible encoding, in particuλar + UTF-8. +

Raw HTML

+

Raw HTML can be as inline + elements into sentences. +

+ +
+ If the raw HTML is the only thing in a paragraph, it is treated as a block + element, and won't be wrapped in paragraph tags by the HTML generator. +
+ +

Modules

+
    • X
    +
    • X
    • Y
    • +
    • Z
    • +

    Tags

    +

    Each comment can end with zero or more tags. Here are some examples: +

    +
      +
    • author antron
    • +
    +
      +
    • deprecated +

      a long time ago

      +
    • +
    +
      +
    • parameter + foo

      unused

      +
    • +
    +
      +
    • raises + Failure

      always

      +
    • +
    +
      +
    • returns

      never

    • +
    +
      +
    • see + #

      this url

      +
    • +
    +
      +
    • see + foo.ml

      this file

      +
    • +
    +
      +
    • see + Foo

      this document

      +
    • +
    +
      +
    • since 0
    • +
    +
      +
    • before + 1.0 +

      it was in beta

      +
    • +
    +
      +
    • version -1
    • +
    +
    +
    + + val foo : unit +
    +
    +

    Comments in structure items support markup, t + oo. +

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-M'.html b/test/generators/html/Module-M'.html new file mode 100644 index 0000000000..66e6dbe7c6 --- /dev/null +++ b/test/generators/html/Module-M'.html @@ -0,0 +1,17 @@ + + + M' (Module.M') + + + + + + + +
    +

    Module Module.M'

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-Mutually.html b/test/generators/html/Module-Mutually.html new file mode 100644 index 0000000000..07d4d2c251 --- /dev/null +++ b/test/generators/html/Module-Mutually.html @@ -0,0 +1,18 @@ + + + Mutually (Module.Mutually) + + + + + + + + +
    +

    Module Module.Mutually

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-Recursive.html b/test/generators/html/Module-Recursive.html new file mode 100644 index 0000000000..dd38b0402e --- /dev/null +++ b/test/generators/html/Module-Recursive.html @@ -0,0 +1,18 @@ + + + Recursive (Module.Recursive) + + + + + + + + +
    +

    Module Module.Recursive

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-module-type-S-M.html b/test/generators/html/Module-module-type-S-M.html new file mode 100644 index 0000000000..45d7985b50 --- /dev/null +++ b/test/generators/html/Module-module-type-S-M.html @@ -0,0 +1,17 @@ + + + M (Module.S.M) + + + + + + + +

    Module S.M

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-module-type-S.html b/test/generators/html/Module-module-type-S.html new file mode 100644 index 0000000000..239371f0e5 --- /dev/null +++ b/test/generators/html/Module-module-type-S.html @@ -0,0 +1,57 @@ + + + S (Module.S) + + + + + + + +
    +

    Module type Module.S

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + type u +
    +
    +
    +
    + + type 'a v + +
    +
    +
    +
    + + + type ('a, 'b) w + +
    +
    +
    +
    + + module + M + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-module-type-S2-M.html b/test/generators/html/Module-module-type-S2-M.html new file mode 100644 index 0000000000..37e3c3a367 --- /dev/null +++ b/test/generators/html/Module-module-type-S2-M.html @@ -0,0 +1,18 @@ + + + M (Module.S2.M) + + + + + + + +
    +

    Module S2.M

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-module-type-S2.html b/test/generators/html/Module-module-type-S2.html new file mode 100644 index 0000000000..afd270f1c7 --- /dev/null +++ b/test/generators/html/Module-module-type-S2.html @@ -0,0 +1,57 @@ + + + S2 (Module.S2) + + + + + + + +
    +

    Module type Module.S2

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + type u +
    +
    +
    +
    + + type 'a v + +
    +
    +
    +
    + + + type ('a, 'b) w + +
    +
    +
    +
    + + module + M + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-module-type-S3-M.html b/test/generators/html/Module-module-type-S3-M.html new file mode 100644 index 0000000000..bca45c1d32 --- /dev/null +++ b/test/generators/html/Module-module-type-S3-M.html @@ -0,0 +1,18 @@ + + + M (Module.S3.M) + + + + + + + +
    +

    Module S3.M

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-module-type-S3.html b/test/generators/html/Module-module-type-S3.html new file mode 100644 index 0000000000..2e7c8b0a6f --- /dev/null +++ b/test/generators/html/Module-module-type-S3.html @@ -0,0 +1,61 @@ + + + S3 (Module.S3) + + + + + + + +
    +

    Module type Module.S3

    +
    +
    +
    +
    + + type t + = int + +
    +
    +
    +
    + + type u + = string + +
    +
    +
    +
    + + type 'a v + +
    +
    +
    +
    + + + type ('a, 'b) w + +
    +
    +
    +
    + + module + M + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-module-type-S4-M.html b/test/generators/html/Module-module-type-S4-M.html new file mode 100644 index 0000000000..4d43f3db23 --- /dev/null +++ b/test/generators/html/Module-module-type-S4-M.html @@ -0,0 +1,18 @@ + + + M (Module.S4.M) + + + + + + + +
    +

    Module S4.M

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-module-type-S4.html b/test/generators/html/Module-module-type-S4.html new file mode 100644 index 0000000000..8f5b23708d --- /dev/null +++ b/test/generators/html/Module-module-type-S4.html @@ -0,0 +1,51 @@ + + + S4 (Module.S4) + + + + + + + +
    +

    Module type Module.S4

    +
    +
    +
    +
    + + type u +
    +
    +
    +
    + + type 'a v + +
    +
    +
    +
    + + + type ('a, 'b) w + +
    +
    +
    +
    + + module + M + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-module-type-S5-M.html b/test/generators/html/Module-module-type-S5-M.html new file mode 100644 index 0000000000..fad0d69fc4 --- /dev/null +++ b/test/generators/html/Module-module-type-S5-M.html @@ -0,0 +1,18 @@ + + + M (Module.S5.M) + + + + + + + +
    +

    Module S5.M

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-module-type-S5.html b/test/generators/html/Module-module-type-S5.html new file mode 100644 index 0000000000..a1fa8d8ee5 --- /dev/null +++ b/test/generators/html/Module-module-type-S5.html @@ -0,0 +1,50 @@ + + + S5 (Module.S5) + + + + + + + +
    +

    Module type Module.S5

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + type u +
    +
    +
    +
    + + + type ('a, 'b) w + +
    +
    +
    +
    + + module + M + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-module-type-S6-M.html b/test/generators/html/Module-module-type-S6-M.html new file mode 100644 index 0000000000..ec66f16082 --- /dev/null +++ b/test/generators/html/Module-module-type-S6-M.html @@ -0,0 +1,18 @@ + + + M (Module.S6.M) + + + + + + + +
    +

    Module S6.M

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-module-type-S6.html b/test/generators/html/Module-module-type-S6.html new file mode 100644 index 0000000000..38a6fb40b2 --- /dev/null +++ b/test/generators/html/Module-module-type-S6.html @@ -0,0 +1,49 @@ + + + S6 (Module.S6) + + + + + + + +
    +

    Module type Module.S6

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + type u +
    +
    +
    +
    + + type 'a v + +
    +
    +
    +
    + + module + M + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-module-type-S7.html b/test/generators/html/Module-module-type-S7.html new file mode 100644 index 0000000000..b913b805f0 --- /dev/null +++ b/test/generators/html/Module-module-type-S7.html @@ -0,0 +1,54 @@ + + + S7 (Module.S7) + + + + + + + +
    +

    Module type Module.S7

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + type u +
    +
    +
    +
    + + type 'a v + +
    +
    +
    +
    + + + type ('a, 'b) w + +
    +
    +
    +
    + + module M + = M' + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-module-type-S8.html b/test/generators/html/Module-module-type-S8.html new file mode 100644 index 0000000000..6e063616bb --- /dev/null +++ b/test/generators/html/Module-module-type-S8.html @@ -0,0 +1,46 @@ + + + S8 (Module.S8) + + + + + + + +
    +

    Module type Module.S8

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + type u +
    +
    +
    +
    + + type 'a v + +
    +
    +
    +
    + + + type ('a, 'b) w + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module-module-type-S9.html b/test/generators/html/Module-module-type-S9.html new file mode 100644 index 0000000000..dabec1813a --- /dev/null +++ b/test/generators/html/Module-module-type-S9.html @@ -0,0 +1,17 @@ + + + S9 (Module.S9) + + + + + + + +
    +

    Module type Module.S9

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Module.html b/test/generators/html/Module.html new file mode 100644 index 0000000000..57cda91353 --- /dev/null +++ b/test/generators/html/Module.html @@ -0,0 +1,228 @@ + + + Module (Module) + + + + + + +
    +

    Module Module

    Foo.

    +
    +
    +
    +
    + + val foo : unit +
    +
    +

    The module needs at least one signature item, otherwise a bug + causes the compiler to drop the module comment (above). See + + https://caml.inria.fr/mantis/view.php?id=7701 + . +

    +
    +
    +
    +
    + + + module + type + S + = sig ... + end + + +
    +
    +
    +
    + + + module + type + S1 + +
    +
    +
    +
    + + + module + type + S2 + = S + +
    +
    +
    +
    + + + module + type + S3 + = S + with + type + t = int + and + type + u = string + + + +
    +
    +
    +
    + + + module + type + S4 + = S + with + type + t := int + + + +
    +
    +
    +
    + + + module + type + S5 + = S + with + type + 'a v + := 'a list + + + +
    +
    +
    +
    + + + type ('a, 'b) result + + +
    +
    +
    +
    + + + module + type + S6 + = S + with + type + ('a, 'b) w + := + + ('a,  + 'b) + result + + + + +
    +
    +
    +
    + + module + M' + : sig ... + end + + +
    +
    +
    +
    + + + module + type + S7 + = S + with + module + M = + M' + + + +
    +
    +
    +
    + + + module + type + S8 + = S + with + module + M := + M' + + + +
    +
    +
    +
    + + + module + type + S9 + = module + type of + M' + + +
    +
    +
    +
    + + module + Mutually + : sig ... + end + + +
    +
    +
    +
    + + module + Recursive + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Nested-F-argument-1-Arg1.html b/test/generators/html/Nested-F-argument-1-Arg1.html new file mode 100644 index 0000000000..327238cddb --- /dev/null +++ b/test/generators/html/Nested-F-argument-1-Arg1.html @@ -0,0 +1,41 @@ + + + Arg1 (Nested.F.1-Arg1) + + + + + + + + +
    +

    Parameter F.1-Arg1

    +
    + +
    +

    Type

    +
    +
    + + type t +

    Some type.

    +

    Values

    +
    +
    + + + val y : t + + +

    The value of y.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Nested-F-argument-2-Arg2.html b/test/generators/html/Nested-F-argument-2-Arg2.html new file mode 100644 index 0000000000..7f816f2e33 --- /dev/null +++ b/test/generators/html/Nested-F-argument-2-Arg2.html @@ -0,0 +1,29 @@ + + + Arg2 (Nested.F.2-Arg2) + + + + + + + + +
    +

    Parameter F.2-Arg2

    +
    + +
    +

    Type

    +
    +
    + + type t +

    Some type.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Nested-F.html b/test/generators/html/Nested-F.html new file mode 100644 index 0000000000..7149e335bd --- /dev/null +++ b/test/generators/html/Nested-F.html @@ -0,0 +1,60 @@ + + + F (Nested.F) + + + + + + + +
    +

    Module Nested.F

    +

    This is a functor F.

    Some additional comments.

    +
    + +
    +

    Type

    +

    Parameters +

    +
    +
    + + module + Arg1 + : Y + +
    +
    +
    +
    + + module + Arg2 + : sig ... + end + + +
    +
    +

    Signature

    +
    +
    + + type t + = Arg1.t + * Arg2.t + + +

    Some type.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Nested-X.html b/test/generators/html/Nested-X.html new file mode 100644 index 0000000000..374a159c19 --- /dev/null +++ b/test/generators/html/Nested-X.html @@ -0,0 +1,40 @@ + + + X (Nested.X) + + + + + + + +
    +

    Module Nested.X

    This is module X.

    +

    Some additional comments.

    +
    + +
    +

    Type

    +
    +
    + + type t +

    Some type.

    +

    Values

    +
    +
    + + + val x : t + + +

    The value of x.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Nested-class-inherits.html b/test/generators/html/Nested-class-inherits.html new file mode 100644 index 0000000000..e29ccfef7e --- /dev/null +++ b/test/generators/html/Nested-class-inherits.html @@ -0,0 +1,29 @@ + + + inherits (Nested.inherits) + + + + + + + + +
    +

    Class Nested.inherits

    +
    +
    +
    +
    + + inherit + z + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Nested-class-z.html b/test/generators/html/Nested-class-z.html new file mode 100644 index 0000000000..619abc4a23 --- /dev/null +++ b/test/generators/html/Nested-class-z.html @@ -0,0 +1,56 @@ + + + z (Nested.z) + + + + + + + +
    +

    Class Nested.z

    This is class z.

    +

    Some additional comments.

    +
    + +
    +
    +
    + + val y : int +

    Some value.

    +
    +
    +
    + + + val + mutable + virtual y' : int + + +
    +

    Methods

    +
    +
    + + method z : int +

    Some method.

    +
    +
    +
    + + + method + private + virtual z' : int + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Nested-module-type-Y.html b/test/generators/html/Nested-module-type-Y.html new file mode 100644 index 0000000000..2da9d0b2a3 --- /dev/null +++ b/test/generators/html/Nested-module-type-Y.html @@ -0,0 +1,40 @@ + + + Y (Nested.Y) + + + + + + + +
    +

    Module type Nested.Y

    +

    This is module type Y.

    Some additional comments.

    +
    + +
    +

    Type

    +
    +
    + + type t +

    Some type.

    +

    Values

    +
    +
    + + + val y : t + + +

    The value of y.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Nested.html b/test/generators/html/Nested.html new file mode 100644 index 0000000000..d0bba79df9 --- /dev/null +++ b/test/generators/html/Nested.html @@ -0,0 +1,92 @@ + + + Nested (Nested) + + + + + + +
    +

    Module Nested

    +

    This comment needs to be here before #235 is fixed.

    +
    + +
    +

    Module

    +
    +
    + + module + X + : sig ... + end + + +

    This is module X.

    +
    +

    Module type +

    +
    +
    + + + module + type + Y + = sig ... + end + + +

    This is module type Y.

    +

    Functor

    +
    +
    + + module + F + (Arg1 : + Y) ( + Arg2 : + sig ... end + ) : sig ... + end + + +

    This is a functor F.

    +

    Class

    +
    +
    + + + class + virtual + z + : object ... + end + + +

    This is class z.

    +
    +
    +
    + + + class + virtual + inherits + : object ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-E.html b/test/generators/html/Ocamlary-Aliases-E.html new file mode 100644 index 0000000000..56983ba541 --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-E.html @@ -0,0 +1,38 @@ + + + E (Ocamlary.Aliases.E) + + + + + + + + +
    +

    Module Aliases.E

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + + val id : + t -> + t + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-Foo-A.html b/test/generators/html/Ocamlary-Aliases-Foo-A.html new file mode 100644 index 0000000000..ad9173f775 --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-Foo-A.html @@ -0,0 +1,39 @@ + + + A (Ocamlary.Aliases.Foo.A) + + + + + + + + +
    +

    Module Foo.A

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + + val id : + t -> + t + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-Foo-B.html b/test/generators/html/Ocamlary-Aliases-Foo-B.html new file mode 100644 index 0000000000..dd854e4c15 --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-Foo-B.html @@ -0,0 +1,39 @@ + + + B (Ocamlary.Aliases.Foo.B) + + + + + + + + +
    +

    Module Foo.B

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + + val id : + t -> + t + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-Foo-C.html b/test/generators/html/Ocamlary-Aliases-Foo-C.html new file mode 100644 index 0000000000..fa299ebe44 --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-Foo-C.html @@ -0,0 +1,39 @@ + + + C (Ocamlary.Aliases.Foo.C) + + + + + + + + +
    +

    Module Foo.C

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + + val id : + t -> + t + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-Foo-D.html b/test/generators/html/Ocamlary-Aliases-Foo-D.html new file mode 100644 index 0000000000..9b02c1306c --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-Foo-D.html @@ -0,0 +1,39 @@ + + + D (Ocamlary.Aliases.Foo.D) + + + + + + + + +
    +

    Module Foo.D

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + + val id : + t -> + t + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-Foo-E.html b/test/generators/html/Ocamlary-Aliases-Foo-E.html new file mode 100644 index 0000000000..10ee26ec92 --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-Foo-E.html @@ -0,0 +1,39 @@ + + + E (Ocamlary.Aliases.Foo.E) + + + + + + + + +
    +

    Module Foo.E

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + + val id : + t -> + t + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-Foo.html b/test/generators/html/Ocamlary-Aliases-Foo.html new file mode 100644 index 0000000000..de9dd9c1fe --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-Foo.html @@ -0,0 +1,76 @@ + + + Foo (Ocamlary.Aliases.Foo) + + + + + + + + +
    +

    Module Aliases.Foo

    +
    +
    +
    +
    + + module + A + : sig ... + end + + +
    +
    +
    +
    + + module + B + : sig ... + end + + +
    +
    +
    +
    + + module + C + : sig ... + end + + +
    +
    +
    +
    + + module + D + : sig ... + end + + +
    +
    +
    +
    + + module + E + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-Foo__.html b/test/generators/html/Ocamlary-Aliases-Foo__.html new file mode 100644 index 0000000000..844ff43c4c --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-Foo__.html @@ -0,0 +1,61 @@ + + + Foo__ (Ocamlary.Aliases.Foo__) + + + + + + + + +
    +

    Module Aliases.Foo__

    +
    +
    +
    +
    + + module A + = Foo__A + +
    +
    +
    +
    + + module B + = Foo__B + +
    +
    +
    +
    + + module C + = Foo__C + +
    +
    +
    +
    + + module D + = Foo__D + +
    +
    +
    +
    + + module E + = Foo__E + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-Foo__A.html b/test/generators/html/Ocamlary-Aliases-Foo__A.html new file mode 100644 index 0000000000..986fb02718 --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-Foo__A.html @@ -0,0 +1,39 @@ + + + Foo__A (Ocamlary.Aliases.Foo__A) + + + + + + + + +
    +

    Module Aliases.Foo__A

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + + val id : + t + -> + t + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-Foo__B.html b/test/generators/html/Ocamlary-Aliases-Foo__B.html new file mode 100644 index 0000000000..86b3d00c24 --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-Foo__B.html @@ -0,0 +1,39 @@ + + + Foo__B (Ocamlary.Aliases.Foo__B) + + + + + + + + +
    +

    Module Aliases.Foo__B

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + + val id : + t + -> + t + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-Foo__C.html b/test/generators/html/Ocamlary-Aliases-Foo__C.html new file mode 100644 index 0000000000..89f14da103 --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-Foo__C.html @@ -0,0 +1,39 @@ + + + Foo__C (Ocamlary.Aliases.Foo__C) + + + + + + + + +
    +

    Module Aliases.Foo__C

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + + val id : + t + -> + t + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-Foo__D.html b/test/generators/html/Ocamlary-Aliases-Foo__D.html new file mode 100644 index 0000000000..4abba7b143 --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-Foo__D.html @@ -0,0 +1,39 @@ + + + Foo__D (Ocamlary.Aliases.Foo__D) + + + + + + + + +
    +

    Module Aliases.Foo__D

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + + val id : + t + -> + t + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-Foo__E.html b/test/generators/html/Ocamlary-Aliases-Foo__E.html new file mode 100644 index 0000000000..d4dcea0cbb --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-Foo__E.html @@ -0,0 +1,39 @@ + + + Foo__E (Ocamlary.Aliases.Foo__E) + + + + + + + + +
    +

    Module Aliases.Foo__E

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + + val id : + t + -> + t + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-P1-Y.html b/test/generators/html/Ocamlary-Aliases-P1-Y.html new file mode 100644 index 0000000000..ec14340191 --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-P1-Y.html @@ -0,0 +1,39 @@ + + + Y (Ocamlary.Aliases.P1.Y) + + + + + + + + +
    +

    Module P1.Y

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + + val id : + t -> + t + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-P1.html b/test/generators/html/Ocamlary-Aliases-P1.html new file mode 100644 index 0000000000..9bc2b6c87e --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-P1.html @@ -0,0 +1,32 @@ + + + P1 (Ocamlary.Aliases.P1) + + + + + + + + +
    +

    Module Aliases.P1

    +
    +
    +
    +
    + + module + Y + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-P2.html b/test/generators/html/Ocamlary-Aliases-P2.html new file mode 100644 index 0000000000..bc449ed336 --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-P2.html @@ -0,0 +1,29 @@ + + + P2 (Ocamlary.Aliases.P2) + + + + + + + + +
    +

    Module Aliases.P2

    +
    +
    +
    +
    + + module Z + = Z + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases-Std.html b/test/generators/html/Ocamlary-Aliases-Std.html new file mode 100644 index 0000000000..0385efc02e --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases-Std.html @@ -0,0 +1,61 @@ + + + Std (Ocamlary.Aliases.Std) + + + + + + + + +
    +

    Module Aliases.Std

    +
    +
    +
    +
    + + module A + = Foo.A + +
    +
    +
    +
    + + module B + = Foo.B + +
    +
    +
    +
    + + module C + = Foo.C + +
    +
    +
    +
    + + module D + = Foo.D + +
    +
    +
    +
    + + module E + = Foo.E + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Aliases.html b/test/generators/html/Ocamlary-Aliases.html new file mode 100644 index 0000000000..6f2907017c --- /dev/null +++ b/test/generators/html/Ocamlary-Aliases.html @@ -0,0 +1,295 @@ + + + Aliases (Ocamlary.Aliases) + + + + + + + + +
    +

    Module Ocamlary.Aliases

    +

    Let's imitate jst's layout.

    +
    + +
    +
    +
    + + module + Foo__A + : sig ... + end + + +
    +
    +
    +
    + + module + Foo__B + : sig ... + end + + +
    +
    +
    +
    + + module + Foo__C + : sig ... + end + + +
    +
    +
    +
    + + module + Foo__D + : sig ... + end + + +
    +
    +
    +
    + + module + Foo__E + : sig ... + end + + +
    +
    +
    +
    + + module + Foo__ + : sig ... + end + + +
    +
    +
    +
    + + module + Foo + : sig ... + end + + +
    +
    +
    +
    + + module A' + = Foo.A + +
    +
    +
    +
    + + type tata + = Foo.A.t + + +
    +
    +
    +
    + + type tbtb + = Foo.B.t + + +
    +
    +
    +
    + + type tete +
    +
    +
    +
    + + type tata' + = A'.t + +
    +
    +
    +
    + + type tete2 + = Foo.E.t + + +
    +
    +
    +
    + + module + Std + : sig ... + end + + +
    +
    +
    +
    + + type stde + = Std.E.t + + +
    +

    include of Foo

    +

    Just for giggle, let's see what happens when we include + Foo. +

    +
    +
    + + + include + module type + of + Foo + + + +
    +
    + + module A + = Foo.A + +
    +
    +
    +
    + + module B + = Foo.B + +
    +
    +
    +
    + + module C + = Foo.C + +
    +
    +
    +
    + + module D + = Foo.D + +
    +
    +
    +
    + + module + E + : sig ... + end + + +
    +
    +
    +
    +
    +
    + + type testa + = A.t + +
    +
    +

    And also, let's refer to + A.t + and + Foo.B.id +

    +
    +
    + + module + P1 + : sig ... + end + + +
    +
    +
    +
    + + module + P2 + : sig ... + end + + +
    +
    +
    +
    + + module X1 + = P2.Z + +
    +
    +
    +
    + + module X2 + = P2.Z + +
    +
    +
    +
    + + type p1 + = X1.t + +
    +
    +
    +
    + + type p2 + = X2.t + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Buffer.html b/test/generators/html/Ocamlary-Buffer.html new file mode 100644 index 0000000000..677b883938 --- /dev/null +++ b/test/generators/html/Ocamlary-Buffer.html @@ -0,0 +1,33 @@ + + + Buffer (Ocamlary.Buffer) + + + + + + + + +
    +

    Module Ocamlary.Buffer

    +

    Buffer.t

    +
    +
    +
    +
    + + + val f : + Stdlib.Buffer.t + -> + unit + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-CanonicalTest-Base-List.html b/test/generators/html/Ocamlary-CanonicalTest-Base-List.html new file mode 100644 index 0000000000..2cc953b7a8 --- /dev/null +++ b/test/generators/html/Ocamlary-CanonicalTest-Base-List.html @@ -0,0 +1,43 @@ + + + List (Ocamlary.CanonicalTest.Base.List) + + + + + + + + +
    +

    Module Base.List

    +
    +
    +
    +
    + + type 'a t + +
    +
    +
    +
    + + + val id : + + 'a t + -> + + 'a t + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-CanonicalTest-Base.html b/test/generators/html/Ocamlary-CanonicalTest-Base.html new file mode 100644 index 0000000000..619b2537e5 --- /dev/null +++ b/test/generators/html/Ocamlary-CanonicalTest-Base.html @@ -0,0 +1,32 @@ + + + Base (Ocamlary.CanonicalTest.Base) + + + + + + + + +
    +

    Module CanonicalTest.Base

    +
    +
    +
    +
    + + module + List + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-CanonicalTest-Base__.html b/test/generators/html/Ocamlary-CanonicalTest-Base__.html new file mode 100644 index 0000000000..5e25462d5e --- /dev/null +++ b/test/generators/html/Ocamlary-CanonicalTest-Base__.html @@ -0,0 +1,29 @@ + + + Base__ (Ocamlary.CanonicalTest.Base__) + + + + + + + + +
    +

    Module CanonicalTest.Base__

    +
    +
    +
    +
    + + module List + = Base__List + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-CanonicalTest-Base__List.html b/test/generators/html/Ocamlary-CanonicalTest-Base__List.html new file mode 100644 index 0000000000..c1034148cb --- /dev/null +++ b/test/generators/html/Ocamlary-CanonicalTest-Base__List.html @@ -0,0 +1,46 @@ + + + Base__List (Ocamlary.CanonicalTest.Base__List) + + + + + + + + +
    +

    Module CanonicalTest.Base__List

    +
    +
    +
    +
    + + type 'a t + +
    +
    +
    +
    + + + val id : + + 'a + t + -> + + 'a + t + + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-CanonicalTest-Base__Tests-C.html b/test/generators/html/Ocamlary-CanonicalTest-Base__Tests-C.html new file mode 100644 index 0000000000..eada2684b9 --- /dev/null +++ b/test/generators/html/Ocamlary-CanonicalTest-Base__Tests-C.html @@ -0,0 +1,48 @@ + + + C (Ocamlary.CanonicalTest.Base__Tests.C) + + + + + + + + +
    +

    Module Base__Tests.C

    +
    +
    +
    +
    + + type 'a t + +
    +
    +
    +
    + + + val id : + + 'a + t + -> + + 'a + t + + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-CanonicalTest-Base__Tests.html b/test/generators/html/Ocamlary-CanonicalTest-Base__Tests.html new file mode 100644 index 0000000000..47a3db6215 --- /dev/null +++ b/test/generators/html/Ocamlary-CanonicalTest-Base__Tests.html @@ -0,0 +1,99 @@ + + + Base__Tests (Ocamlary.CanonicalTest.Base__Tests) + + + + + + + + +
    +

    Module CanonicalTest.Base__Tests

    +
    +
    +
    +
    + + module + C + : module + type of + Base__.List + + +
    +
    +
    +
    + + module L + = Base__.List + +
    +
    +
    +
    + + + val foo : + + int + L.t + -> + + float + L.t + + + +
    +
    +
    +
    + + + val bar : + + 'a + Base__.List.t + -> + + 'a + Base__.List.t + + + +
    +
    +

    This is just List.id, or rather L.id

    +
    +
    +
    +
    + + + val baz : + + 'a + Base__.List.t + -> + unit + + +
    +
    +

    Just seeing if Base__.List.t (Base__.List.t + ) gets rewriten to Base.List.t (Base.List.t + ) +

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-CanonicalTest-List_modif.html b/test/generators/html/Ocamlary-CanonicalTest-List_modif.html new file mode 100644 index 0000000000..0751d65d83 --- /dev/null +++ b/test/generators/html/Ocamlary-CanonicalTest-List_modif.html @@ -0,0 +1,49 @@ + + + List_modif (Ocamlary.CanonicalTest.List_modif) + + + + + + + + +
    +

    Module CanonicalTest.List_modif

    +
    +
    +
    +
    + + type 'c t + = + 'c + Base.List.t + + + + +
    +
    +
    +
    + + + val id : + + 'a t + -> + + 'a t + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-CanonicalTest.html b/test/generators/html/Ocamlary-CanonicalTest.html new file mode 100644 index 0000000000..92c898086a --- /dev/null +++ b/test/generators/html/Ocamlary-CanonicalTest.html @@ -0,0 +1,88 @@ + + + CanonicalTest (Ocamlary.CanonicalTest) + + + + + + + + +
    +

    Module Ocamlary.CanonicalTest

    +
    +
    +
    +
    + + module + Base__List + + : sig ... + end + + +
    +
    +
    +
    + + module + Base__ + : sig ... + end + + +
    +
    +
    +
    + + module + Base + : sig ... + end + + +
    +
    +
    +
    + + module + Base__Tests + + : sig ... + end + + +
    +
    +
    +
    + + module + List_modif + + : module + type of + Base.List + with + type + 'c t + = + 'c + Base.List.t + + + + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-CollectionModule-InnerModuleA-InnerModuleA'.html b/test/generators/html/Ocamlary-CollectionModule-InnerModuleA-InnerModuleA'.html new file mode 100644 index 0000000000..1f857bbcc0 --- /dev/null +++ b/test/generators/html/Ocamlary-CollectionModule-InnerModuleA-InnerModuleA'.html @@ -0,0 +1,39 @@ + + + + InnerModuleA' (Ocamlary.CollectionModule.InnerModuleA.InnerModuleA') + + + + + + + + +
    +

    Module InnerModuleA.InnerModuleA'

    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + type t + = + (unit, unit) + a_function + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html b/test/generators/html/Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html new file mode 100644 index 0000000000..b9c76e552c --- /dev/null +++ b/test/generators/html/Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html @@ -0,0 +1,42 @@ + + + + + InnerModuleTypeA' + (Ocamlary.CollectionModule.InnerModuleA.InnerModuleTypeA') + + + + + + + + +
    +

    Module type InnerModuleA.InnerModuleTypeA' +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    +
    + + type t + = + InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-CollectionModule-InnerModuleA.html b/test/generators/html/Ocamlary-CollectionModule-InnerModuleA.html new file mode 100644 index 0000000000..5b693cac67 --- /dev/null +++ b/test/generators/html/Ocamlary-CollectionModule-InnerModuleA.html @@ -0,0 +1,76 @@ + + + InnerModuleA (Ocamlary.CollectionModule.InnerModuleA) + + + + + + + + +
    +

    Module CollectionModule.InnerModuleA

    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + type t + = + collection + + + +
    +

    This comment is for t.

    +
    +
    +
    + + module + + + InnerModuleA' + + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + + module + type + + + InnerModuleTypeA' + + + = sig ... + end + + +
    +
    +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-CollectionModule-module-type-InnerModuleTypeA.html b/test/generators/html/Ocamlary-CollectionModule-module-type-InnerModuleTypeA.html new file mode 100644 index 0000000000..c717c94aea --- /dev/null +++ b/test/generators/html/Ocamlary-CollectionModule-module-type-InnerModuleTypeA.html @@ -0,0 +1,39 @@ + + + + InnerModuleTypeA (Ocamlary.CollectionModule.InnerModuleTypeA) + + + + + + + + +
    +

    Module type + CollectionModule.InnerModuleTypeA +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    +
    + + type t + = + InnerModuleA.InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-CollectionModule.html b/test/generators/html/Ocamlary-CollectionModule.html new file mode 100644 index 0000000000..8bee255a4a --- /dev/null +++ b/test/generators/html/Ocamlary-CollectionModule.html @@ -0,0 +1,76 @@ + + + CollectionModule (Ocamlary.CollectionModule) + + + + + + + + +
    +

    Module Ocamlary.CollectionModule

    +

    This comment is for CollectionModule.

    +
    +
    +
    +
    + + type collection +
    +

    This comment is for collection.

    +
    +
    +
    +
    + + type element +
    +
    +
    +
    + + module + + InnerModuleA + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + + module + type + + + + InnerModuleTypeA + + + = + InnerModuleA.InnerModuleTypeA' + + + +
    +
    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep1-X-Y-class-c.html b/test/generators/html/Ocamlary-Dep1-X-Y-class-c.html new file mode 100644 index 0000000000..3fa746f648 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep1-X-Y-class-c.html @@ -0,0 +1,28 @@ + + + c (Ocamlary.Dep1.X.Y.c) + + + + + + + + +

    Class Y.c

    +
    +
    +
    +
    + + method m : int +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep1-X-Y.html b/test/generators/html/Ocamlary-Dep1-X-Y.html new file mode 100644 index 0000000000..d1e97e124a --- /dev/null +++ b/test/generators/html/Ocamlary-Dep1-X-Y.html @@ -0,0 +1,32 @@ + + + Y (Ocamlary.Dep1.X.Y) + + + + + + + + +

    Module X.Y

    +
    +
    +
    +
    + + class + c + : object ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep1-X.html b/test/generators/html/Ocamlary-Dep1-X.html new file mode 100644 index 0000000000..17e67d2031 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep1-X.html @@ -0,0 +1,30 @@ + + + X (Ocamlary.Dep1.X) + + + + + + + + +
    +

    Module Dep1.X

    +
    +
    +
    +
    + + module + Y + : S + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep1-module-type-S-class-c.html b/test/generators/html/Ocamlary-Dep1-module-type-S-class-c.html new file mode 100644 index 0000000000..ee7ddd5efc --- /dev/null +++ b/test/generators/html/Ocamlary-Dep1-module-type-S-class-c.html @@ -0,0 +1,27 @@ + + + c (Ocamlary.Dep1.S.c) + + + + + + + + +

    Class S.c

    +
    +
    +
    +
    + + method m : int +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep1-module-type-S.html b/test/generators/html/Ocamlary-Dep1-module-type-S.html new file mode 100644 index 0000000000..5e4047f6e4 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep1-module-type-S.html @@ -0,0 +1,32 @@ + + + S (Ocamlary.Dep1.S) + + + + + + + + +
    +

    Module type Dep1.S

    +
    +
    +
    +
    + + class + c + : object ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep1.html b/test/generators/html/Ocamlary-Dep1.html new file mode 100644 index 0000000000..aec92c5aab --- /dev/null +++ b/test/generators/html/Ocamlary-Dep1.html @@ -0,0 +1,44 @@ + + + Dep1 (Ocamlary.Dep1) + + + + + + + + +
    +

    Module Ocamlary.Dep1

    +
    +
    +
    +
    + + + module + type + S + = sig ... + end + + +
    +
    +
    +
    + + module + X + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep11-module-type-S-class-c.html b/test/generators/html/Ocamlary-Dep11-module-type-S-class-c.html new file mode 100644 index 0000000000..b801e82d0d --- /dev/null +++ b/test/generators/html/Ocamlary-Dep11-module-type-S-class-c.html @@ -0,0 +1,27 @@ + + + c (Ocamlary.Dep11.S.c) + + + + + + + + +

    Class S.c

    +
    +
    +
    +
    + + method m : int +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep11-module-type-S.html b/test/generators/html/Ocamlary-Dep11-module-type-S.html new file mode 100644 index 0000000000..207c445c81 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep11-module-type-S.html @@ -0,0 +1,32 @@ + + + S (Ocamlary.Dep11.S) + + + + + + + + +
    +

    Module type Dep11.S

    +
    +
    +
    +
    + + class + c + : object ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep11.html b/test/generators/html/Ocamlary-Dep11.html new file mode 100644 index 0000000000..c3a3ae2132 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep11.html @@ -0,0 +1,33 @@ + + + Dep11 (Ocamlary.Dep11) + + + + + + + + +
    +

    Module Ocamlary.Dep11

    +
    +
    +
    +
    + + + module + type + S + = sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep12-argument-1-Arg.html b/test/generators/html/Ocamlary-Dep12-argument-1-Arg.html new file mode 100644 index 0000000000..a89d3566ae --- /dev/null +++ b/test/generators/html/Ocamlary-Dep12-argument-1-Arg.html @@ -0,0 +1,31 @@ + + + Arg (Ocamlary.Dep12.1-Arg) + + + + + + + + +
    +

    Parameter Dep12.1-Arg

    +
    +
    +
    +
    + + + module + type + S + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep12.html b/test/generators/html/Ocamlary-Dep12.html new file mode 100644 index 0000000000..1791e1c3ee --- /dev/null +++ b/test/generators/html/Ocamlary-Dep12.html @@ -0,0 +1,52 @@ + + + Dep12 (Ocamlary.Dep12) + + + + + + + + +
    +

    Module Ocamlary.Dep12

    +
    + +
    +

    Parameters +

    +
    +
    + + module + Arg + : sig ... + end + + +
    +
    +

    Signature

    +
    +
    + + + module + type + T + = + Arg.S + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep13-class-c.html b/test/generators/html/Ocamlary-Dep13-class-c.html new file mode 100644 index 0000000000..edf4524531 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep13-class-c.html @@ -0,0 +1,27 @@ + + + c (Ocamlary.Dep13.c) + + + + + + + + +
    +

    Class Dep13.c

    +
    +
    +
    +
    + + method m : int +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep13.html b/test/generators/html/Ocamlary-Dep13.html new file mode 100644 index 0000000000..bd42910855 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep13.html @@ -0,0 +1,31 @@ + + + Dep13 (Ocamlary.Dep13) + + + + + + + + +
    +

    Module Ocamlary.Dep13

    +
    +
    +
    +
    + + class + c + : object ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep2-A.html b/test/generators/html/Ocamlary-Dep2-A.html new file mode 100644 index 0000000000..6562b58e53 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep2-A.html @@ -0,0 +1,31 @@ + + + A (Ocamlary.Dep2.A) + + + + + + + + +
    +

    Module Dep2.A

    +
    +
    +
    +
    + + module Y + : + Arg.S + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep2-argument-1-Arg-X.html b/test/generators/html/Ocamlary-Dep2-argument-1-Arg-X.html new file mode 100644 index 0000000000..4d5e226430 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep2-argument-1-Arg-X.html @@ -0,0 +1,32 @@ + + + X (Ocamlary.Dep2.1-Arg.X) + + + + + + + + +
    +

    Module 1-Arg.X

    +
    +
    +
    +
    + + module Y + : + S + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep2-argument-1-Arg.html b/test/generators/html/Ocamlary-Dep2-argument-1-Arg.html new file mode 100644 index 0000000000..66a138f7ee --- /dev/null +++ b/test/generators/html/Ocamlary-Dep2-argument-1-Arg.html @@ -0,0 +1,42 @@ + + + Arg (Ocamlary.Dep2.1-Arg) + + + + + + + + +
    +

    Parameter Dep2.1-Arg

    +
    +
    +
    +
    + + + module + type + S + +
    +
    +
    +
    + + module + X + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep2.html b/test/generators/html/Ocamlary-Dep2.html new file mode 100644 index 0000000000..5a25a2bf7d --- /dev/null +++ b/test/generators/html/Ocamlary-Dep2.html @@ -0,0 +1,58 @@ + + + Dep2 (Ocamlary.Dep2) + + + + + + + + +
    +

    Module Ocamlary.Dep2

    +
    + +
    +

    Parameters +

    +
    +
    + + module + Arg + : sig ... + end + + +
    +
    +

    Signature

    +
    +
    + + module + A + : sig ... + end + + +
    +
    +
    +
    + + module B + = A.Y + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep3.html b/test/generators/html/Ocamlary-Dep3.html new file mode 100644 index 0000000000..debfb480eb --- /dev/null +++ b/test/generators/html/Ocamlary-Dep3.html @@ -0,0 +1,26 @@ + + + Dep3 (Ocamlary.Dep3) + + + + + + + + +
    +

    Module Ocamlary.Dep3

    +
    +
    +
    +
    + + type a +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep4-X.html b/test/generators/html/Ocamlary-Dep4-X.html new file mode 100644 index 0000000000..43224540b0 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep4-X.html @@ -0,0 +1,27 @@ + + + X (Ocamlary.Dep4.X) + + + + + + + + +
    +

    Module Dep4.X

    +
    +
    +
    +
    + + type b +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep4-module-type-S-X.html b/test/generators/html/Ocamlary-Dep4-module-type-S-X.html new file mode 100644 index 0000000000..70643fe674 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep4-module-type-S-X.html @@ -0,0 +1,27 @@ + + + X (Ocamlary.Dep4.S.X) + + + + + + + + +

    Module S.X

    +
    +
    +
    +
    + + type b +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep4-module-type-S-Y.html b/test/generators/html/Ocamlary-Dep4-module-type-S-Y.html new file mode 100644 index 0000000000..51752ee1c9 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep4-module-type-S-Y.html @@ -0,0 +1,19 @@ + + + Y (Ocamlary.Dep4.S.Y) + + + + + + + + +

    Module S.Y

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep4-module-type-S.html b/test/generators/html/Ocamlary-Dep4-module-type-S.html new file mode 100644 index 0000000000..0e6f6712de --- /dev/null +++ b/test/generators/html/Ocamlary-Dep4-module-type-S.html @@ -0,0 +1,41 @@ + + + S (Ocamlary.Dep4.S) + + + + + + + + +
    +

    Module type Dep4.S

    +
    +
    +
    +
    + + module + X + : T + +
    +
    +
    +
    + + module + Y + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep4-module-type-T.html b/test/generators/html/Ocamlary-Dep4-module-type-T.html new file mode 100644 index 0000000000..1e4d2ea3a0 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep4-module-type-T.html @@ -0,0 +1,27 @@ + + + T (Ocamlary.Dep4.T) + + + + + + + + +
    +

    Module type Dep4.T

    +
    +
    +
    +
    + + type b +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep4.html b/test/generators/html/Ocamlary-Dep4.html new file mode 100644 index 0000000000..57a3cb810d --- /dev/null +++ b/test/generators/html/Ocamlary-Dep4.html @@ -0,0 +1,55 @@ + + + Dep4 (Ocamlary.Dep4) + + + + + + + + +
    +

    Module Ocamlary.Dep4

    +
    +
    +
    +
    + + + module + type + T + = sig ... + end + + +
    +
    +
    +
    + + + module + type + S + = sig ... + end + + +
    +
    +
    +
    + + module + X + : T + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep5-Z.html b/test/generators/html/Ocamlary-Dep5-Z.html new file mode 100644 index 0000000000..b3c7396566 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep5-Z.html @@ -0,0 +1,39 @@ + + + Z (Ocamlary.Dep5.Z) + + + + + + + + +
    +

    Module Dep5.Z

    +
    +
    +
    +
    + + module X + : + Arg.T + + +
    +
    +
    +
    + + module Y + = Dep3 + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep5-argument-1-Arg-module-type-S-Y.html b/test/generators/html/Ocamlary-Dep5-argument-1-Arg-module-type-S-Y.html new file mode 100644 index 0000000000..e1556c18bc --- /dev/null +++ b/test/generators/html/Ocamlary-Dep5-argument-1-Arg-module-type-S-Y.html @@ -0,0 +1,22 @@ + + + Y (Ocamlary.Dep5.1-Arg.S.Y) + + + + + + + + +

    Module S.Y

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep5-argument-1-Arg-module-type-S.html b/test/generators/html/Ocamlary-Dep5-argument-1-Arg-module-type-S.html new file mode 100644 index 0000000000..a6a207b329 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep5-argument-1-Arg-module-type-S.html @@ -0,0 +1,44 @@ + + + S (Ocamlary.Dep5.1-Arg.S) + + + + + + + + +
    +

    Module type 1-Arg.S

    +
    +
    +
    +
    + + module X + : + T + + +
    +
    +
    +
    + + module + Y + + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep5-argument-1-Arg.html b/test/generators/html/Ocamlary-Dep5-argument-1-Arg.html new file mode 100644 index 0000000000..2abf89ffb6 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep5-argument-1-Arg.html @@ -0,0 +1,54 @@ + + + Arg (Ocamlary.Dep5.1-Arg) + + + + + + + + +
    +

    Parameter Dep5.1-Arg

    +
    +
    +
    +
    + + + module + type + T + +
    +
    +
    +
    + + + module + type + + S + + = sig ... + end + + +
    +
    +
    +
    + + module X + : T + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep5.html b/test/generators/html/Ocamlary-Dep5.html new file mode 100644 index 0000000000..fc3fb69db0 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep5.html @@ -0,0 +1,55 @@ + + + Dep5 (Ocamlary.Dep5) + + + + + + + + +
    +

    Module Ocamlary.Dep5

    +
    + +
    +

    Parameters +

    +
    +
    + + module + Arg + : sig ... + end + + +
    +
    +

    Signature

    +
    +
    + + module + Z + : + Arg.S + with + module + Y + = Dep3 + + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep6-X-Y.html b/test/generators/html/Ocamlary-Dep6-X-Y.html new file mode 100644 index 0000000000..8d5be8485d --- /dev/null +++ b/test/generators/html/Ocamlary-Dep6-X-Y.html @@ -0,0 +1,27 @@ + + + Y (Ocamlary.Dep6.X.Y) + + + + + + + + +

    Module X.Y

    +
    +
    +
    +
    + + type d +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep6-X-module-type-R.html b/test/generators/html/Ocamlary-Dep6-X-module-type-R.html new file mode 100644 index 0000000000..a9b764a2f0 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep6-X-module-type-R.html @@ -0,0 +1,28 @@ + + + R (Ocamlary.Dep6.X.R) + + + + + + + + +
    +

    Module type X.R

    +
    +
    +
    +
    + + type d +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep6-X.html b/test/generators/html/Ocamlary-Dep6-X.html new file mode 100644 index 0000000000..1a600b9fb2 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep6-X.html @@ -0,0 +1,41 @@ + + + X (Ocamlary.Dep6.X) + + + + + + + + +
    +

    Module Dep6.X

    +
    +
    +
    +
    + + + module + type + R + = S + +
    +
    +
    +
    + + module + Y + : R + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep6-module-type-S.html b/test/generators/html/Ocamlary-Dep6-module-type-S.html new file mode 100644 index 0000000000..50374f4612 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep6-module-type-S.html @@ -0,0 +1,27 @@ + + + S (Ocamlary.Dep6.S) + + + + + + + + +
    +

    Module type Dep6.S

    +
    +
    +
    +
    + + type d +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep6-module-type-T-Y.html b/test/generators/html/Ocamlary-Dep6-module-type-T-Y.html new file mode 100644 index 0000000000..84189084ea --- /dev/null +++ b/test/generators/html/Ocamlary-Dep6-module-type-T-Y.html @@ -0,0 +1,27 @@ + + + Y (Ocamlary.Dep6.T.Y) + + + + + + + + +

    Module T.Y

    +
    +
    +
    +
    + + type d +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep6-module-type-T-module-type-R.html b/test/generators/html/Ocamlary-Dep6-module-type-T-module-type-R.html new file mode 100644 index 0000000000..60f8ec85ee --- /dev/null +++ b/test/generators/html/Ocamlary-Dep6-module-type-T-module-type-R.html @@ -0,0 +1,28 @@ + + + R (Ocamlary.Dep6.T.R) + + + + + + + + +
    +

    Module type T.R

    +
    +
    +
    +
    + + type d +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep6-module-type-T.html b/test/generators/html/Ocamlary-Dep6-module-type-T.html new file mode 100644 index 0000000000..301268d2a0 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep6-module-type-T.html @@ -0,0 +1,43 @@ + + + T (Ocamlary.Dep6.T) + + + + + + + + +
    +

    Module type Dep6.T

    +
    +
    +
    +
    + + + module + type + + R + = S + +
    +
    +
    +
    + + module + Y + : R + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep6.html b/test/generators/html/Ocamlary-Dep6.html new file mode 100644 index 0000000000..e4ad138f16 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep6.html @@ -0,0 +1,55 @@ + + + Dep6 (Ocamlary.Dep6) + + + + + + + + +
    +

    Module Ocamlary.Dep6

    +
    +
    +
    +
    + + + module + type + S + = sig ... + end + + +
    +
    +
    +
    + + + module + type + T + = sig ... + end + + +
    +
    +
    +
    + + module + X + : T + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep7-M.html b/test/generators/html/Ocamlary-Dep7-M.html new file mode 100644 index 0000000000..774dac28b7 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep7-M.html @@ -0,0 +1,42 @@ + + + M (Ocamlary.Dep7.M) + + + + + + + + +
    +

    Module Dep7.M

    +
    +
    +
    +
    + + + module + type + R + = + Arg.S + + +
    +
    +
    +
    + + module Y + : R + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep7-argument-1-Arg-X.html b/test/generators/html/Ocamlary-Dep7-argument-1-Arg-X.html new file mode 100644 index 0000000000..9cf3bed512 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep7-argument-1-Arg-X.html @@ -0,0 +1,43 @@ + + + X (Ocamlary.Dep7.1-Arg.X) + + + + + + + + +
    +

    Module 1-Arg.X

    +
    +
    +
    +
    + + + module + type + R + = + S + + +
    +
    +
    +
    + + module Y + : R + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep7-argument-1-Arg-module-type-T.html b/test/generators/html/Ocamlary-Dep7-argument-1-Arg-module-type-T.html new file mode 100644 index 0000000000..49d6ba671b --- /dev/null +++ b/test/generators/html/Ocamlary-Dep7-argument-1-Arg-module-type-T.html @@ -0,0 +1,43 @@ + + + T (Ocamlary.Dep7.1-Arg.T) + + + + + + + + +
    +

    Module type 1-Arg.T

    +
    +
    +
    +
    + + + module + type + R + = + S + + +
    +
    +
    +
    + + module Y + : R + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep7-argument-1-Arg.html b/test/generators/html/Ocamlary-Dep7-argument-1-Arg.html new file mode 100644 index 0000000000..40c16373c4 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep7-argument-1-Arg.html @@ -0,0 +1,57 @@ + + + Arg (Ocamlary.Dep7.1-Arg) + + + + + + + + +
    +

    Parameter Dep7.1-Arg

    +
    +
    +
    +
    + + + module + type + S + +
    +
    +
    +
    + + + module + type + + T + + = sig ... + end + + +
    +
    +
    +
    + + module + X + : + T + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep7.html b/test/generators/html/Ocamlary-Dep7.html new file mode 100644 index 0000000000..b09252563b --- /dev/null +++ b/test/generators/html/Ocamlary-Dep7.html @@ -0,0 +1,50 @@ + + + Dep7 (Ocamlary.Dep7) + + + + + + + + +
    +

    Module Ocamlary.Dep7

    +
    + +
    +

    Parameters +

    +
    +
    + + module + Arg + : sig ... + end + + +
    +
    +

    Signature

    +
    +
    + + module + M + : + Arg.T + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep8-module-type-T.html b/test/generators/html/Ocamlary-Dep8-module-type-T.html new file mode 100644 index 0000000000..0d916dddf6 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep8-module-type-T.html @@ -0,0 +1,27 @@ + + + T (Ocamlary.Dep8.T) + + + + + + + + +
    +

    Module type Dep8.T

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep8.html b/test/generators/html/Ocamlary-Dep8.html new file mode 100644 index 0000000000..d399453d9d --- /dev/null +++ b/test/generators/html/Ocamlary-Dep8.html @@ -0,0 +1,33 @@ + + + Dep8 (Ocamlary.Dep8) + + + + + + + + +
    +

    Module Ocamlary.Dep8

    +
    +
    +
    +
    + + + module + type + T + = sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep9-argument-1-X.html b/test/generators/html/Ocamlary-Dep9-argument-1-X.html new file mode 100644 index 0000000000..114febdd82 --- /dev/null +++ b/test/generators/html/Ocamlary-Dep9-argument-1-X.html @@ -0,0 +1,31 @@ + + + X (Ocamlary.Dep9.1-X) + + + + + + + + +
    +

    Parameter Dep9.1-X

    +
    +
    +
    +
    + + + module + type + T + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Dep9.html b/test/generators/html/Ocamlary-Dep9.html new file mode 100644 index 0000000000..bdbeb8f5cf --- /dev/null +++ b/test/generators/html/Ocamlary-Dep9.html @@ -0,0 +1,52 @@ + + + Dep9 (Ocamlary.Dep9) + + + + + + + + +
    +

    Module Ocamlary.Dep9

    +
    + +
    +

    Parameters +

    +
    +
    + + module + X + : sig ... + end + + +
    +
    +

    Signature

    +
    +
    + + + module + type + T + = + X.T + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-DoubleInclude1-DoubleInclude2.html b/test/generators/html/Ocamlary-DoubleInclude1-DoubleInclude2.html new file mode 100644 index 0000000000..74c99c1a3d --- /dev/null +++ b/test/generators/html/Ocamlary-DoubleInclude1-DoubleInclude2.html @@ -0,0 +1,29 @@ + + + DoubleInclude2 (Ocamlary.DoubleInclude1.DoubleInclude2) + + + + + + + + +
    +

    Module DoubleInclude1.DoubleInclude2

    +
    +
    +
    +
    + + type double_include + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-DoubleInclude1.html b/test/generators/html/Ocamlary-DoubleInclude1.html new file mode 100644 index 0000000000..6d55cef4f4 --- /dev/null +++ b/test/generators/html/Ocamlary-DoubleInclude1.html @@ -0,0 +1,34 @@ + + + DoubleInclude1 (Ocamlary.DoubleInclude1) + + + + + + + + +
    +

    Module Ocamlary.DoubleInclude1

    +
    +
    +
    +
    + + module + + DoubleInclude2 + + + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-DoubleInclude3-DoubleInclude2.html b/test/generators/html/Ocamlary-DoubleInclude3-DoubleInclude2.html new file mode 100644 index 0000000000..35f9578b22 --- /dev/null +++ b/test/generators/html/Ocamlary-DoubleInclude3-DoubleInclude2.html @@ -0,0 +1,29 @@ + + + DoubleInclude2 (Ocamlary.DoubleInclude3.DoubleInclude2) + + + + + + + + +
    +

    Module DoubleInclude3.DoubleInclude2

    +
    +
    +
    +
    + + type double_include + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-DoubleInclude3.html b/test/generators/html/Ocamlary-DoubleInclude3.html new file mode 100644 index 0000000000..9a1ddf5f0c --- /dev/null +++ b/test/generators/html/Ocamlary-DoubleInclude3.html @@ -0,0 +1,47 @@ + + + DoubleInclude3 (Ocamlary.DoubleInclude3) + + + + + + + + +
    +

    Module Ocamlary.DoubleInclude3

    +
    +
    +
    +
    + + + include + module type + of + DoubleInclude1 + + + +
    +
    + + module + + DoubleInclude2 + + + : sig ... + end + + +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Empty.html b/test/generators/html/Ocamlary-Empty.html new file mode 100644 index 0000000000..babed3cb3a --- /dev/null +++ b/test/generators/html/Ocamlary-Empty.html @@ -0,0 +1,20 @@ + + + Empty (Ocamlary.Empty) + + + + + + + + +
    +

    Module Ocamlary.Empty

    +

    A plain, empty module

    +

    This module has a signature without any members.

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-ExtMod.html b/test/generators/html/Ocamlary-ExtMod.html new file mode 100644 index 0000000000..4c9b4c83e9 --- /dev/null +++ b/test/generators/html/Ocamlary-ExtMod.html @@ -0,0 +1,48 @@ + + + ExtMod (Ocamlary.ExtMod) + + + + + + + + +
    +

    Module Ocamlary.ExtMod

    +
    +
    +
    +
    + + type t = + .. + +
    +
    +
    +
    + + + type t += + + + + + + +
    + + | + Leisureforce + +
    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA'.html b/test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA'.html new file mode 100644 index 0000000000..f30c36fbaf --- /dev/null +++ b/test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA'.html @@ -0,0 +1,45 @@ + + + + + InnerModuleA' + (Ocamlary.FunctorTypeOf.1-Collection.InnerModuleA.InnerModuleA') + + + + + + + + +
    +

    Module InnerModuleA.InnerModuleA'

    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + type t + = + (unit, unit) + a_function + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA'.html b/test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA'.html new file mode 100644 index 0000000000..eb51583267 --- /dev/null +++ b/test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA'.html @@ -0,0 +1,46 @@ + + + + + InnerModuleTypeA' + (Ocamlary.FunctorTypeOf.1-Collection.InnerModuleA.InnerModuleTypeA') + + + + + + + + +
    +

    Module type InnerModuleA.InnerModuleTypeA' +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    +
    + + type t + = + InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA.html b/test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA.html new file mode 100644 index 0000000000..d6ef6c1117 --- /dev/null +++ b/test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA.html @@ -0,0 +1,82 @@ + + + + InnerModuleA (Ocamlary.FunctorTypeOf.1-Collection.InnerModuleA) + + + + + + + + +
    +

    Module 1-Collection.InnerModuleA

    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + type t + = + collection + + + +
    +

    This comment is for t.

    +
    +
    +
    + + module + + InnerModuleA' + + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + + module + type + + + InnerModuleTypeA' + + + = sig ... + end + + +
    +
    +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-module-type-InnerModuleTypeA.html b/test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-module-type-InnerModuleTypeA.html new file mode 100644 index 0000000000..c229ce19cb --- /dev/null +++ b/test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection-module-type-InnerModuleTypeA.html @@ -0,0 +1,41 @@ + + + + + InnerModuleTypeA (Ocamlary.FunctorTypeOf.1-Collection.InnerModuleTypeA) + + + + + + + + +
    +

    Module type 1-Collection.InnerModuleTypeA +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    +
    + + type t + = + InnerModuleA.InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection.html b/test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection.html new file mode 100644 index 0000000000..e0c41e6f76 --- /dev/null +++ b/test/generators/html/Ocamlary-FunctorTypeOf-argument-1-Collection.html @@ -0,0 +1,82 @@ + + + Collection (Ocamlary.FunctorTypeOf.1-Collection) + + + + + + + + +
    +

    Parameter FunctorTypeOf.1-Collection

    +
    +
    +

    This comment is for CollectionModule.

    +
    +
    + + type collection +
    +

    This comment is for collection.

    +
    +
    +
    +
    + + type element +
    +
    +
    +
    + + module + + + InnerModuleA + + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + + module + type + + + InnerModuleTypeA + + + = + InnerModuleA.InnerModuleTypeA' + + + +
    +
    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-FunctorTypeOf.html b/test/generators/html/Ocamlary-FunctorTypeOf.html new file mode 100644 index 0000000000..05e4f40b12 --- /dev/null +++ b/test/generators/html/Ocamlary-FunctorTypeOf.html @@ -0,0 +1,58 @@ + + + FunctorTypeOf (Ocamlary.FunctorTypeOf) + + + + + + + + +
    +

    Module Ocamlary.FunctorTypeOf

    +

    This comment is for FunctorTypeOf.

    +
    + +
    +

    Parameters +

    +
    +
    + + module + + Collection + + + : module + type of + CollectionModule + + +
    +
    +

    Signature

    +
    +
    + + type t + = + Collection.collection + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-IncludeInclude1-module-type-IncludeInclude2.html b/test/generators/html/Ocamlary-IncludeInclude1-module-type-IncludeInclude2.html new file mode 100644 index 0000000000..1c4e4e764f --- /dev/null +++ b/test/generators/html/Ocamlary-IncludeInclude1-module-type-IncludeInclude2.html @@ -0,0 +1,31 @@ + + + + IncludeInclude2 (Ocamlary.IncludeInclude1.IncludeInclude2) + + + + + + + + +
    +

    Module type IncludeInclude1.IncludeInclude2 +

    +
    +
    +
    +
    + + type include_include + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-IncludeInclude1.html b/test/generators/html/Ocamlary-IncludeInclude1.html new file mode 100644 index 0000000000..db54f6aefc --- /dev/null +++ b/test/generators/html/Ocamlary-IncludeInclude1.html @@ -0,0 +1,39 @@ + + + IncludeInclude1 (Ocamlary.IncludeInclude1) + + + + + + + + +
    +

    Module Ocamlary.IncludeInclude1

    +
    +
    +
    +
    + + + module + type + + + + IncludeInclude2 + + + = sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-IncludedA.html b/test/generators/html/Ocamlary-IncludedA.html new file mode 100644 index 0000000000..2ddc2650d3 --- /dev/null +++ b/test/generators/html/Ocamlary-IncludedA.html @@ -0,0 +1,26 @@ + + + IncludedA (Ocamlary.IncludedA) + + + + + + + + +
    +

    Module Ocamlary.IncludedA

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-M.html b/test/generators/html/Ocamlary-M.html new file mode 100644 index 0000000000..3b8b26c8cc --- /dev/null +++ b/test/generators/html/Ocamlary-M.html @@ -0,0 +1,25 @@ + + + M (Ocamlary.M) + + + + + + + +
    +

    Module Ocamlary.M

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-ModuleWithSignature.html b/test/generators/html/Ocamlary-ModuleWithSignature.html new file mode 100644 index 0000000000..74b6a4bf29 --- /dev/null +++ b/test/generators/html/Ocamlary-ModuleWithSignature.html @@ -0,0 +1,22 @@ + + + ModuleWithSignature (Ocamlary.ModuleWithSignature) + + + + + + + + +
    +

    Module Ocamlary.ModuleWithSignature

    +

    A plain module of a signature of + EmptySig + (reference) +

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-ModuleWithSignatureAlias.html b/test/generators/html/Ocamlary-ModuleWithSignatureAlias.html new file mode 100644 index 0000000000..a3cf0533ce --- /dev/null +++ b/test/generators/html/Ocamlary-ModuleWithSignatureAlias.html @@ -0,0 +1,25 @@ + + + + ModuleWithSignatureAlias (Ocamlary.ModuleWithSignatureAlias) + + + + + + + + +
    +

    Module Ocamlary.ModuleWithSignatureAlias +

    A plain module with an alias signature

    +
      +
    • deprecated +

      I don't like this element any more.

      +
    • +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-One.html b/test/generators/html/Ocamlary-One.html new file mode 100644 index 0000000000..1e38d90b96 --- /dev/null +++ b/test/generators/html/Ocamlary-One.html @@ -0,0 +1,26 @@ + + + One (Ocamlary.One) + + + + + + + + +
    +

    Module Ocamlary.One

    +
    +
    +
    +
    + + type one +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Only_a_module.html b/test/generators/html/Ocamlary-Only_a_module.html new file mode 100644 index 0000000000..672c6c2524 --- /dev/null +++ b/test/generators/html/Ocamlary-Only_a_module.html @@ -0,0 +1,26 @@ + + + Only_a_module (Ocamlary.Only_a_module) + + + + + + + + +
    +

    Module Ocamlary.Only_a_module

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Recollection-InnerModuleA-InnerModuleA'.html b/test/generators/html/Ocamlary-Recollection-InnerModuleA-InnerModuleA'.html new file mode 100644 index 0000000000..34e74424c2 --- /dev/null +++ b/test/generators/html/Ocamlary-Recollection-InnerModuleA-InnerModuleA'.html @@ -0,0 +1,39 @@ + + + + InnerModuleA' (Ocamlary.Recollection.InnerModuleA.InnerModuleA') + + + + + + + + +
    +

    Module InnerModuleA.InnerModuleA'

    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + type t + = + (unit, unit) + a_function + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Recollection-InnerModuleA-module-type-InnerModuleTypeA'.html b/test/generators/html/Ocamlary-Recollection-InnerModuleA-module-type-InnerModuleTypeA'.html new file mode 100644 index 0000000000..f11a448f52 --- /dev/null +++ b/test/generators/html/Ocamlary-Recollection-InnerModuleA-module-type-InnerModuleTypeA'.html @@ -0,0 +1,40 @@ + + + + + InnerModuleTypeA' (Ocamlary.Recollection.InnerModuleA.InnerModuleTypeA') + + + + + + + + +
    +

    Module type InnerModuleA.InnerModuleTypeA' +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    +
    + + type t + = + + InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Recollection-InnerModuleA.html b/test/generators/html/Ocamlary-Recollection-InnerModuleA.html new file mode 100644 index 0000000000..d29934368f --- /dev/null +++ b/test/generators/html/Ocamlary-Recollection-InnerModuleA.html @@ -0,0 +1,75 @@ + + + InnerModuleA (Ocamlary.Recollection.InnerModuleA) + + + + + + + + +
    +

    Module Recollection.InnerModuleA

    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + type t + = + collection + + +
    +

    This comment is for t.

    +
    +
    +
    + + module + + + InnerModuleA' + + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + + module + type + + + InnerModuleTypeA' + + + = sig ... + end + + +
    +
    +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA'.html b/test/generators/html/Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA'.html new file mode 100644 index 0000000000..c86da615ed --- /dev/null +++ b/test/generators/html/Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA'.html @@ -0,0 +1,42 @@ + + + + InnerModuleA' (Ocamlary.Recollection.1-C.InnerModuleA.InnerModuleA') + + + + + + + + +
    +

    Module InnerModuleA.InnerModuleA'

    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + type t + = + (unit, unit) + a_function + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA'.html b/test/generators/html/Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA'.html new file mode 100644 index 0000000000..8dde648054 --- /dev/null +++ b/test/generators/html/Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA'.html @@ -0,0 +1,45 @@ + + + + + InnerModuleTypeA' + (Ocamlary.Recollection.1-C.InnerModuleA.InnerModuleTypeA') + + + + + + + + +
    +

    Module type InnerModuleA.InnerModuleTypeA' +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    +
    + + type t + = + InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Recollection-argument-1-C-InnerModuleA.html b/test/generators/html/Ocamlary-Recollection-argument-1-C-InnerModuleA.html new file mode 100644 index 0000000000..394be23187 --- /dev/null +++ b/test/generators/html/Ocamlary-Recollection-argument-1-C-InnerModuleA.html @@ -0,0 +1,80 @@ + + + InnerModuleA (Ocamlary.Recollection.1-C.InnerModuleA) + + + + + + + + +
    +

    Module 1-C.InnerModuleA

    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + type t + = + + collection + + + +
    +

    This comment is for t.

    +
    +
    +
    + + module + + InnerModuleA' + + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + + module + type + + + InnerModuleTypeA' + + + = sig ... + end + + +
    +
    +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Recollection-argument-1-C-module-type-InnerModuleTypeA.html b/test/generators/html/Ocamlary-Recollection-argument-1-C-module-type-InnerModuleTypeA.html new file mode 100644 index 0000000000..d235f234ec --- /dev/null +++ b/test/generators/html/Ocamlary-Recollection-argument-1-C-module-type-InnerModuleTypeA.html @@ -0,0 +1,40 @@ + + + + InnerModuleTypeA (Ocamlary.Recollection.1-C.InnerModuleTypeA) + + + + + + + + +
    +

    Module type 1-C.InnerModuleTypeA

    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    +
    + + type t + = + InnerModuleA.InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Recollection-argument-1-C.html b/test/generators/html/Ocamlary-Recollection-argument-1-C.html new file mode 100644 index 0000000000..516f2212fe --- /dev/null +++ b/test/generators/html/Ocamlary-Recollection-argument-1-C.html @@ -0,0 +1,80 @@ + + + C (Ocamlary.Recollection.1-C) + + + + + + + + +
    +

    Parameter Recollection.1-C

    +
    +
    +

    This comment is for CollectionModule.

    +
    +
    + + type collection +
    +

    This comment is for collection.

    +
    +
    +
    +
    + + type element +
    +
    +
    +
    + + module + + + InnerModuleA + + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + + module + type + + + InnerModuleTypeA + + + = + InnerModuleA.InnerModuleTypeA' + + + +
    +
    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Recollection-module-type-InnerModuleTypeA.html b/test/generators/html/Ocamlary-Recollection-module-type-InnerModuleTypeA.html new file mode 100644 index 0000000000..d632bfce47 --- /dev/null +++ b/test/generators/html/Ocamlary-Recollection-module-type-InnerModuleTypeA.html @@ -0,0 +1,37 @@ + + + + InnerModuleTypeA (Ocamlary.Recollection.InnerModuleTypeA) + + + + + + + + +
    +

    Module type Recollection.InnerModuleTypeA +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    +
    + + type t + = + + InnerModuleA.InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-Recollection.html b/test/generators/html/Ocamlary-Recollection.html new file mode 100644 index 0000000000..36145f4dbb --- /dev/null +++ b/test/generators/html/Ocamlary-Recollection.html @@ -0,0 +1,108 @@ + + + Recollection (Ocamlary.Recollection) + + + + + + + + +
    +

    Module Ocamlary.Recollection

    +
    + +
    +

    Parameters +

    +
    +
    + + module + C + : COLLECTION + + +
    +
    +

    Signature

    +

    This comment is for CollectionModule.

    +
    +
    + + type collection + = + + + C.element + list + + + +
    +

    This comment is for collection.

    +
    +
    +
    +
    + + type element + = + + C.collection + + + +
    +
    +
    +
    + + module + + InnerModuleA + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + + module + type + + + + InnerModuleTypeA + + + = + InnerModuleA.InnerModuleTypeA' + + + +
    +
    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With10-module-type-T-M.html b/test/generators/html/Ocamlary-With10-module-type-T-M.html new file mode 100644 index 0000000000..79f3c6c732 --- /dev/null +++ b/test/generators/html/Ocamlary-With10-module-type-T-M.html @@ -0,0 +1,31 @@ + + + M (Ocamlary.With10.T.M) + + + + + + + + +

    Module T.M

    +
    +
    +
    +
    + + + module + type + S + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With10-module-type-T.html b/test/generators/html/Ocamlary-With10-module-type-T.html new file mode 100644 index 0000000000..1461f0012a --- /dev/null +++ b/test/generators/html/Ocamlary-With10-module-type-T.html @@ -0,0 +1,43 @@ + + + T (Ocamlary.With10.T) + + + + + + + + +
    +

    Module type With10.T

    +

    With10.T is a submodule type.

    +
    +
    +
    +
    + + module + M + : sig ... + end + + +
    +
    +
    +
    + + module N + : + M.S + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With10.html b/test/generators/html/Ocamlary-With10.html new file mode 100644 index 0000000000..a7b06d6921 --- /dev/null +++ b/test/generators/html/Ocamlary-With10.html @@ -0,0 +1,39 @@ + + + With10 (Ocamlary.With10) + + + + + + + + +
    +

    Module Ocamlary.With10

    +
    +
    +
    +
    + + + module + type + T + = sig ... + end + + +
    +
    +

    + With10.T + is a submodule type. +

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With2-module-type-S.html b/test/generators/html/Ocamlary-With2-module-type-S.html new file mode 100644 index 0000000000..e7466bbfe2 --- /dev/null +++ b/test/generators/html/Ocamlary-With2-module-type-S.html @@ -0,0 +1,27 @@ + + + S (Ocamlary.With2.S) + + + + + + + + +
    +

    Module type With2.S

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With2.html b/test/generators/html/Ocamlary-With2.html new file mode 100644 index 0000000000..f2f0ca1842 --- /dev/null +++ b/test/generators/html/Ocamlary-With2.html @@ -0,0 +1,33 @@ + + + With2 (Ocamlary.With2) + + + + + + + + +
    +

    Module Ocamlary.With2

    +
    +
    +
    +
    + + + module + type + S + = sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With3-N.html b/test/generators/html/Ocamlary-With3-N.html new file mode 100644 index 0000000000..731d696df0 --- /dev/null +++ b/test/generators/html/Ocamlary-With3-N.html @@ -0,0 +1,27 @@ + + + N (Ocamlary.With3.N) + + + + + + + + +
    +

    Module With3.N

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With3.html b/test/generators/html/Ocamlary-With3.html new file mode 100644 index 0000000000..82c9a90ff7 --- /dev/null +++ b/test/generators/html/Ocamlary-With3.html @@ -0,0 +1,37 @@ + + + With3 (Ocamlary.With3) + + + + + + + + +
    +

    Module Ocamlary.With3

    +
    +
    +
    +
    + + module M + = With2 + +
    +
    +
    +
    + + module + N + : M.S + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With4-N.html b/test/generators/html/Ocamlary-With4-N.html new file mode 100644 index 0000000000..1eb8af4776 --- /dev/null +++ b/test/generators/html/Ocamlary-With4-N.html @@ -0,0 +1,27 @@ + + + N (Ocamlary.With4.N) + + + + + + + + +
    +

    Module With4.N

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With4.html b/test/generators/html/Ocamlary-With4.html new file mode 100644 index 0000000000..3a174b59dd --- /dev/null +++ b/test/generators/html/Ocamlary-With4.html @@ -0,0 +1,29 @@ + + + With4 (Ocamlary.With4) + + + + + + + + +
    +

    Module Ocamlary.With4

    +
    +
    +
    +
    + + module + N + : With2.S + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With5-N.html b/test/generators/html/Ocamlary-With5-N.html new file mode 100644 index 0000000000..3adf464161 --- /dev/null +++ b/test/generators/html/Ocamlary-With5-N.html @@ -0,0 +1,27 @@ + + + N (Ocamlary.With5.N) + + + + + + + + +
    +

    Module With5.N

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With5-module-type-S.html b/test/generators/html/Ocamlary-With5-module-type-S.html new file mode 100644 index 0000000000..dfc3ace923 --- /dev/null +++ b/test/generators/html/Ocamlary-With5-module-type-S.html @@ -0,0 +1,27 @@ + + + S (Ocamlary.With5.S) + + + + + + + + +
    +

    Module type With5.S

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With5.html b/test/generators/html/Ocamlary-With5.html new file mode 100644 index 0000000000..74f7ab702d --- /dev/null +++ b/test/generators/html/Ocamlary-With5.html @@ -0,0 +1,42 @@ + + + With5 (Ocamlary.With5) + + + + + + + + +
    +

    Module Ocamlary.With5

    +
    +
    +
    +
    + + + module + type + S + = sig ... + end + + +
    +
    +
    +
    + + module + N + : S + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With6-module-type-T-M.html b/test/generators/html/Ocamlary-With6-module-type-T-M.html new file mode 100644 index 0000000000..b644573a06 --- /dev/null +++ b/test/generators/html/Ocamlary-With6-module-type-T-M.html @@ -0,0 +1,39 @@ + + + M (Ocamlary.With6.T.M) + + + + + + + + +

    Module T.M

    +
    +
    +
    +
    + + + module + type + S + +
    +
    +
    +
    + + module N + : S + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With6-module-type-T.html b/test/generators/html/Ocamlary-With6-module-type-T.html new file mode 100644 index 0000000000..093ab7625b --- /dev/null +++ b/test/generators/html/Ocamlary-With6-module-type-T.html @@ -0,0 +1,32 @@ + + + T (Ocamlary.With6.T) + + + + + + + + +
    +

    Module type With6.T

    +
    +
    +
    +
    + + module + M + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With6.html b/test/generators/html/Ocamlary-With6.html new file mode 100644 index 0000000000..ccafe0a4b9 --- /dev/null +++ b/test/generators/html/Ocamlary-With6.html @@ -0,0 +1,33 @@ + + + With6 (Ocamlary.With6) + + + + + + + + +
    +

    Module Ocamlary.With6

    +
    +
    +
    +
    + + + module + type + T + = sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With7-argument-1-X.html b/test/generators/html/Ocamlary-With7-argument-1-X.html new file mode 100644 index 0000000000..3cdc65fe6e --- /dev/null +++ b/test/generators/html/Ocamlary-With7-argument-1-X.html @@ -0,0 +1,31 @@ + + + X (Ocamlary.With7.1-X) + + + + + + + + +
    +

    Parameter With7.1-X

    +
    +
    +
    +
    + + + module + type + T + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With7.html b/test/generators/html/Ocamlary-With7.html new file mode 100644 index 0000000000..4e408b2cc0 --- /dev/null +++ b/test/generators/html/Ocamlary-With7.html @@ -0,0 +1,52 @@ + + + With7 (Ocamlary.With7) + + + + + + + + +
    +

    Module Ocamlary.With7

    +
    + +
    +

    Parameters +

    +
    +
    + + module + X + : sig ... + end + + +
    +
    +

    Signature

    +
    +
    + + + module + type + T + = + X.T + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With9-module-type-S.html b/test/generators/html/Ocamlary-With9-module-type-S.html new file mode 100644 index 0000000000..30130f58ae --- /dev/null +++ b/test/generators/html/Ocamlary-With9-module-type-S.html @@ -0,0 +1,27 @@ + + + S (Ocamlary.With9.S) + + + + + + + + +
    +

    Module type With9.S

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-With9.html b/test/generators/html/Ocamlary-With9.html new file mode 100644 index 0000000000..6deb4c8863 --- /dev/null +++ b/test/generators/html/Ocamlary-With9.html @@ -0,0 +1,33 @@ + + + With9 (Ocamlary.With9) + + + + + + + + +
    +

    Module Ocamlary.With9

    +
    +
    +
    +
    + + + module + type + S + = sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-class-empty_class.html b/test/generators/html/Ocamlary-class-empty_class.html new file mode 100644 index 0000000000..f2eaf5e724 --- /dev/null +++ b/test/generators/html/Ocamlary-class-empty_class.html @@ -0,0 +1,18 @@ + + + empty_class (Ocamlary.empty_class) + + + + + + + + +
    +

    Class Ocamlary.empty_class

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-class-one_method_class.html b/test/generators/html/Ocamlary-class-one_method_class.html new file mode 100644 index 0000000000..4214c8f8b4 --- /dev/null +++ b/test/generators/html/Ocamlary-class-one_method_class.html @@ -0,0 +1,26 @@ + + + one_method_class (Ocamlary.one_method_class) + + + + + + + + +
    +

    Class Ocamlary.one_method_class

    +
    +
    +
    +
    + + method go : unit +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-class-param_class.html b/test/generators/html/Ocamlary-class-param_class.html new file mode 100644 index 0000000000..91b86c8965 --- /dev/null +++ b/test/generators/html/Ocamlary-class-param_class.html @@ -0,0 +1,30 @@ + + + param_class (Ocamlary.param_class) + + + + + + + + +
    +

    Class Ocamlary.param_class

    +
    +
    +
    +
    + + + method v : + 'a + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-class-two_method_class.html b/test/generators/html/Ocamlary-class-two_method_class.html new file mode 100644 index 0000000000..18ab67f12c --- /dev/null +++ b/test/generators/html/Ocamlary-class-two_method_class.html @@ -0,0 +1,37 @@ + + + two_method_class (Ocamlary.two_method_class) + + + + + + + + +
    +

    Class Ocamlary.two_method_class

    +
    +
    +
    +
    + + + method one : + one_method_class + + +
    +
    +
    +
    + + method undo : unit + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-A-Q-InnerModuleA-InnerModuleA'.html b/test/generators/html/Ocamlary-module-type-A-Q-InnerModuleA-InnerModuleA'.html new file mode 100644 index 0000000000..03563b2b73 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-A-Q-InnerModuleA-InnerModuleA'.html @@ -0,0 +1,39 @@ + + + InnerModuleA' (Ocamlary.A.Q.InnerModuleA.InnerModuleA') + + + + + + + + +
    +

    Module InnerModuleA.InnerModuleA'

    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + type t + = + (unit, unit) + a_function + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-A-Q-InnerModuleA-module-type-InnerModuleTypeA'.html b/test/generators/html/Ocamlary-module-type-A-Q-InnerModuleA-module-type-InnerModuleTypeA'.html new file mode 100644 index 0000000000..a88eb59ee4 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-A-Q-InnerModuleA-module-type-InnerModuleTypeA'.html @@ -0,0 +1,41 @@ + + + + InnerModuleTypeA' (Ocamlary.A.Q.InnerModuleA.InnerModuleTypeA') + + + + + + + + +
    +

    Module type InnerModuleA.InnerModuleTypeA' +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    +
    + + type t + = + + InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-A-Q-InnerModuleA.html b/test/generators/html/Ocamlary-module-type-A-Q-InnerModuleA.html new file mode 100644 index 0000000000..ad88ec9a48 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-A-Q-InnerModuleA.html @@ -0,0 +1,75 @@ + + + InnerModuleA (Ocamlary.A.Q.InnerModuleA) + + + + + + + + +
    +

    Module Q.InnerModuleA

    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + type t + = + collection + + +
    +

    This comment is for t.

    +
    +
    +
    + + module + + + InnerModuleA' + + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + + module + type + + + InnerModuleTypeA' + + + = sig ... + end + + +
    +
    +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-A-Q-module-type-InnerModuleTypeA.html b/test/generators/html/Ocamlary-module-type-A-Q-module-type-InnerModuleTypeA.html new file mode 100644 index 0000000000..1b389f0e81 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-A-Q-module-type-InnerModuleTypeA.html @@ -0,0 +1,37 @@ + + + InnerModuleTypeA (Ocamlary.A.Q.InnerModuleTypeA) + + + + + + + + +
    +

    Module type Q.InnerModuleTypeA

    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    +
    + + type t + = + + InnerModuleA.InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-A-Q.html b/test/generators/html/Ocamlary-module-type-A-Q.html new file mode 100644 index 0000000000..f97e6446e5 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-A-Q.html @@ -0,0 +1,76 @@ + + + Q (Ocamlary.A.Q) + + + + + + + + +

    Module A.Q

    +
    +
    +

    This comment is for CollectionModule.

    +
    +
    + + type collection +
    +

    This comment is for collection.

    +
    +
    +
    +
    + + type element +
    +
    +
    +
    + + module + + InnerModuleA + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + + module + type + + + + InnerModuleTypeA + + + = + InnerModuleA.InnerModuleTypeA' + + + +
    +
    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-A.html b/test/generators/html/Ocamlary-module-type-A.html new file mode 100644 index 0000000000..a76d939d24 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-A.html @@ -0,0 +1,35 @@ + + + A (Ocamlary.A) + + + + + + + +
    +

    Module type Ocamlary.A

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + module + Q + : COLLECTION + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-B-Q-InnerModuleA-InnerModuleA'.html b/test/generators/html/Ocamlary-module-type-B-Q-InnerModuleA-InnerModuleA'.html new file mode 100644 index 0000000000..df9c3a0e8a --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-B-Q-InnerModuleA-InnerModuleA'.html @@ -0,0 +1,39 @@ + + + InnerModuleA' (Ocamlary.B.Q.InnerModuleA.InnerModuleA') + + + + + + + + +
    +

    Module InnerModuleA.InnerModuleA'

    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + type t + = + (unit, unit) + a_function + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-B-Q-InnerModuleA-module-type-InnerModuleTypeA'.html b/test/generators/html/Ocamlary-module-type-B-Q-InnerModuleA-module-type-InnerModuleTypeA'.html new file mode 100644 index 0000000000..16480eb4d9 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-B-Q-InnerModuleA-module-type-InnerModuleTypeA'.html @@ -0,0 +1,41 @@ + + + + InnerModuleTypeA' (Ocamlary.B.Q.InnerModuleA.InnerModuleTypeA') + + + + + + + + +
    +

    Module type InnerModuleA.InnerModuleTypeA' +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    +
    + + type t + = + + InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-B-Q-InnerModuleA.html b/test/generators/html/Ocamlary-module-type-B-Q-InnerModuleA.html new file mode 100644 index 0000000000..c1dc5670ea --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-B-Q-InnerModuleA.html @@ -0,0 +1,75 @@ + + + InnerModuleA (Ocamlary.B.Q.InnerModuleA) + + + + + + + + +
    +

    Module Q.InnerModuleA

    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + type t + = + collection + + +
    +

    This comment is for t.

    +
    +
    +
    + + module + + + InnerModuleA' + + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + + module + type + + + InnerModuleTypeA' + + + = sig ... + end + + +
    +
    +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-B-Q-module-type-InnerModuleTypeA.html b/test/generators/html/Ocamlary-module-type-B-Q-module-type-InnerModuleTypeA.html new file mode 100644 index 0000000000..530758701c --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-B-Q-module-type-InnerModuleTypeA.html @@ -0,0 +1,37 @@ + + + InnerModuleTypeA (Ocamlary.B.Q.InnerModuleTypeA) + + + + + + + + +
    +

    Module type Q.InnerModuleTypeA

    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    +
    + + type t + = + + InnerModuleA.InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-B-Q.html b/test/generators/html/Ocamlary-module-type-B-Q.html new file mode 100644 index 0000000000..b5319b9746 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-B-Q.html @@ -0,0 +1,76 @@ + + + Q (Ocamlary.B.Q) + + + + + + + + +

    Module B.Q

    +
    +
    +

    This comment is for CollectionModule.

    +
    +
    + + type collection +
    +

    This comment is for collection.

    +
    +
    +
    +
    + + type element +
    +
    +
    +
    + + module + + InnerModuleA + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + + module + type + + + + InnerModuleTypeA + + + = + InnerModuleA.InnerModuleTypeA' + + + +
    +
    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-B.html b/test/generators/html/Ocamlary-module-type-B.html new file mode 100644 index 0000000000..b832cc11e9 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-B.html @@ -0,0 +1,35 @@ + + + B (Ocamlary.B) + + + + + + + +
    +

    Module type Ocamlary.B

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + module + Q + : COLLECTION + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-C-Q-InnerModuleA-InnerModuleA'.html b/test/generators/html/Ocamlary-module-type-C-Q-InnerModuleA-InnerModuleA'.html new file mode 100644 index 0000000000..71cce80691 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-C-Q-InnerModuleA-InnerModuleA'.html @@ -0,0 +1,39 @@ + + + InnerModuleA' (Ocamlary.C.Q.InnerModuleA.InnerModuleA') + + + + + + + + +
    +

    Module InnerModuleA.InnerModuleA'

    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + type t + = + (unit, unit) + a_function + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-C-Q-InnerModuleA-module-type-InnerModuleTypeA'.html b/test/generators/html/Ocamlary-module-type-C-Q-InnerModuleA-module-type-InnerModuleTypeA'.html new file mode 100644 index 0000000000..a2decc7d2a --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-C-Q-InnerModuleA-module-type-InnerModuleTypeA'.html @@ -0,0 +1,41 @@ + + + + InnerModuleTypeA' (Ocamlary.C.Q.InnerModuleA.InnerModuleTypeA') + + + + + + + + +
    +

    Module type InnerModuleA.InnerModuleTypeA' +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    +
    + + type t + = + + InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-C-Q-InnerModuleA.html b/test/generators/html/Ocamlary-module-type-C-Q-InnerModuleA.html new file mode 100644 index 0000000000..f900f05e92 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-C-Q-InnerModuleA.html @@ -0,0 +1,75 @@ + + + InnerModuleA (Ocamlary.C.Q.InnerModuleA) + + + + + + + + +
    +

    Module Q.InnerModuleA

    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + type t + = + collection + + +
    +

    This comment is for t.

    +
    +
    +
    + + module + + + InnerModuleA' + + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + + module + type + + + InnerModuleTypeA' + + + = sig ... + end + + +
    +
    +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-C-Q-module-type-InnerModuleTypeA.html b/test/generators/html/Ocamlary-module-type-C-Q-module-type-InnerModuleTypeA.html new file mode 100644 index 0000000000..c75c373ea4 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-C-Q-module-type-InnerModuleTypeA.html @@ -0,0 +1,37 @@ + + + InnerModuleTypeA (Ocamlary.C.Q.InnerModuleTypeA) + + + + + + + + +
    +

    Module type Q.InnerModuleTypeA

    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    +
    + + type t + = + + InnerModuleA.InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-C-Q.html b/test/generators/html/Ocamlary-module-type-C-Q.html new file mode 100644 index 0000000000..f674d4822b --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-C-Q.html @@ -0,0 +1,76 @@ + + + Q (Ocamlary.C.Q) + + + + + + + + +

    Module C.Q

    +
    +
    +

    This comment is for CollectionModule.

    +
    +
    + + type collection +
    +

    This comment is for collection.

    +
    +
    +
    +
    + + type element +
    +
    +
    +
    + + module + + InnerModuleA + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + + module + type + + + + InnerModuleTypeA + + + = + InnerModuleA.InnerModuleTypeA' + + + +
    +
    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-C.html b/test/generators/html/Ocamlary-module-type-C.html new file mode 100644 index 0000000000..9aa9e84f5b --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-C.html @@ -0,0 +1,75 @@ + + + C (Ocamlary.C) + + + + + + + +
    +

    Module type Ocamlary.C

    +

    This module type includes two signatures.

    +
      +
    • it includes A +
    • +
    • it includes B + with some substitution +
    • +
    +
    +
    +
    +
    + + + include + A + + + +
    +
    + + type t +
    +
    +
    +
    + + module + Q + : + COLLECTION + + +
    +
    +
    +
    +
    +
    + + + include + B + with + type + t := + t + and + module + Q := + Q + + + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA'.html b/test/generators/html/Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA'.html new file mode 100644 index 0000000000..8efe44ee53 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA'.html @@ -0,0 +1,40 @@ + + + + InnerModuleA' (Ocamlary.COLLECTION.InnerModuleA.InnerModuleA') + + + + + + + + +
    +

    Module InnerModuleA.InnerModuleA'

    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + type t + = + (unit, unit) + a_function + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-COLLECTION-InnerModuleA-module-type-InnerModuleTypeA'.html b/test/generators/html/Ocamlary-module-type-COLLECTION-InnerModuleA-module-type-InnerModuleTypeA'.html new file mode 100644 index 0000000000..2860843ffb --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-COLLECTION-InnerModuleA-module-type-InnerModuleTypeA'.html @@ -0,0 +1,42 @@ + + + + + InnerModuleTypeA' (Ocamlary.COLLECTION.InnerModuleA.InnerModuleTypeA') + + + + + + + + +
    +

    Module type InnerModuleA.InnerModuleTypeA' +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    +
    + + type t + = + InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-COLLECTION-InnerModuleA.html b/test/generators/html/Ocamlary-module-type-COLLECTION-InnerModuleA.html new file mode 100644 index 0000000000..525a59ba1a --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-COLLECTION-InnerModuleA.html @@ -0,0 +1,78 @@ + + + InnerModuleA (Ocamlary.COLLECTION.InnerModuleA) + + + + + + + + +
    +

    Module COLLECTION.InnerModuleA

    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + type t + = + + collection + + + +
    +

    This comment is for t.

    +
    +
    +
    + + module + + + InnerModuleA' + + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + + module + type + + + InnerModuleTypeA' + + + = sig ... + end + + +
    +
    +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-COLLECTION-module-type-InnerModuleTypeA.html b/test/generators/html/Ocamlary-module-type-COLLECTION-module-type-InnerModuleTypeA.html new file mode 100644 index 0000000000..0c579a9116 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-COLLECTION-module-type-InnerModuleTypeA.html @@ -0,0 +1,37 @@ + + + InnerModuleTypeA (Ocamlary.COLLECTION.InnerModuleTypeA) + + + + + + + + +
    +

    Module type COLLECTION.InnerModuleTypeA

    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    +
    + + type t + = + InnerModuleA.InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-COLLECTION.html b/test/generators/html/Ocamlary-module-type-COLLECTION.html new file mode 100644 index 0000000000..128462db94 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-COLLECTION.html @@ -0,0 +1,80 @@ + + + COLLECTION (Ocamlary.COLLECTION) + + + + + + + + +
    +

    Module type Ocamlary.COLLECTION

    +

    module type of

    +
    +
    +

    This comment is for CollectionModule.

    +
    +
    + + type collection +
    +

    This comment is for collection.

    +
    +
    +
    +
    + + type element +
    +
    +
    +
    + + module + + + InnerModuleA + + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + + module + type + + + InnerModuleTypeA + + + = + InnerModuleA.InnerModuleTypeA' + + + +
    +
    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-Dep10.html b/test/generators/html/Ocamlary-module-type-Dep10.html new file mode 100644 index 0000000000..282f062a40 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-Dep10.html @@ -0,0 +1,28 @@ + + + Dep10 (Ocamlary.Dep10) + + + + + + + + +
    +

    Module type Ocamlary.Dep10

    +
    +
    +
    +
    + + type t + = int + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-Empty.html b/test/generators/html/Ocamlary-module-type-Empty.html new file mode 100644 index 0000000000..a2d80b399d --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-Empty.html @@ -0,0 +1,27 @@ + + + Empty (Ocamlary.Empty) + + + + + + + + +
    +

    Module type Ocamlary.Empty

    +

    An ambiguous, misnamed module type

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-EmptySig.html b/test/generators/html/Ocamlary-module-type-EmptySig.html new file mode 100644 index 0000000000..5ca1691552 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-EmptySig.html @@ -0,0 +1,19 @@ + + + EmptySig (Ocamlary.EmptySig) + + + + + + + + +
    +

    Module type Ocamlary.EmptySig

    +

    A plain, empty module signature

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-EmptySigAlias.html b/test/generators/html/Ocamlary-module-type-EmptySigAlias.html new file mode 100644 index 0000000000..c98b9084f1 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-EmptySigAlias.html @@ -0,0 +1,20 @@ + + + EmptySigAlias (Ocamlary.EmptySigAlias) + + + + + + + + +
    +

    Module type Ocamlary.EmptySigAlias

    +

    A plain, empty module signature alias of

    +
    EmptySig

    (preformatted).

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-IncludeInclude2.html b/test/generators/html/Ocamlary-module-type-IncludeInclude2.html new file mode 100644 index 0000000000..a32ddd6a6f --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-IncludeInclude2.html @@ -0,0 +1,27 @@ + + + IncludeInclude2 (Ocamlary.IncludeInclude2) + + + + + + + + +
    +

    Module type Ocamlary.IncludeInclude2

    +
    +
    +
    +
    + + type include_include + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-IncludeModuleType.html b/test/generators/html/Ocamlary-module-type-IncludeModuleType.html new file mode 100644 index 0000000000..d687b1a893 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-IncludeModuleType.html @@ -0,0 +1,35 @@ + + + IncludeModuleType (Ocamlary.IncludeModuleType) + + + + + + + + +
    +

    Module type Ocamlary.IncludeModuleType

    +

    This comment is for IncludeModuleType.

    +
    +
    +
    +
    +

    This comment is for include EmptySigAlias.

    +
    +
    + + + include + EmptySigAlias + + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-IncludedB.html b/test/generators/html/Ocamlary-module-type-IncludedB.html new file mode 100644 index 0000000000..400f8ca175 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-IncludedB.html @@ -0,0 +1,26 @@ + + + IncludedB (Ocamlary.IncludedB) + + + + + + + + +
    +

    Module type Ocamlary.IncludedB

    +
    +
    +
    +
    + + type s +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-M.html b/test/generators/html/Ocamlary-module-type-M.html new file mode 100644 index 0000000000..62cb897745 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-M.html @@ -0,0 +1,25 @@ + + + M (Ocamlary.M) + + + + + + + +
    +

    Module type Ocamlary.M

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-MMM-C-InnerModuleA-InnerModuleA'.html b/test/generators/html/Ocamlary-module-type-MMM-C-InnerModuleA-InnerModuleA'.html new file mode 100644 index 0000000000..3f47e52ef5 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-MMM-C-InnerModuleA-InnerModuleA'.html @@ -0,0 +1,40 @@ + + + + InnerModuleA' (Ocamlary.MMM.C.InnerModuleA.InnerModuleA') + + + + + + + + +
    +

    Module InnerModuleA.InnerModuleA'

    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + type t + = + (unit, unit) + a_function + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-MMM-C-InnerModuleA-module-type-InnerModuleTypeA'.html b/test/generators/html/Ocamlary-module-type-MMM-C-InnerModuleA-module-type-InnerModuleTypeA'.html new file mode 100644 index 0000000000..6b4610dc48 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-MMM-C-InnerModuleA-module-type-InnerModuleTypeA'.html @@ -0,0 +1,41 @@ + + + + InnerModuleTypeA' (Ocamlary.MMM.C.InnerModuleA.InnerModuleTypeA') + + + + + + + + +
    +

    Module type InnerModuleA.InnerModuleTypeA' +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    +
    + + type t + = + InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-MMM-C-InnerModuleA.html b/test/generators/html/Ocamlary-module-type-MMM-C-InnerModuleA.html new file mode 100644 index 0000000000..0828616565 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-MMM-C-InnerModuleA.html @@ -0,0 +1,76 @@ + + + InnerModuleA (Ocamlary.MMM.C.InnerModuleA) + + + + + + + + +
    +

    Module C.InnerModuleA

    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + type t + = + collection + + + +
    +

    This comment is for t.

    +
    +
    +
    + + module + + + InnerModuleA' + + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + + module + type + + + InnerModuleTypeA' + + + = sig ... + end + + +
    +
    +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-MMM-C-module-type-InnerModuleTypeA.html b/test/generators/html/Ocamlary-module-type-MMM-C-module-type-InnerModuleTypeA.html new file mode 100644 index 0000000000..c1f6ea9513 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-MMM-C-module-type-InnerModuleTypeA.html @@ -0,0 +1,37 @@ + + + InnerModuleTypeA (Ocamlary.MMM.C.InnerModuleTypeA) + + + + + + + + +
    +

    Module type C.InnerModuleTypeA

    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    +
    + + type t + = + InnerModuleA.InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-MMM-C.html b/test/generators/html/Ocamlary-module-type-MMM-C.html new file mode 100644 index 0000000000..0c831edc16 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-MMM-C.html @@ -0,0 +1,78 @@ + + + C (Ocamlary.MMM.C) + + + + + + + + +
    +

    Module MMM.C

    +
    +
    +

    This comment is for CollectionModule.

    +
    +
    + + type collection +
    +

    This comment is for collection.

    +
    +
    +
    +
    + + type element +
    +
    +
    +
    + + module + + InnerModuleA + + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + + module + type + + + + InnerModuleTypeA + + + = + InnerModuleA.InnerModuleTypeA' + + + +
    +
    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-MMM.html b/test/generators/html/Ocamlary-module-type-MMM.html new file mode 100644 index 0000000000..2d1f8b42d6 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-MMM.html @@ -0,0 +1,30 @@ + + + MMM (Ocamlary.MMM) + + + + + + + + +
    +

    Module type Ocamlary.MMM

    +
    +
    +
    +
    + + module + C + : COLLECTION + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-MissingComment.html b/test/generators/html/Ocamlary-module-type-MissingComment.html new file mode 100644 index 0000000000..b4a1287d96 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-MissingComment.html @@ -0,0 +1,27 @@ + + + MissingComment (Ocamlary.MissingComment) + + + + + + + + +
    +

    Module type Ocamlary.MissingComment

    +

    An ambiguous, misnamed module type

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-NestedInclude1-module-type-NestedInclude2.html b/test/generators/html/Ocamlary-module-type-NestedInclude1-module-type-NestedInclude2.html new file mode 100644 index 0000000000..e8921328ad --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-NestedInclude1-module-type-NestedInclude2.html @@ -0,0 +1,31 @@ + + + NestedInclude2 (Ocamlary.NestedInclude1.NestedInclude2) + + + + + + + + +
    +

    Module type NestedInclude1.NestedInclude2 +

    +
    +
    +
    +
    + + type nested_include + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-NestedInclude1.html b/test/generators/html/Ocamlary-module-type-NestedInclude1.html new file mode 100644 index 0000000000..90b5ca4973 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-NestedInclude1.html @@ -0,0 +1,40 @@ + + + NestedInclude1 (Ocamlary.NestedInclude1) + + + + + + + + +
    +

    Module type Ocamlary.NestedInclude1

    +
    +
    +
    +
    + + + module + type + + + NestedInclude2 + + + = sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-NestedInclude2.html b/test/generators/html/Ocamlary-module-type-NestedInclude2.html new file mode 100644 index 0000000000..622ea7c091 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-NestedInclude2.html @@ -0,0 +1,27 @@ + + + NestedInclude2 (Ocamlary.NestedInclude2) + + + + + + + + +
    +

    Module type Ocamlary.NestedInclude2

    +
    +
    +
    +
    + + type nested_include + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-RECOLLECTION.html b/test/generators/html/Ocamlary-module-type-RECOLLECTION.html new file mode 100644 index 0000000000..4eb2c029bd --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-RECOLLECTION.html @@ -0,0 +1,31 @@ + + + RECOLLECTION (Ocamlary.RECOLLECTION) + + + + + + + + +
    +

    Module type Ocamlary.RECOLLECTION

    +
    +
    +
    +
    + + module C + = + Recollection(CollectionModule) + + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA'.html b/test/generators/html/Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA'.html new file mode 100644 index 0000000000..e90391fda5 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA'.html @@ -0,0 +1,42 @@ + + + + + InnerModuleA' (Ocamlary.RecollectionModule.InnerModuleA.InnerModuleA') + + + + + + + + +
    +

    Module InnerModuleA.InnerModuleA'

    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + type t + = + (unit, unit) + a_function + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-RecollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html b/test/generators/html/Ocamlary-module-type-RecollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html new file mode 100644 index 0000000000..e5ba1ec48d --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-RecollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html @@ -0,0 +1,44 @@ + + + + + InnerModuleTypeA' + (Ocamlary.RecollectionModule.InnerModuleA.InnerModuleTypeA') + + + + + + + + +
    +

    Module type InnerModuleA.InnerModuleTypeA' +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    +
    + + type t + = + InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-RecollectionModule-InnerModuleA.html b/test/generators/html/Ocamlary-module-type-RecollectionModule-InnerModuleA.html new file mode 100644 index 0000000000..a691525116 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-RecollectionModule-InnerModuleA.html @@ -0,0 +1,79 @@ + + + InnerModuleA (Ocamlary.RecollectionModule.InnerModuleA) + + + + + + + + +
    +

    Module RecollectionModule.InnerModuleA

    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + type t + = + + collection + + + +
    +

    This comment is for t.

    +
    +
    +
    + + module + + InnerModuleA' + + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA'.

    +
    +
    +
    +
    + + + module + type + + + InnerModuleTypeA' + + + = sig ... + end + + +
    +
    +

    This comment is for InnerModuleTypeA'.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-RecollectionModule-module-type-InnerModuleTypeA.html b/test/generators/html/Ocamlary-module-type-RecollectionModule-module-type-InnerModuleTypeA.html new file mode 100644 index 0000000000..44a80611e0 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-RecollectionModule-module-type-InnerModuleTypeA.html @@ -0,0 +1,40 @@ + + + + InnerModuleTypeA (Ocamlary.RecollectionModule.InnerModuleTypeA) + + + + + + + + +
    +

    Module type + RecollectionModule.InnerModuleTypeA +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    +
    + + type t + = + InnerModuleA.InnerModuleA'.t + + + +
    +

    This comment is for t.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-RecollectionModule.html b/test/generators/html/Ocamlary-module-type-RecollectionModule.html new file mode 100644 index 0000000000..c5f826a57b --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-RecollectionModule.html @@ -0,0 +1,90 @@ + + + RecollectionModule (Ocamlary.RecollectionModule) + + + + + + + + +
    +

    Module type Ocamlary.RecollectionModule

    +
    +
    +
    +
    + + type collection + = + + + CollectionModule.element + list + + + +
    +
    +
    +
    + + type element + = + + CollectionModule.collection + + + +
    +
    +
    +
    + + module + + + InnerModuleA + + + : sig ... + end + + +
    +
    +

    This comment is for InnerModuleA.

    +
    +
    +
    +
    + + + module + type + + + InnerModuleTypeA + + + = + InnerModuleA.InnerModuleTypeA' + + + +
    +
    +

    This comment is for InnerModuleTypeA.

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-SigForMod-Inner-module-type-Empty.html b/test/generators/html/Ocamlary-module-type-SigForMod-Inner-module-type-Empty.html new file mode 100644 index 0000000000..fcf85e815b --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-SigForMod-Inner-module-type-Empty.html @@ -0,0 +1,22 @@ + + + Empty (Ocamlary.SigForMod.Inner.Empty) + + + + + + + + +
    +

    Module type Inner.Empty

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-SigForMod-Inner.html b/test/generators/html/Ocamlary-module-type-SigForMod-Inner.html new file mode 100644 index 0000000000..dda65fb238 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-SigForMod-Inner.html @@ -0,0 +1,40 @@ + + + Inner (Ocamlary.SigForMod.Inner) + + + + + + + + +
    +

    Module SigForMod.Inner

    +
    +
    +
    +
    + + + module + type + + + + Empty + + + = sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-SigForMod.html b/test/generators/html/Ocamlary-module-type-SigForMod.html new file mode 100644 index 0000000000..f0641485f8 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-SigForMod.html @@ -0,0 +1,33 @@ + + + SigForMod (Ocamlary.SigForMod) + + + + + + + + +
    +

    Module type Ocamlary.SigForMod

    +

    There's a signature in a module in this signature.

    +
    +
    +
    +
    + + module + Inner + + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-SuperSig-module-type-EmptySig.html b/test/generators/html/Ocamlary-module-type-SuperSig-module-type-EmptySig.html new file mode 100644 index 0000000000..d0c5519238 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-SuperSig-module-type-EmptySig.html @@ -0,0 +1,29 @@ + + + EmptySig (Ocamlary.SuperSig.EmptySig) + + + + + + + + +
    +

    Module type SuperSig.EmptySig

    +
    +
    +
    +
    + + type not_actually_empty + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-SuperSig-module-type-One.html b/test/generators/html/Ocamlary-module-type-SuperSig-module-type-One.html new file mode 100644 index 0000000000..96b3f4ca59 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-SuperSig-module-type-One.html @@ -0,0 +1,28 @@ + + + One (Ocamlary.SuperSig.One) + + + + + + + + +
    +

    Module type SuperSig.One

    +
    +
    +
    +
    + + type two +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-SuperSig-module-type-SubSigA-SubSigAMod.html b/test/generators/html/Ocamlary-module-type-SuperSig-module-type-SubSigA-SubSigAMod.html new file mode 100644 index 0000000000..4d3c729844 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-SuperSig-module-type-SubSigA-SubSigAMod.html @@ -0,0 +1,32 @@ + + + SubSigAMod (Ocamlary.SuperSig.SubSigA.SubSigAMod) + + + + + + + + +
    +

    Module SubSigA.SubSigAMod

    +
    +
    +
    +
    + + type sub_sig_a_mod + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-SuperSig-module-type-SubSigA.html b/test/generators/html/Ocamlary-module-type-SuperSig-module-type-SubSigA.html new file mode 100644 index 0000000000..21941969cb --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-SuperSig-module-type-SubSigA.html @@ -0,0 +1,53 @@ + + + SubSigA (Ocamlary.SuperSig.SubSigA) + + + + + + + + +
    +

    Module type SuperSig.SubSigA

    +
    + +
    +

    A Labeled Section + Header Inside of a Signature +

    +
    +
    + + type t +
    +
    +
    +
    + + module + + SubSigAMod + + + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-SuperSig-module-type-SubSigB.html b/test/generators/html/Ocamlary-module-type-SuperSig-module-type-SubSigB.html new file mode 100644 index 0000000000..ceb73b4ae3 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-SuperSig-module-type-SubSigB.html @@ -0,0 +1,39 @@ + + + SubSigB (Ocamlary.SuperSig.SubSigB) + + + + + + + + +
    +

    Module type SuperSig.SubSigB

    +
    + +
    +

    Another Labeled + Section Header Inside of a Signature +

    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-SuperSig-module-type-SuperSig.html b/test/generators/html/Ocamlary-module-type-SuperSig-module-type-SuperSig.html new file mode 100644 index 0000000000..1dc92cd3e9 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-SuperSig-module-type-SuperSig.html @@ -0,0 +1,20 @@ + + + SuperSig (Ocamlary.SuperSig.SuperSig) + + + + + + + + +
    +

    Module type SuperSig.SuperSig

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-SuperSig.html b/test/generators/html/Ocamlary-module-type-SuperSig.html new file mode 100644 index 0000000000..c41801a8c6 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-SuperSig.html @@ -0,0 +1,108 @@ + + + SuperSig (Ocamlary.SuperSig) + + + + + + + + +
    +

    Module type Ocamlary.SuperSig

    +
    +
    +
    +
    + + + module + type + + + + SubSigA + + + = sig ... + end + + +
    +
    +
    +
    + + + module + type + + + + SubSigB + + + = sig ... + end + + +
    +
    +
    +
    + + + module + type + + + + EmptySig + + + = sig ... + end + + +
    +
    +
    +
    + + + module + type + + + One + + = sig ... + end + + +
    +
    +
    +
    + + + module + type + + + + SuperSig + + + = sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-ToInclude-IncludedA.html b/test/generators/html/Ocamlary-module-type-ToInclude-IncludedA.html new file mode 100644 index 0000000000..7cbc560d74 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-ToInclude-IncludedA.html @@ -0,0 +1,28 @@ + + + IncludedA (Ocamlary.ToInclude.IncludedA) + + + + + + + + +
    +

    Module ToInclude.IncludedA

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-ToInclude-module-type-IncludedB.html b/test/generators/html/Ocamlary-module-type-ToInclude-module-type-IncludedB.html new file mode 100644 index 0000000000..a6db5d8fa8 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-ToInclude-module-type-IncludedB.html @@ -0,0 +1,28 @@ + + + IncludedB (Ocamlary.ToInclude.IncludedB) + + + + + + + + +
    +

    Module type ToInclude.IncludedB

    +
    +
    +
    +
    + + type s +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-ToInclude.html b/test/generators/html/Ocamlary-module-type-ToInclude.html new file mode 100644 index 0000000000..6cda1a90d1 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-ToInclude.html @@ -0,0 +1,51 @@ + + + ToInclude (Ocamlary.ToInclude) + + + + + + + + +
    +

    Module type Ocamlary.ToInclude

    +
    +
    +
    +
    + + module + + IncludedA + + : sig ... + end + + +
    +
    +
    +
    + + + module + type + + + + IncludedB + + + = sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-TypeExt.html b/test/generators/html/Ocamlary-module-type-TypeExt.html new file mode 100644 index 0000000000..393ca7108c --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-TypeExt.html @@ -0,0 +1,56 @@ + + + TypeExt (Ocamlary.TypeExt) + + + + + + + + +
    +

    Module type Ocamlary.TypeExt

    +
    +
    +
    +
    + + type t = + .. + +
    +
    +
    +
    + + + type t += + + + + + + +
    + | C + +
    +
    +
    +
    +
    + + + val f : + t -> + unit + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-TypeExtPruned.html b/test/generators/html/Ocamlary-module-type-TypeExtPruned.html new file mode 100644 index 0000000000..bba8234828 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-TypeExtPruned.html @@ -0,0 +1,50 @@ + + + TypeExtPruned (Ocamlary.TypeExtPruned) + + + + + + + + +
    +

    Module type Ocamlary.TypeExtPruned

    +
    +
    +
    +
    + + + type + new_t += + + + + + + +
    + | C + +
    +
    +
    +
    +
    + + + val f : + new_t + -> + unit + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-With1-M.html b/test/generators/html/Ocamlary-module-type-With1-M.html new file mode 100644 index 0000000000..3e43a6e799 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-With1-M.html @@ -0,0 +1,31 @@ + + + M (Ocamlary.With1.M) + + + + + + + + +
    +

    Module With1.M

    +
    +
    +
    +
    + + + module + type + S + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-With1.html b/test/generators/html/Ocamlary-module-type-With1.html new file mode 100644 index 0000000000..621adab527 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-With1.html @@ -0,0 +1,41 @@ + + + With1 (Ocamlary.With1) + + + + + + + + +
    +

    Module type Ocamlary.With1

    +
    +
    +
    +
    + + module + M + : sig ... + end + + +
    +
    +
    +
    + + module N + : + M.S + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-With11-N.html b/test/generators/html/Ocamlary-module-type-With11-N.html new file mode 100644 index 0000000000..a92bba9e17 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-With11-N.html @@ -0,0 +1,29 @@ + + + N (Ocamlary.With11.N) + + + + + + + + +
    +

    Module With11.N

    +
    +
    +
    +
    + + type t + = int + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-With11.html b/test/generators/html/Ocamlary-module-type-With11.html new file mode 100644 index 0000000000..13884b1e67 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-With11.html @@ -0,0 +1,42 @@ + + + With11 (Ocamlary.With11) + + + + + + + + +
    +

    Module type Ocamlary.With11

    +
    +
    +
    +
    + + module M + = With9 + +
    +
    +
    +
    + + module + N + : M.S + with + type + t = int + + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-With8-M-N.html b/test/generators/html/Ocamlary-module-type-With8-M-N.html new file mode 100644 index 0000000000..a1004aed0f --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-With8-M-N.html @@ -0,0 +1,29 @@ + + + N (Ocamlary.With8.M.N) + + + + + + + + +

    Module M.N

    +
    +
    +
    +
    + + type t + = With5.N.t + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-With8-M-module-type-S.html b/test/generators/html/Ocamlary-module-type-With8-M-module-type-S.html new file mode 100644 index 0000000000..24c2a31a41 --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-With8-M-module-type-S.html @@ -0,0 +1,28 @@ + + + S (Ocamlary.With8.M.S) + + + + + + + + +
    +

    Module type M.S

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-With8-M.html b/test/generators/html/Ocamlary-module-type-With8-M.html new file mode 100644 index 0000000000..023f6bce1c --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-With8-M.html @@ -0,0 +1,56 @@ + + + M (Ocamlary.With8.M) + + + + + + + + +
    +

    Module With8.M

    +
    +
    +
    +
    + + + module + type + + S + + = sig ... + end + + +
    +
    +
    +
    + + module + N + : module + type of + struct + include + With5.N + end with + + type + t = + With5.N.t + + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary-module-type-With8.html b/test/generators/html/Ocamlary-module-type-With8.html new file mode 100644 index 0000000000..5c90f33d9b --- /dev/null +++ b/test/generators/html/Ocamlary-module-type-With8.html @@ -0,0 +1,40 @@ + + + With8 (Ocamlary.With8) + + + + + + + + +
    +

    Module type Ocamlary.With8

    +
    +
    +
    +
    + + module + M + : module + type of + struct + include + With5 + end with + + type + N.t = + With5.N.t + + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Ocamlary.html b/test/generators/html/Ocamlary.html new file mode 100644 index 0000000000..f65943ef2f --- /dev/null +++ b/test/generators/html/Ocamlary.html @@ -0,0 +1,2961 @@ + + + Ocamlary (Ocamlary) + + + + + + + +
    +

    Module Ocamlary

    +

    This is an interface with all of the + module system features. This documentation demonstrates: +

    +
    • comment formatting
    • unassociated comments
    • +
    • documentation sections
    • +
    • module system documentation including

      +
      1. submodules
      2. module aliases
      3. module types
      4. +
      5. module type aliases
      6. modules with signatures
      7. +
      8. modules with aliased signatures
      9. +
      +
    • +

    A numbered list:

    1. 3
    2. 2
    3. 1
    +

    David Sheets is the author.

    +
      +
    • author David Sheets
    • +
    +
    + +
    +

    You may find more information about this HTML documentation renderer + at + github.com/dsheets/ocamlary + . +

    This is some verbatim text:

    verbatim
    +

    This is some verbatim text:

    [][df[]]}}
    +

    Here is some raw LaTeX:

    +

    Here is an index table of Empty modules:

    +
      +
    • Empty + A plain, empty module +
    • +
    • EmptyAlias + A plain module alias of Empty +
    • +

    Here is a table of links to indexes: indexlist

    +

    Here is some superscript: x2

    +

    Here is some subscript: x0

    +

    Here are some escaped brackets: { [ @ ] }

    +

    Here is some emphasis followed by code.

    +

    An unassociated comment

    +

    Level 1

    +

    Level 2

    +

    Level 3

    +
    Level 4
    +

    + Basic module stuff +

    +
    +
    + + module + Empty + : sig ... + end + + +

    A plain, empty module

    +
    +
    +
    + + + module + type + Empty + = sig ... + end + + +
    +

    An ambiguous, misnamed module type

    +
    +
    +
    + + + module + type + + + MissingComment + + = sig ... + end + + +
    +

    An ambiguous, misnamed module type

    +

    Section 9000

    +
    +
    + + module + EmptyAlias + = Empty + +
    +

    A plain module alias of Empty

    +
    +
    +

    EmptySig

    +
    +
    + + + module + type + + EmptySig + = sig ... + end + + +

    A plain, empty module signature

    +
    +
    +
    + + + module + type + + + EmptySigAlias + + = EmptySig + + +
    +

    A plain, empty module signature alias of

    +
    +
    +
    +
    + + module + + ModuleWithSignature + + : EmptySig + + +
    +
    +

    A plain module of a signature of + EmptySig + (reference) +

    +
    +
    +
    +
    + + module + + + ModuleWithSignatureAlias + + + : + EmptySigAlias + + +
    +

    A plain module with an alias signature

    +
    +
    +
    + + module + One + : sig ... + end + + +
    +
    +
    +
    + + + module + type + + SigForMod + + = sig ... + end + + +
    +
    +

    There's a signature in a module in this signature.

    +
    +
    +
    +
    + + + module + type + + SuperSig + = sig ... + end + + +
    +
    +

    For a good time, see SuperSig.SubSigA.subSig or + SuperSig.SubSigB.subSig or + + SuperSig.EmptySig + . Section Section 9000 is also interesting. + EmptySig is the section and + EmptySig + is the module signature. +

    +
    +
    + + module + Buffer + : sig ... + end + + +

    Buffer.t

    +

    Some text before exception title.

    +

    + Basic exception + stuff +

    After exception title.

    +
    +
    + + exception + Kaboom + of unit + + +

    Unary exception constructor

    +
    +
    +
    + + exception + Kablam + of unit * unit + + +

    Binary exception constructor

    +
    +
    +
    + + exception + Kapow + of unit * unit + + +
    +
    +

    Unary exception constructor over binary tuple

    +
    +
    +
    +
    + + exception + EmptySig + +
    +
    +

    + EmptySig + is a module and + EmptySig is this + exception. +

    +
    +
    +
    +
    + + exception + EmptySigAlias + +
    +
    +

    EmptySigAlias + is this exception. +

    +
    +
    +

    + + Basic type and value stuff with advanced doc comments +

    +
    +
    + + + type + ('a, 'b) a_function + + = + 'a + -> + 'b + + +
    +
    +

    a_function is this + type and a_function + is the value below. +

    +
    +
    +
    +
    + + + val a_function : + x:int -> int + + +
    +
    +

    This is a_function with param and return type.

    +
      +
    • parameter + x

      the x coordinate

      +
    • +
    +
      +
    • returns +

      the y coordinate

      +
    • +
    +
    +
    +
    +
    + + + val fun_fun_fun : + + ( + (int, int) + a_function + ,  + (unit, unit) + a_function + ) + a_function + + + +
    +
    +
    +
    + + + val fun_maybe : + ?yes:unit -> + unit -> int + + +
    +
    +
    +
    + + + val not_found : + unit -> unit + + +
    +
    +
      +
    • raises + Not_found

      That's all it does

      +
    • +
    +
    +
    +
    +
    + + val ocaml_org : string + +
    +
    + +
    +
    +
    +
    + + val some_file : string + +
    +
    +
      +
    • see + some_file +

      The file called some_file

      +
    • +
    +
    +
    +
    +
    + + val some_doc : string + +
    +
    +
      +
    • see + some_doc +

      The document called some_doc

      +
    • +
    +
    +
    +
    +
    + + + val since_mesozoic : unit + +
    +
    +

    This value was introduced in the Mesozoic era.

    +
      +
    • since mesozoic
    • +
    +
    +
    +
    +
    + + val changing : unit + +
    +
    +

    This value has had changes in 1.0.0, 1.1.0, and 1.2.0.

    +
      +
    • before + 1.0.0

      before 1.0.0

      +
    • +
    +
      +
    • before + 1.1.0

      before 1.1.0

      +
    • +
    +
      +
    • version 1.2.0
    • +
    +
    +
    +

    + Some Operators +

    +
    +
    + + val (~-) : unit +
    +
    +
    +
    + + val (!) : unit +
    +
    +
    +
    + + val (@) : unit +
    +
    +
    +
    + + val ($) : unit +
    +
    +
    +
    + + val (%) : unit +
    +
    +
    +
    + + val (&) : unit + +
    +
    +
    +
    + + val (*) : unit +
    +
    +
    +
    + + val (-) : unit +
    +
    +
    +
    + + val (+) : unit +
    +
    +
    +
    + + val (-?) : unit +
    +
    +
    +
    + + val (/) : unit +
    +
    +
    +
    + + val (:=) : unit +
    +
    +
    +
    + + val (=) : unit +
    +
    +
    +
    + + val (land) : unit +
    +
    +

    + Advanced Module + Stuff +

    +
    +
    + + module + CollectionModule + + : sig ... + end + + +
    +
    +

    This comment is for CollectionModule.

    +
    +
    +
    +
    + + module + type + + COLLECTION + + = module + type of + CollectionModule + + +

    module type of

    +
    +
    +
    + + module + Recollection + (C + : COLLECTION + ) : COLLECTION + with + type + + collection + = + + + C.element + list + + and + type + element + = + + C.collection + + + + +
    +
    +
    +
    + + + module + type + MMM + = sig ... + end + + +
    +
    +
    +
    + + module + type + + RECOLLECTION + + = MMM + with + module + C = + Recollection(CollectionModule) + + + + +
    +
    +
    +
    + + + module + type + + + + RecollectionModule + + + = sig ... + end + + +
    +
    +
    +
    + + + module + type + A + = sig ... + end + + +
    +
    +
    +
    + + + module + type + B + = sig ... + end + + +
    +
    +
    +
    + + + module + type + C + = sig ... + end + + +
    +

    This module type includes two signatures.

    +
    +
    +
    +
    + + module + FunctorTypeOf + ( + Collection + : module + type of + CollectionModule + ) : sig ... + end + + +
    +
    +

    This comment is for FunctorTypeOf.

    +
    +
    +
    +
    + + + module + type + + + + IncludeModuleType + + + = sig ... + end + + +
    +
    +

    This comment is for IncludeModuleType.

    +
    +
    +
    +
    + + + module + type + + ToInclude + + = sig ... + end + + +
    +
    +
    +
    + + + include + ToInclude + + + +
    +
    + + module + IncludedA + : sig ... + end + + +
    +
    +
    +
    + + module + type + + IncludedB + + = sig ... + end + + +
    +
    +
    +
    +

    + Advanced Type Stuff +

    +
    +
    + + type record + = { + + + + + + + + + + +
    + + field1 : int; + (* +

    This comment is for field1.

    + *) +
    + + field2 : int; + (* +

    This comment is for field2.

    + *) +
    } +
    +

    This comment is for record.

    +

    This comment is also for record.

    +
    +
    +
    +
    + + type mutable_record + = { + + + + + + + + + + + + + + +
    + + mutable a : int; + + (* +

    a is first and mutable

    + *) +
    + + b : unit; + (* +

    b is second and immutable

    + *) +
    + + mutable c : int; + + (* +

    c is third and mutable

    + *) +
    } +
    +
    +
    +
    + + type universe_record + = { + + + + + +
    + + + nihilate : a. + 'a + -> + unit; + + +
    } +
    +
    +
    +
    + + type variant + = + + + + + + + + + + + + + + + + + + +
    + + | + TagA + + (* +

    This comment is for TagA.

    + *) +
    + + | + ConstrB + of int + + + (* +

    This comment is for ConstrB.

    + *) +
    + + | + ConstrC + of int * int + + + (* +

    This comment is for binary ConstrC.

    + *) +
    + + | + ConstrD + of int * int + + + (* +

    This comment is for unary ConstrD of binary tuple. +

    *) +
    +
    +

    This comment is for variant.

    +

    This comment is also for variant.

    +
    +
    +
    +
    + + type poly_variant + = [ + + + + + + + + +
    + + | `TagA +
    + + | + `ConstrB of int + +
    ] +
    +
    +

    This comment is for poly_variant.

    +

    Wow! It was a polymorphic variant!

    +
    +
    +
    +
    + + + type (_, _) full_gadt + = + + + + + + + + + + + + + + +
    + + | + Tag : + (unit, unit) + full_gadt + + + +
    + + | + First : + 'a + -> + ('a, unit) + full_gadt + + + +
    + + | + Second : + 'a + -> + (unit, 'a) + full_gadt + + + +
    + + | + Exist : + 'a * 'b + -> + ('b, unit) + full_gadt + + + +
    +
    +

    This comment is for full_gadt.

    +

    Wow! It was a GADT!

    +
    +
    +
    +
    + + + type 'a partial_gadt + = + + + + + + + + + + + +
    + + | + AscribeTag : + 'a + partial_gadt + + + +
    + + | + OfTag + of + 'a + partial_gadt + + + +
    + + | + ExistGadtTag : + ( + 'a + -> + 'b) + -> + 'a + partial_gadt + + + +
    +
    +
    +

    This comment is for partial_gadt.

    +

    Wow! It was a mixed GADT!

    +
    +
    +
    +
    + + type alias + = variant + +
    +

    This comment is for alias.

    +
    +
    +
    +
    + + type tuple + = + (alias * + alias) + * alias * + (alias * + alias) + + + +
    +

    This comment is for tuple.

    +
    +
    +
    +
    + + type variant_alias + = variant = + + + + + + + + + + + + + + +
    + + | + TagA + +
    + + | + ConstrB + of int + + +
    + + | + ConstrC + of int * int + + +
    + + | + ConstrD + of int * int + + +
    +
    +
    +

    This comment is for variant_alias.

    +
    +
    +
    +
    + + type record_alias + = record = + { + + + + + + + + +
    + + field1 : int; +
    + + field2 : int; +
    } +
    +
    +

    This comment is for record_alias.

    +
    +
    +
    +
    + + type poly_variant_union + = [ + + + + + + + + +
    + + | + poly_variant + +
    + + | `TagC +
    ] +
    +
    +

    This comment is for poly_variant_union.

    +
    +
    +
    +
    + + + type + 'a poly_poly_variant + = [ + + + + + +
    + + | + + `TagA of + 'a + + +
    ] +
    +
    +
    +
    + + + type + ('a, 'b) bin_poly_poly_variant + = [ + + + + + + + + +
    + + | + + `TagA of + 'a + + +
    + + | + + `ConstrB of + 'b + + +
    ] +
    +
    +
    +
    + + + type + 'a open_poly_variant + + = [> `TagA ] as 'a + + +
    +
    +
    +
    + + + type + 'a open_poly_variant2 + + = [> `ConstrB of int ] + as 'a + + +
    +
    +
    +
    + + + type + 'a open_poly_variant_alias + + = + + 'a + open_poly_variant + open_poly_variant2 + + + +
    +
    +
    +
    + + + type 'a poly_fun + = + [> `ConstrB of int ] + as 'a + -> + 'a + + +
    +
    +
    +
    + + + type + 'a poly_fun_constraint + + = + 'a + -> + 'a + + constraint + 'a = [> `TagA ] + + +
    +
    +
    +
    + + + type + 'a closed_poly_variant + + = [< `One | `Two ] + as 'a + + +
    +
    +
    +
    + + + type + 'a clopen_poly_variant + + = + [< `One | `Two of int + | `Three Two Three ] + as 'a + + +
    +
    +
    +
    + + type nested_poly_variant + = [ + + + + + + + + + + + + + + +
    + + | `A +
    + + | + + `B of + [ `B1 | `B2 ] + + +
    + + | `C +
    + + | + + `D of + [ `D1 of [ `D1a ] ] + + +
    ] +
    +
    +
    +
    + + + type + ('a, 'b) full_gadt_alias + + = + + ('a,  + 'b) + full_gadt + + = + + + + + + + + + + + + + + +
    + + | + Tag : + (unit, unit) + full_gadt_alias + + + +
    + + | + First : + 'a + -> + ('a, unit) + full_gadt_alias + + + +
    + + | + Second : + 'a + -> + (unit, 'a) + full_gadt_alias + + + +
    + + | + Exist : + 'a * 'b + -> + ('b, unit) + full_gadt_alias + + + +
    +
    +
    +

    This comment is for full_gadt_alias.

    +
    +
    +
    +
    + + + type + 'a partial_gadt_alias + + = + 'a + partial_gadt + + = + + + + + + + + + + + +
    + + | + AscribeTag : + 'a + partial_gadt_alias + + + +
    + + | + OfTag + of + 'a + partial_gadt_alias + + + +
    + + | + ExistGadtTag : + ( + 'a + -> + 'b) + -> + 'a + partial_gadt_alias + + + +
    +
    +
    +

    This comment is for partial_gadt_alias.

    +
    +
    +
    +
    + + exception + Exn_arrow : unit + -> exn + + +
    +
    +

    This comment is for + Exn_arrow. +

    +
    +
    +
    +
    + + type mutual_constr_a + = + + + + + + + + + +
    + + | A + +
    + + | + B_ish + of + mutual_constr_b + + + (* +

    This comment is between + mutual_constr_a + and + mutual_constr_b + . +

    *) +
    +
    +
    +

    This comment is for + mutual_constr_a + then mutual_constr_b + . +

    +
    +
    +
    +
    + + and mutual_constr_b + = + + + + + + + + + +
    + + | B + +
    + + | + A_ish + of + mutual_constr_a + + + (* +

    This comment must be here for the next to associate correctly.

    + *) +
    +
    +
    +

    This comment is for + mutual_constr_b + then mutual_constr_a + . +

    +
    +
    +
    +
    + + type rec_obj + = + < f : int; g : + unit -> unit; + h : rec_obj; > + + + +
    +
    +
    +
    + + + type 'a open_obj + = + < f : int; g : + unit -> unit; + .. > + as 'a + + +
    +
    +
    +
    + + type 'a oof + = + < a : unit; .. > + as 'a + -> + 'a + + +
    +
    +
    +
    + + + type 'a any_obj + = < .. > as 'a + + +
    +
    +
    +
    + + type empty_obj + = < > + +
    +
    +
    +
    + + type one_meth + = < meth : unit; > + +
    +
    +
    +
    + + type ext = + .. + +

    A mystery wrapped in an ellipsis

    +
    +
    +
    + + type ext += + + + + + + +
    + + | ExtA + +
    +
    +
    +
    +
    + + type ext += + + + + + + +
    + + | ExtB + +
    +
    +
    +
    +
    + + type ext += + + + + + + + + + +
    + + | + ExtC + of unit + + +
    + + | + ExtD + of ext + + +
    +
    +
    +
    +
    + + type ext += + + + + + + +
    + + | ExtE + +
    +
    +
    +
    +
    + + type ext += + + + + + + +
    + + | ExtF + +
    +
    +
    +
    +
    + + + type 'a poly_ext + = .. + +

    'a poly_ext

    +
    +
    +
    + + + type + poly_ext += + + + + + + + + + + +
    + | + Foo + of 'b + + +
    + | + Bar + of 'b + * 'b + + + (* +

    'b poly_ext

    *) +
    +
    +
    +
    +
    + + type + poly_ext += + + + + + + + +
    + + | + Quux + of 'c + + + (* +

    'c poly_ext

    *) +
    +
    +
    +
    +
    + + module + ExtMod + : sig ... + end + + +
    +
    +
    +
    + + type + ExtMod.t += + + + + + + + +
    + + | + ZzzTop0 + + (* +

    It's got the rock

    *) +
    +
    +
    +
    +
    + + type + ExtMod.t += + + + + + + + +
    + + | + ZzzTop + of unit + + + (* +

    and it packs a unit.

    *) +
    +
    +
    +
    +
    + + val launch_missiles : + unit -> unit + + +

    Rotate keys on my mark...

    +
    +
    +
    + + type my_mod + = + (module + COLLECTION + ) + + + +
    +

    A brown paper package tied up with string

    +
    +
    +
    +
    + + class + empty_class + : object ... + end + + +
    +
    +
    +
    + + class + + one_method_class + + : object ... + end + + +
    +
    +
    +
    + + class + + two_method_class + + : object ... + end + + +
    +
    +
    +
    + + class 'a + param_class + : + 'a + -> + object ... + end + + +
    +
    +
    +
    + + type my_unit_object + = + unit param_class + + + +
    +
    +
    +
    + + + type 'a my_unit_class + + = + unit param_class + as 'a + + +
    +
    +
    +
    + + module + Dep1 + : sig ... + end + + +
    +
    +
    +
    + + module + Dep2 + (Arg : + sig ... end + ) : sig ... + end + + +
    +
    +
    +
    + + type dep1 + = + Dep2(Dep1).B.c + + +
    +
    +
    +
    + + module + Dep3 + : sig ... + end + + +
    +
    +
    +
    + + module + Dep4 + : sig ... + end + + +
    +
    +
    +
    + + module + Dep5 + (Arg : + sig ... end + ) : sig ... + end + + +
    +
    +
    +
    + + type dep2 + = + Dep5(Dep4).Z.X.b + + +
    +
    +
    +
    + + type dep3 + = Dep5(Dep4).Z.Y.a + + +
    +
    +
    +
    + + module + Dep6 + : sig ... + end + + +
    +
    +
    +
    + + module + Dep7 + (Arg : + sig ... end + ) : sig ... + end + + +
    +
    +
    +
    + + type dep4 + = + Dep7(Dep6).M.Y.d + + + +
    +
    +
    +
    + + module + Dep8 + : sig ... + end + + +
    +
    +
    +
    + + module + Dep9 + (X : + sig ... end + ) : sig ... + end + + +
    +
    +
    +
    + + + module + type + Dep10 + = Dep9(Dep8).T + with + type + t = int + + + +
    +
    +
    +
    + + module + Dep11 + : sig ... + end + + +
    +
    +
    +
    + + module + Dep12 + (Arg : + sig ... end + ) : sig ... + end + + +
    +
    +
    +
    + + module + Dep13 + : Dep12(Dep11).T + + +
    +
    +
    +
    + + type dep5 + = Dep13.c + +
    +
    +
    +
    + + + module + type + With1 + = sig ... + end + + +
    +
    +
    +
    + + module + With2 + : sig ... + end + + +
    +
    +
    +
    + + module + With3 + : With1 + with + module + M = + With2 + + + +
    +
    +
    +
    + + type with1 + = With3.N.t + +
    +
    +
    +
    + + module + With4 + : With1 + with + module + M := + With2 + + + +
    +
    +
    +
    + + type with2 + = With4.N.t + +
    +
    +
    +
    + + module + With5 + : sig ... + end + + +
    +
    +
    +
    + + module + With6 + : sig ... + end + + +
    +
    +
    +
    + + module + With7 + (X : + sig ... end + ) : sig ... + end + + +
    +
    +
    +
    + + + module + type + With8 + = With7(With6).T + with + module + M = + With5 + and + type + M.N.t = + With5.N.t + + + +
    +
    +
    +
    + + module + With9 + : sig ... + end + + +
    +
    +
    +
    + + module + With10 + : sig ... + end + + +
    +
    +
    +
    + + + module + type + + With11 + = + With7(With10).T + with + module + M = + With9 + and + type + N.t = + int + + + +
    +
    +
    +
    + + + module + type + + + NestedInclude1 + + = sig ... + end + + +
    +
    +
    +
    + + + include + NestedInclude1 + + + +
    +
    + + + module + type + + + NestedInclude2 + + + = sig ... + end + + +
    +
    +
    +
    +
    +
    + + + include + NestedInclude2 + with + type + + nested_include + = int + + + + +
    +
    + + type nested_include + = int + +
    +
    +
    +
    +
    +
    + + module + DoubleInclude1 + : sig ... + end + + +
    +
    +
    +
    + + module + DoubleInclude3 + : sig ... + end + + +
    +
    +
    +
    + + + include + module type + of + + DoubleInclude3.DoubleInclude2 + + + + +
    +
    + + type double_include + +
    +
    +
    +
    +
    +
    + + module + IncludeInclude1 + + : sig ... + end + + +
    +
    +
    +
    + + + include + module type + of + IncludeInclude1 + + + +
    +
    + + + module + type + + + IncludeInclude2 + + + = sig ... + end + + +
    +
    +
    +
    +
    +
    + + + include + IncludeInclude2 + + + + +
    +
    + + type include_include + +
    +
    +
    +
    +

    Trying + the {!modules: ...} command. +

    +

    With ocamldoc, toplevel units will be linked and documented, while + submodules will behave as simple references. +

    +

    With odoc, everything should be resolved (and linked) but only + toplevel units will be documented. +

    + +

    + + Weirder usages involving module types +

    +
    • IncludeInclude1.IncludeInclude2
    • +
    • Dep4.T
    • +
    • A.Q
    • +
    +

    + Playing + with @canonical paths +

    +
    +
    + + module + CanonicalTest + : sig ... + end + + +
    +
    + +

    Aliases again

    +
    +
    + + module + Aliases + : sig ... + end + + +

    Let's imitate jst's layout.

    +
    +

    + Section title + splicing +

    I can refer to

    +

    But also to things in submodules:

    +
      +
    • {!section:SuperSig.SubSigA.subSig} : + SuperSig.SubSigA.subSig +
    • +
    • {!Aliases.incl} : + Aliases:incl +
    • +

    And just to make sure we do not mess up:

    +
      +
    • {{!section:indexmodules}A} : + A +
    • {{!aliases}B} : B
    • +
    • {{!section:SuperSig.SubSigA.subSig}C} : + C +
    • +
    • {{!Aliases.incl}D} : + D +
    • +
    +

    + New reference + syntax +

    +
    +
    + + + module + type + M + = sig ... + end + + +
    +
    +
    +
    + + module + M + : sig ... + end + + +
    +

    Here goes:

    +
      +
    • {!module-M.t} : + M.t +
    • +
    • {!module-type-M.t} : + M.t +
    • +
    +
    +
    + + module + Only_a_module + : sig ... + end + + +
    +

    Some here should fail:

    + +
    +
    + + + module + type + + TypeExt + = sig ... + end + + +
    +
    +
    +
    + + type new_t + = .. + +
    +
    +
    +
    + + + type new_t + += + + + + + + +
    + | C + +
    +
    +
    +
    +
    + + + module + type + + + TypeExtPruned + + = TypeExt + with + type + t := + new_t + + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent-X.html b/test/generators/html/Recent-X.html new file mode 100644 index 0000000000..e6dd225e1d --- /dev/null +++ b/test/generators/html/Recent-X.html @@ -0,0 +1,59 @@ + + + X (Recent.X) + + + + + + + +
    +

    Module Recent.X

    +
    +
    +
    +
    + + + module L := + Z.Y + + +
    +
    +
    +
    + + type t + = + int Z.Y.X.t + + +
    +
    +
    +
    + + type u + := int + +
    +
    +
    +
    + + type v + = + u + Z.Y.X.t + + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent-Z-Y-X.html b/test/generators/html/Recent-Z-Y-X.html new file mode 100644 index 0000000000..a8a5b3844b --- /dev/null +++ b/test/generators/html/Recent-Z-Y-X.html @@ -0,0 +1,27 @@ + + + X (Recent.Z.Y.X) + + + + + + + + +

    Module Y.X

    +
    +
    +
    +
    + + type 'a t + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent-Z-Y.html b/test/generators/html/Recent-Z-Y.html new file mode 100644 index 0000000000..89b9d20e8c --- /dev/null +++ b/test/generators/html/Recent-Z-Y.html @@ -0,0 +1,30 @@ + + + Y (Recent.Z.Y) + + + + + + + +

    Module Z.Y

    +
    +
    +
    +
    + + module + X + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent-Z.html b/test/generators/html/Recent-Z.html new file mode 100644 index 0000000000..abe9373fd4 --- /dev/null +++ b/test/generators/html/Recent-Z.html @@ -0,0 +1,30 @@ + + + Z (Recent.Z) + + + + + + + +
    +

    Module Recent.Z

    +
    +
    +
    +
    + + module + Y + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent-module-type-PolyS.html b/test/generators/html/Recent-module-type-PolyS.html new file mode 100644 index 0000000000..7252cc31e3 --- /dev/null +++ b/test/generators/html/Recent-module-type-PolyS.html @@ -0,0 +1,40 @@ + + + PolyS (Recent.PolyS) + + + + + + + + +
    +

    Module type Recent.PolyS

    +
    +
    +
    +
    + + type t = + [ + + + + + + + + +
    + | `A +
    + | `B +
    ] +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent-module-type-S.html b/test/generators/html/Recent-module-type-S.html new file mode 100644 index 0000000000..01c98bc5da --- /dev/null +++ b/test/generators/html/Recent-module-type-S.html @@ -0,0 +1,17 @@ + + + S (Recent.S) + + + + + + + +
    +

    Module type Recent.S

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent-module-type-S1-argument-1-_.html b/test/generators/html/Recent-module-type-S1-argument-1-_.html new file mode 100644 index 0000000000..d798dc3118 --- /dev/null +++ b/test/generators/html/Recent-module-type-S1-argument-1-_.html @@ -0,0 +1,19 @@ + + + _ (Recent.S1.1-_) + + + + + + + + +
    +

    Parameter S1.1-_

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent-module-type-S1.html b/test/generators/html/Recent-module-type-S1.html new file mode 100644 index 0000000000..ab90be6eee --- /dev/null +++ b/test/generators/html/Recent-module-type-S1.html @@ -0,0 +1,36 @@ + + + S1 (Recent.S1) + + + + + + + +
    +

    Module type Recent.S1

    +
    + +
    +

    Parameters +

    +
    +
    + + module + _ + : S + +
    +
    +

    Signature

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent.html b/test/generators/html/Recent.html new file mode 100644 index 0000000000..0750f9290f --- /dev/null +++ b/test/generators/html/Recent.html @@ -0,0 +1,336 @@ + + + Recent (Recent) + + + + + + +
    +

    Module Recent

    +
    +
    +
    +
    + + + module + type + S + = sig ... + end + + +
    +
    +
    +
    + + + module + type + S1 + = functor + (_ + : S) + -> + S + + +
    +
    +
    +
    + + type variant + = + + + + + + + + + + + + + + + + + + + +
    + + | A + +
    + + | + B + of int + + +
    + + | C + + (*

    foo

    + *) +
    + + | D + + (* +

    bar

    *) +
    + + | + E + of + { + + + + + +
    + + a : int; +
    } +
    +
    +
    +
    +
    + + type _ gadt + = + + + + + + + + + + + + +
    + + | + A : + int gadt + + +
    + + | + B : int + -> + string gadt + + + (*

    foo

    + *) +
    + + | + C : { + + + + + +
    + + a : int; +
    + } + -> + unit gadt + + +
    +
    +
    +
    +
    + + type polymorphic_variant + = [ + + + + + + + + + + + + + + + + +
    + + | `A +
    + + | + `B of int +
    + + | `C + (*

    foo

    + *) +
    + + | `D + (*

    bar

    + *) +
    ] +
    +
    +
    +
    + + type empty_variant + = | + +
    +
    +
    +
    + + + type + nonrec nonrec_ + = int + +
    +
    +
    +
    + + type empty_conj + = + + + + + +
    + + | + X : + [< + `X of & 'a & int + * float + ] + -> + empty_conj + + +
    +
    +
    +
    +
    + + type conj + = + + + + + +
    + + | + X : + [< + `X of int & + [< `B of int & float ] + ] + -> + conj + + +
    +
    +
    +
    +
    + + + val empty_conj : + [< + `X of & 'a & int * float + ] + + + +
    +
    +
    +
    + + + val conj : + [< + `X of int & + [< `B of int & float ] + ] + + + +
    +
    +
    +
    + + module + Z + : sig ... + end + + +
    +
    +
    +
    + + module + X + : sig ... + end + + +
    +
    +
    +
    + + + module + type + PolyS + = sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent_impl-B.html b/test/generators/html/Recent_impl-B.html new file mode 100644 index 0000000000..13883db938 --- /dev/null +++ b/test/generators/html/Recent_impl-B.html @@ -0,0 +1,36 @@ + + + B (Recent_impl.B) + + + + + + + + +
    +

    Module Recent_impl.B

    +
    +
    +
    +
    + + type t = + + + + + +
    + + | B + +
    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent_impl-Foo-A.html b/test/generators/html/Recent_impl-Foo-A.html new file mode 100644 index 0000000000..351c17ef6b --- /dev/null +++ b/test/generators/html/Recent_impl-Foo-A.html @@ -0,0 +1,37 @@ + + + A (Recent_impl.Foo.A) + + + + + + + + +
    +

    Module Foo.A

    +
    +
    +
    +
    + + type t = + + + + + +
    + + | A + +
    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent_impl-Foo-B.html b/test/generators/html/Recent_impl-Foo-B.html new file mode 100644 index 0000000000..b7d13d488b --- /dev/null +++ b/test/generators/html/Recent_impl-Foo-B.html @@ -0,0 +1,37 @@ + + + B (Recent_impl.Foo.B) + + + + + + + + +
    +

    Module Foo.B

    +
    +
    +
    +
    + + type t = + + + + + +
    + + | B + +
    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent_impl-Foo.html b/test/generators/html/Recent_impl-Foo.html new file mode 100644 index 0000000000..43e90bffa3 --- /dev/null +++ b/test/generators/html/Recent_impl-Foo.html @@ -0,0 +1,42 @@ + + + Foo (Recent_impl.Foo) + + + + + + + + +
    +

    Module Recent_impl.Foo

    +
    +
    +
    +
    + + module + A + : sig ... + end + + +
    +
    +
    +
    + + module + B + : sig ... + end + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent_impl-module-type-S-F-argument-1-_.html b/test/generators/html/Recent_impl-module-type-S-F-argument-1-_.html new file mode 100644 index 0000000000..a94b4ac341 --- /dev/null +++ b/test/generators/html/Recent_impl-module-type-S-F-argument-1-_.html @@ -0,0 +1,20 @@ + + + _ (Recent_impl.S.F.1-_) + + + + + + + + +
    +

    Parameter F.1-_

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent_impl-module-type-S-F.html b/test/generators/html/Recent_impl-module-type-S-F.html new file mode 100644 index 0000000000..39aab55c66 --- /dev/null +++ b/test/generators/html/Recent_impl-module-type-S-F.html @@ -0,0 +1,46 @@ + + + F (Recent_impl.S.F) + + + + + + + + +

    Module S.F

    +
    + +
    +

    Parameters +

    +
    +
    + + module + _ + + : sig ... + end + + +
    +
    +

    Signature

    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent_impl-module-type-S-X.html b/test/generators/html/Recent_impl-module-type-S-X.html new file mode 100644 index 0000000000..a0ad19b702 --- /dev/null +++ b/test/generators/html/Recent_impl-module-type-S-X.html @@ -0,0 +1,18 @@ + + + X (Recent_impl.S.X) + + + + + + + + +

    Module S.X

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent_impl-module-type-S.html b/test/generators/html/Recent_impl-module-type-S.html new file mode 100644 index 0000000000..3e2079f91a --- /dev/null +++ b/test/generators/html/Recent_impl-module-type-S.html @@ -0,0 +1,54 @@ + + + S (Recent_impl.S) + + + + + + + + +
    +

    Module type Recent_impl.S

    +
    +
    +
    +
    + + module + F + (_ + : sig ... + end) : sig + ... end + + +
    +
    +
    +
    + + module + X + : sig ... + end + + +
    +
    +
    +
    + + + val f : + F(X).t + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Recent_impl.html b/test/generators/html/Recent_impl.html new file mode 100644 index 0000000000..d2b2aa062c --- /dev/null +++ b/test/generators/html/Recent_impl.html @@ -0,0 +1,66 @@ + + + Recent_impl (Recent_impl) + + + + + + + +
    +

    Module Recent_impl

    +
    +
    +
    +
    + + module + Foo + : sig ... + end + + +
    +
    +
    +
    + + module + B + : sig ... + end + + +
    +
    +
    +
    + + type u +
    +
    +
    +
    + + + module + type + S + = sig ... + end + + +
    +
    +
    +
    + + module B' + = Foo.B + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Section.html b/test/generators/html/Section.html new file mode 100644 index 0000000000..dfb85e7b22 --- /dev/null +++ b/test/generators/html/Section.html @@ -0,0 +1,74 @@ + + + Section (Section) + + + + + + + +
    +

    Module Section

    +

    This is the module comment. Eventually, sections won't be allowed + in it. +

    +
    + +
    +

    + Empty section +

    +

    Text only

    +

    Foo bar.

    +

    Aside only +

    Foo bar.

    +

    Value only +

    +
    +
    + + val foo : unit +
    +
    +

    + Empty section +

    +

    + within a comment +

    +

    + and one + with a nested section +

    +

    + This + section title has markup +

    +

    But links are impossible thanks to the parser, so we never have + trouble rendering a section title in a table of contents – no + link will be nested inside another link. +

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Stop-N.html b/test/generators/html/Stop-N.html new file mode 100644 index 0000000000..ac2abcc72b --- /dev/null +++ b/test/generators/html/Stop-N.html @@ -0,0 +1,25 @@ + + + N (Stop.N) + + + + + + + +
    +

    Module Stop.N

    +
    +
    +
    +
    + + val quux : int +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Stop.html b/test/generators/html/Stop.html new file mode 100644 index 0000000000..2857f1cea2 --- /dev/null +++ b/test/generators/html/Stop.html @@ -0,0 +1,51 @@ + + + Stop (Stop) + + + + + + +
    +

    Module Stop

    +

    This test cases exercises stop comments.

    +
    +
    +
    +
    + + val foo : int +

    This is normal commented text.

    +
    +

    The next value is bar, and it should be missing from + the documentation. There is also an entire module, M + , which should also be hidden. It contains a nested stop comment, + but that stop comment should not turn documentation back on in this + outer module, because stop comments respect scope. +

    Documentation is on again.

    +

    Now, we have a nested module, and it has a stop comment between + its two items. We want to see that the first item is displayed, + but the second is missing, and the stop comment disables documenation + only in that module, and not in this outer module. +

    +
    +
    + + module + N + : sig ... + end + + +
    +
    +
    +
    + + val lol : int +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Stop_dead_link_doc-Foo.html b/test/generators/html/Stop_dead_link_doc-Foo.html new file mode 100644 index 0000000000..50330538b2 --- /dev/null +++ b/test/generators/html/Stop_dead_link_doc-Foo.html @@ -0,0 +1,27 @@ + + + Foo (Stop_dead_link_doc.Foo) + + + + + + + + +
    +

    Module Stop_dead_link_doc.Foo

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Stop_dead_link_doc.html b/test/generators/html/Stop_dead_link_doc.html new file mode 100644 index 0000000000..172b3c466b --- /dev/null +++ b/test/generators/html/Stop_dead_link_doc.html @@ -0,0 +1,146 @@ + + + Stop_dead_link_doc (Stop_dead_link_doc) + + + + + + + +
    +

    Module Stop_dead_link_doc

    +
    +
    +
    +
    + + module + Foo + : sig ... + end + + +
    +
    +
    +
    + + type foo = + + + + + +
    + + | + Bar + of + Foo.t + + +
    +
    +
    +
    +
    + + type bar = + + + + + +
    + + | + Bar + of + { + + + + + +
    + + + field : + Foo.t; + + +
    } +
    +
    +
    +
    +
    + + type foo_ + = + + + + + +
    + + | + Bar_ + of int * + Foo.t * int + + +
    +
    +
    +
    +
    + + type bar_ + = + + + + + +
    + + | + Bar__ + of + Foo.t option + + + +
    +
    +
    +
    +
    + + type another_foo +
    +
    +
    +
    + + type another_bar +
    +
    +
    +
    + + type another_foo_ +
    +
    +
    +
    + + type another_bar_ +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Toplevel_comments-Alias.html b/test/generators/html/Toplevel_comments-Alias.html new file mode 100644 index 0000000000..e3cf587c48 --- /dev/null +++ b/test/generators/html/Toplevel_comments-Alias.html @@ -0,0 +1,27 @@ + + + Alias (Toplevel_comments.Alias) + + + + + + + + +
    +

    Module Toplevel_comments.Alias

    +

    Doc of Alias.

    Doc of T, part 2.

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Toplevel_comments-Include_inline'.html b/test/generators/html/Toplevel_comments-Include_inline'.html new file mode 100644 index 0000000000..0c5a359308 --- /dev/null +++ b/test/generators/html/Toplevel_comments-Include_inline'.html @@ -0,0 +1,31 @@ + + + Include_inline' (Toplevel_comments.Include_inline') + + + + + + + + +
    +

    Module Toplevel_comments.Include_inline' +

    Doc of Include_inline, part 1.

    +

    Doc of Include_inline, part 2.

    +
    +
    +

    part 3

    +
    +
    + + type t +
    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Toplevel_comments-Include_inline.html b/test/generators/html/Toplevel_comments-Include_inline.html new file mode 100644 index 0000000000..1b6349bd0a --- /dev/null +++ b/test/generators/html/Toplevel_comments-Include_inline.html @@ -0,0 +1,30 @@ + + + Include_inline (Toplevel_comments.Include_inline) + + + + + + + + +
    +

    Module Toplevel_comments.Include_inline

    +

    Doc of T, part 2.

    +
    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Toplevel_comments-M''.html b/test/generators/html/Toplevel_comments-M''.html new file mode 100644 index 0000000000..e7303fac7f --- /dev/null +++ b/test/generators/html/Toplevel_comments-M''.html @@ -0,0 +1,20 @@ + + + M'' (Toplevel_comments.M'') + + + + + + + + +
    +

    Module Toplevel_comments.M''

    +

    Doc of M'', part 1.

    +

    Doc of M'', part 2.

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Toplevel_comments-M'.html b/test/generators/html/Toplevel_comments-M'.html new file mode 100644 index 0000000000..1aa5511407 --- /dev/null +++ b/test/generators/html/Toplevel_comments-M'.html @@ -0,0 +1,19 @@ + + + M' (Toplevel_comments.M') + + + + + + + + +
    +

    Module Toplevel_comments.M'

    +

    Doc of M' from outside

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Toplevel_comments-M.html b/test/generators/html/Toplevel_comments-M.html new file mode 100644 index 0000000000..083310f0b7 --- /dev/null +++ b/test/generators/html/Toplevel_comments-M.html @@ -0,0 +1,19 @@ + + + M (Toplevel_comments.M) + + + + + + + + +
    +

    Module Toplevel_comments.M

    +

    Doc of M

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Toplevel_comments-Ref_in_synopsis.html b/test/generators/html/Toplevel_comments-Ref_in_synopsis.html new file mode 100644 index 0000000000..24ac19ff4c --- /dev/null +++ b/test/generators/html/Toplevel_comments-Ref_in_synopsis.html @@ -0,0 +1,31 @@ + + + Ref_in_synopsis (Toplevel_comments.Ref_in_synopsis) + + + + + + + + +
    +

    Module Toplevel_comments.Ref_in_synopsis +

    t.

    +

    This reference should resolve in the context of this module, even + when used as a synopsis. +

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Toplevel_comments-class-c1.html b/test/generators/html/Toplevel_comments-class-c1.html new file mode 100644 index 0000000000..1111a93ed6 --- /dev/null +++ b/test/generators/html/Toplevel_comments-class-c1.html @@ -0,0 +1,20 @@ + + + c1 (Toplevel_comments.c1) + + + + + + + + +
    +

    Class Toplevel_comments.c1

    +

    Doc of c1, part 1.

    +

    Doc of c1, part 2.

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Toplevel_comments-class-c2.html b/test/generators/html/Toplevel_comments-class-c2.html new file mode 100644 index 0000000000..38d872e24d --- /dev/null +++ b/test/generators/html/Toplevel_comments-class-c2.html @@ -0,0 +1,19 @@ + + + c2 (Toplevel_comments.c2) + + + + + + + + +
    +

    Class Toplevel_comments.c2

    +

    Doc of c2.

    Doc of ct, part 2.

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Toplevel_comments-class-type-ct.html b/test/generators/html/Toplevel_comments-class-type-ct.html new file mode 100644 index 0000000000..dec376846b --- /dev/null +++ b/test/generators/html/Toplevel_comments-class-type-ct.html @@ -0,0 +1,20 @@ + + + ct (Toplevel_comments.ct) + + + + + + + + +
    +

    Class type Toplevel_comments.ct

    +

    Doc of ct, part 1.

    +

    Doc of ct, part 2.

    +
    + + \ No newline at end of file diff --git a/test/generators/html/Toplevel_comments-module-type-Include_inline_T'.html b/test/generators/html/Toplevel_comments-module-type-Include_inline_T'.html new file mode 100644 index 0000000000..2f03ddcc67 --- /dev/null +++ b/test/generators/html/Toplevel_comments-module-type-Include_inline_T'.html @@ -0,0 +1,32 @@ + + + Include_inline_T' (Toplevel_comments.Include_inline_T') + + + + + + + + +
    +

    Module type + Toplevel_comments.Include_inline_T' +

    Doc of Include_inline_T', part 1.

    +

    Doc of Include_inline_T', part 2.

    +
    +
    +

    part 3

    +
    +
    + + type t +
    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Toplevel_comments-module-type-Include_inline_T.html b/test/generators/html/Toplevel_comments-module-type-Include_inline_T.html new file mode 100644 index 0000000000..ff08b4f67e --- /dev/null +++ b/test/generators/html/Toplevel_comments-module-type-Include_inline_T.html @@ -0,0 +1,31 @@ + + + Include_inline_T (Toplevel_comments.Include_inline_T) + + + + + + + + +
    +

    Module type + Toplevel_comments.Include_inline_T +

    Doc of T, part 2.

    +
    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Toplevel_comments-module-type-T.html b/test/generators/html/Toplevel_comments-module-type-T.html new file mode 100644 index 0000000000..e91317819b --- /dev/null +++ b/test/generators/html/Toplevel_comments-module-type-T.html @@ -0,0 +1,27 @@ + + + T (Toplevel_comments.T) + + + + + + + + +
    +

    Module type Toplevel_comments.T

    +

    Doc of T, part 1.

    Doc of T, part 2.

    +
    +
    +
    +
    + + type t +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Toplevel_comments.html b/test/generators/html/Toplevel_comments.html new file mode 100644 index 0000000000..40370cc488 --- /dev/null +++ b/test/generators/html/Toplevel_comments.html @@ -0,0 +1,200 @@ + + + Toplevel_comments (Toplevel_comments) + + + + + + + +
    +

    Module Toplevel_comments

    +

    A doc comment at the beginning of a module is considered to be + that module's doc. +

    +
    +
    +
    +
    + + + module + type + + T + = sig ... + end + + +

    Doc of T, part 1.

    +
    +
    +
    + + module + + Include_inline + + : sig ... + end + + +

    Doc of T, part 2.

    +
    +
    +
    + + module + + Include_inline' + + : sig ... + end + + +
    +

    Doc of Include_inline, part 1.

    +
    +
    +
    +
    + + + module + type + + + + Include_inline_T + + + = sig ... + end + + +

    Doc of T, part 2.

    +
    +
    +
    + + + module + type + + + + Include_inline_T' + + + = sig ... + end + + +
    +
    +

    Doc of Include_inline_T', part 1.

    +
    +
    +
    +
    + + module + M + : sig ... + end + + +

    Doc of M

    +
    +
    +
    + + module + M' + : sig ... + end + + +
    +

    Doc of M' from outside

    +
    +
    +
    + + module + M'' + : sig ... + end + + +

    Doc of M'', part 1.

    +
    +
    +
    + + module + Alias + : T + +

    Doc of Alias.

    +
    +
    +
    + + class + c1 + : int -> + object ... + end + + +

    Doc of c1, part 1.

    +
    +
    +
    + + + class + type + + ct + = object ... + end + + +

    Doc of ct, part 1.

    +
    +
    +
    + + class + c2 + : ct + +

    Doc of c2.

    +
    +
    +
    + + module + + Ref_in_synopsis + + : sig ... + end + + +
    +
    +

    + t + . +

    +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Type-module-type-X.html b/test/generators/html/Type-module-type-X.html new file mode 100644 index 0000000000..fbb496bf25 --- /dev/null +++ b/test/generators/html/Type-module-type-X.html @@ -0,0 +1,31 @@ + + + X (Type.X) + + + + + + + +
    +

    Module type Type.X

    +
    +
    +
    +
    + + type t +
    +
    +
    +
    + + type u +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Type.html b/test/generators/html/Type.html new file mode 100644 index 0000000000..88e15227ec --- /dev/null +++ b/test/generators/html/Type.html @@ -0,0 +1,876 @@ + + + Type (Type) + + + + + + +
    +

    Module Type

    +
    +
    +
    +
    + + type abstract +

    Some documentation.

    +
    +
    +
    + + type alias + = int + +
    +
    +
    +
    + + type private_ + = private int + +
    +
    +
    +
    + + + type 'a constructor + = 'a + +
    +
    +
    +
    + + type arrow + = int -> int + + +
    +
    +
    +
    + + type higher_order + = + + (int -> int) + -> + int + + +
    +
    +
    +
    + + type labeled + = l:int -> int + + +
    +
    +
    +
    + + type optional + = ?l:int -> int + + +
    +
    +
    +
    + + + type labeled_higher_order + = + + (l:int -> int) + -> + + + (?l:int -> int) + -> + int + + +
    +
    +
    +
    + + type pair + = int * int + +
    +
    +
    +
    + + type parens_dropped + = int * int + +
    +
    +
    +
    + + type triple + = int * int * int + +
    +
    +
    +
    + + type nested_pair + = (int * int) * int + +
    +
    +
    +
    + + type instance + = int constructor + + +
    +
    +
    +
    + + type long + = + labeled_higher_order + -> + + + [ `Bar + | `Baz of triple + ] + -> + + pair + -> + + labeled + -> + + higher_order + -> + + + (string -> int) + -> + + + (int, float, char, string, char, unit) + CamlinternalFormatBasics + .fmtty + -> + + nested_pair + -> + + arrow + -> + string -> + nested_pair array + + +
    +
    +
    +
    + + type variant_e + = { + + + + + +
    + + a : int; +
    } +
    +
    +
    +
    + + type variant + = + + + + + + + + + + + + + + + + + + + +
    + + | A + +
    + + | + B + of int + + +
    + + | C + + (*

    foo

    + *) +
    + + | D + + (* +

    bar

    *) +
    + + | + E + of + variant_e + + +
    +
    +
    +
    +
    + + type variant_c + = { + + + + + +
    + + a : int; +
    } +
    +
    +
    +
    + + type _ gadt + = + + + + + + + + + + + +
    + + | + A : + int gadt + + +
    + + | + B : int + -> + string gadt + + +
    + + | + C : + variant_c + -> + unit gadt + + +
    +
    +
    +
    +
    + + type degenerate_gadt + = + + + + + +
    + + | + A : + degenerate_gadt + + +
    +
    +
    +
    +
    + + type private_variant + = private + + + + + +
    + + | A + +
    +
    +
    +
    +
    + + type record + = { + + + + + + + + + + + + + + + + + + + +
    + + a : int; +
    + + mutable b : int; + +
    + + c : int; + (*

    foo

    + *) +
    + + d : int; + (* +

    bar

    *) +
    + + e : a. 'a; +
    } +
    +
    +
    +
    + + type polymorphic_variant + = [ + + + + + + + + + + + + + + +
    + + | `A +
    + + | + `B of int +
    + + | + `C of int * unit + +
    + + | `D +
    ] +
    +
    +
    +
    + + + type polymorphic_variant_extension + = [ + + + + + + + + +
    + + | + + polymorphic_variant + + +
    + + | `E +
    ] +
    +
    +
    +
    + + + type nested_polymorphic_variant + = [ + + + + + +
    + + | + + `A of + [ `B | `C ] + + +
    ] +
    +
    +
    +
    + + + type private_extenion#row + +
    +
    +
    +
    + + and private_extenion + = private + [> + + + + + +
    + + | + + polymorphic_variant + + +
    ] +
    +
    +
    +
    + + type object_ + = < a : int; b : int; c : int; > + +
    +
    +
    +
    + + + module + type + X + = sig ... + end + + +
    +
    +
    +
    + + type module_ + = + (module + X) + + + +
    +
    +
    +
    + + type module_substitution + = + (module + X + with type + t = int + and type + u = unit) + + + +
    +
    +
    +
    + + + type +'a covariant + + +
    +
    +
    +
    + + + type -'a contravariant + + +
    +
    +
    +
    + + + type _ bivariant + = int + +
    +
    +
    +
    + + + type ('a, 'b) binary + + +
    +
    +
    +
    + + type using_binary + = + (int, int) binary + + + +
    +
    +
    +
    + + + type 'custom name + + +
    +
    +
    +
    + + + type 'a constrained + = 'a + constraint + 'a = int + + +
    +
    +
    +
    + + + type 'a exact_variant + = 'a + constraint + 'a = + [ `A | `B of int ] + + +
    +
    +
    +
    + + + type 'a lower_variant + = 'a + constraint + 'a = + [> `A | `B of int ] + + +
    +
    +
    +
    + + + type 'a any_variant + = 'a + constraint + 'a = [> ] + + +
    +
    +
    +
    + + + type 'a upper_variant + = 'a + constraint + 'a = + [< `A | `B of int ] + + +
    +
    +
    +
    + + + type 'a named_variant + = 'a + constraint + 'a = + [< + polymorphic_variant ] + + + +
    +
    +
    +
    + + + type 'a exact_object + = 'a + constraint + 'a = + < a : int; b : int; > + + +
    +
    +
    +
    + + + type 'a lower_object + = 'a + constraint + 'a = + < a : int; b : int; .. > + + +
    +
    +
    +
    + + + type 'a poly_object + = 'a + constraint + 'a = + < a : a. 'a; > + + +
    +
    +
    +
    + + + type + ('a, 'b) double_constrained + + = 'a * + 'b + + constraint + 'a = int + constraint + 'b = unit + + +
    +
    +
    +
    + + type as_ + = int as 'a * + 'a + + +
    +
    +
    +
    + + type extensible + = .. + +
    +
    +
    +
    + + type + extensible += + + + + + + + + + + + +
    + + | + Extension + + (* +

    Documentation for + Extension. +

    *) +
    + + | + Another_extension + + (* +

    Documentation for + + Another_extension + . +

    *) +
    +
    +
    +
    +
    + + type mutually + = + + + + + +
    + + | + A + of + recursive + + +
    +
    +
    +
    +
    + + and recursive + = + + + + + +
    + + | + B + of + mutually + + +
    +
    +
    +
    +
    + + exception + Foo + of int * int + + +
    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/Val.html b/test/generators/html/Val.html new file mode 100644 index 0000000000..678b5b53f5 --- /dev/null +++ b/test/generators/html/Val.html @@ -0,0 +1,37 @@ + + + Val (Val) + + + + + + +

    Module Val

    +
    +
    +
    +
    + + val documented : unit + +

    Foo.

    +
    +
    +
    + + val undocumented : unit + +
    +
    +
    +
    + + + val documented_above : unit + +

    Bar.

    +
    +
    + + \ No newline at end of file diff --git a/test/generators/html/alias.targets b/test/generators/html/alias.targets new file mode 100644 index 0000000000..7ad040d012 --- /dev/null +++ b/test/generators/html/alias.targets @@ -0,0 +1,3 @@ +Alias.html +Alias-Foo__X.html +Alias-X.html diff --git a/test/generators/html/bugs.targets b/test/generators/html/bugs.targets new file mode 100644 index 0000000000..7fb196cee1 --- /dev/null +++ b/test/generators/html/bugs.targets @@ -0,0 +1 @@ +Bugs.html diff --git a/test/generators/html/bugs_post_406.targets b/test/generators/html/bugs_post_406.targets new file mode 100644 index 0000000000..cbcd254724 --- /dev/null +++ b/test/generators/html/bugs_post_406.targets @@ -0,0 +1,3 @@ +Bugs_post_406.html +Bugs_post_406-class-type-let_open.html +Bugs_post_406-class-let_open'.html diff --git a/test/generators/html/bugs_pre_410.targets b/test/generators/html/bugs_pre_410.targets new file mode 100644 index 0000000000..cfd73e1f5a --- /dev/null +++ b/test/generators/html/bugs_pre_410.targets @@ -0,0 +1 @@ +Bugs_pre_410.html diff --git a/test/generators/html/class.targets b/test/generators/html/class.targets new file mode 100644 index 0000000000..f9c3beec5d --- /dev/null +++ b/test/generators/html/class.targets @@ -0,0 +1,10 @@ +Class.html +Class-class-type-empty.html +Class-class-type-mutually.html +Class-class-type-recursive.html +Class-class-mutually'.html +Class-class-recursive'.html +Class-class-type-empty_virtual.html +Class-class-empty_virtual'.html +Class-class-type-polymorphic.html +Class-class-polymorphic'.html diff --git a/test/generators/html/external.targets b/test/generators/html/external.targets new file mode 100644 index 0000000000..1b90e1649b --- /dev/null +++ b/test/generators/html/external.targets @@ -0,0 +1 @@ +External.html diff --git a/test/generators/html/functor.targets b/test/generators/html/functor.targets new file mode 100644 index 0000000000..a5e87c3efb --- /dev/null +++ b/test/generators/html/functor.targets @@ -0,0 +1,13 @@ +Functor.html +Functor-module-type-S.html +Functor-module-type-S1.html +Functor-module-type-S1-argument-1-_.html +Functor-F1.html +Functor-F1-argument-1-Arg.html +Functor-F2.html +Functor-F2-argument-1-Arg.html +Functor-F3.html +Functor-F3-argument-1-Arg.html +Functor-F4.html +Functor-F4-argument-1-Arg.html +Functor-F5.html diff --git a/test/generators/html/functor2.targets b/test/generators/html/functor2.targets new file mode 100644 index 0000000000..7dfb6565c7 --- /dev/null +++ b/test/generators/html/functor2.targets @@ -0,0 +1,8 @@ +Functor2.html +Functor2-module-type-S.html +Functor2-X.html +Functor2-X-argument-1-Y.html +Functor2-X-argument-2-Z.html +Functor2-module-type-XF.html +Functor2-module-type-XF-argument-1-Y.html +Functor2-module-type-XF-argument-2-Z.html diff --git a/test/generators/html/include.targets b/test/generators/html/include.targets new file mode 100644 index 0000000000..ef9feac34e --- /dev/null +++ b/test/generators/html/include.targets @@ -0,0 +1,7 @@ +Include.html +Include-module-type-Not_inlined.html +Include-module-type-Inlined.html +Include-module-type-Not_inlined_and_closed.html +Include-module-type-Not_inlined_and_opened.html +Include-module-type-Inherent_Module.html +Include-module-type-Dorminant_Module.html diff --git a/test/generators/html/include2.targets b/test/generators/html/include2.targets new file mode 100644 index 0000000000..daa82b79d8 --- /dev/null +++ b/test/generators/html/include2.targets @@ -0,0 +1,5 @@ +Include2.html +Include2-X.html +Include2-Y.html +Include2-Y_include_synopsis.html +Include2-Y_include_doc.html diff --git a/test/generators/html/include_sections.targets b/test/generators/html/include_sections.targets new file mode 100644 index 0000000000..0390f5b806 --- /dev/null +++ b/test/generators/html/include_sections.targets @@ -0,0 +1,2 @@ +Include_sections.html +Include_sections-module-type-Something.html diff --git a/test/generators/html/interlude.targets b/test/generators/html/interlude.targets new file mode 100644 index 0000000000..28faaa65be --- /dev/null +++ b/test/generators/html/interlude.targets @@ -0,0 +1 @@ +Interlude.html diff --git a/test/generators/html/labels.targets b/test/generators/html/labels.targets new file mode 100644 index 0000000000..5592fade29 --- /dev/null +++ b/test/generators/html/labels.targets @@ -0,0 +1,5 @@ +Labels.html +Labels-A.html +Labels-module-type-S.html +Labels-class-c.html +Labels-class-type-cs.html diff --git a/test/generators/html/markup.targets b/test/generators/html/markup.targets new file mode 100644 index 0000000000..cd93452a1c --- /dev/null +++ b/test/generators/html/markup.targets @@ -0,0 +1 @@ +Markup.html diff --git a/test/generators/html/mld.html b/test/generators/html/mld.html new file mode 100644 index 0000000000..ef5cf32a5e --- /dev/null +++ b/test/generators/html/mld.html @@ -0,0 +1,41 @@ + + + mld (mld) + + + + + + +
    +

    Mld Page

    +

    This is an .mld file. It doesn't have an auto-generated + title, like modules and other pages generated fully by odoc do. +

    It will have a TOC generated from section headings.

    +
    + +
    +

    Section

    +

    This is a section.

    Another paragraph in section.

    +

    + Another section +

    This is another section.

    Another paragraph in section 2.

    +

    Subsection +

    This is a subsection.

    Another paragraph in subsection.

    +

    Yet another paragraph in subsection.

    +

    + Another Subsection +

    This is another subsection.

    +

    Another paragraph in subsection 2.

    +

    Yet another paragraph in subsection 2.

    +
    + + \ No newline at end of file diff --git a/test/generators/html/module.targets b/test/generators/html/module.targets new file mode 100644 index 0000000000..d04281783b --- /dev/null +++ b/test/generators/html/module.targets @@ -0,0 +1,19 @@ +Module.html +Module-module-type-S.html +Module-module-type-S-M.html +Module-module-type-S2.html +Module-module-type-S2-M.html +Module-module-type-S3.html +Module-module-type-S3-M.html +Module-module-type-S4.html +Module-module-type-S4-M.html +Module-module-type-S5.html +Module-module-type-S5-M.html +Module-module-type-S6.html +Module-module-type-S6-M.html +Module-M'.html +Module-module-type-S7.html +Module-module-type-S8.html +Module-module-type-S9.html +Module-Mutually.html +Module-Recursive.html diff --git a/test/generators/html/nested.targets b/test/generators/html/nested.targets new file mode 100644 index 0000000000..2b634e63fd --- /dev/null +++ b/test/generators/html/nested.targets @@ -0,0 +1,8 @@ +Nested.html +Nested-X.html +Nested-module-type-Y.html +Nested-F.html +Nested-F-argument-1-Arg1.html +Nested-F-argument-2-Arg2.html +Nested-class-z.html +Nested-class-inherits.html diff --git a/test/generators/html/ocamlary.targets b/test/generators/html/ocamlary.targets new file mode 100644 index 0000000000..5cad19b014 --- /dev/null +++ b/test/generators/html/ocamlary.targets @@ -0,0 +1,202 @@ +Ocamlary.html +Ocamlary-Empty.html +Ocamlary-module-type-Empty.html +Ocamlary-module-type-MissingComment.html +Ocamlary-module-type-EmptySig.html +Ocamlary-module-type-EmptySigAlias.html +Ocamlary-ModuleWithSignature.html +Ocamlary-ModuleWithSignatureAlias.html +Ocamlary-One.html +Ocamlary-module-type-SigForMod.html +Ocamlary-module-type-SigForMod-Inner.html +Ocamlary-module-type-SigForMod-Inner-module-type-Empty.html +Ocamlary-module-type-SuperSig.html +Ocamlary-module-type-SuperSig-module-type-SubSigA.html +Ocamlary-module-type-SuperSig-module-type-SubSigA-SubSigAMod.html +Ocamlary-module-type-SuperSig-module-type-SubSigB.html +Ocamlary-module-type-SuperSig-module-type-EmptySig.html +Ocamlary-module-type-SuperSig-module-type-One.html +Ocamlary-module-type-SuperSig-module-type-SuperSig.html +Ocamlary-Buffer.html +Ocamlary-CollectionModule.html +Ocamlary-CollectionModule-InnerModuleA.html +Ocamlary-CollectionModule-InnerModuleA-InnerModuleA'.html +Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html +Ocamlary-CollectionModule-module-type-InnerModuleTypeA.html +Ocamlary-module-type-COLLECTION.html +Ocamlary-module-type-COLLECTION-InnerModuleA.html +Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA'.html +Ocamlary-module-type-COLLECTION-InnerModuleA-module-type-InnerModuleTypeA'.html +Ocamlary-module-type-COLLECTION-module-type-InnerModuleTypeA.html +Ocamlary-Recollection.html +Ocamlary-Recollection-argument-1-C.html +Ocamlary-Recollection-argument-1-C-InnerModuleA.html +Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA'.html +Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA'.html +Ocamlary-Recollection-argument-1-C-module-type-InnerModuleTypeA.html +Ocamlary-Recollection-InnerModuleA.html +Ocamlary-Recollection-InnerModuleA-InnerModuleA'.html +Ocamlary-Recollection-InnerModuleA-module-type-InnerModuleTypeA'.html +Ocamlary-Recollection-module-type-InnerModuleTypeA.html +Ocamlary-module-type-MMM.html +Ocamlary-module-type-MMM-C.html +Ocamlary-module-type-MMM-C-InnerModuleA.html +Ocamlary-module-type-MMM-C-InnerModuleA-InnerModuleA'.html +Ocamlary-module-type-MMM-C-InnerModuleA-module-type-InnerModuleTypeA'.html +Ocamlary-module-type-MMM-C-module-type-InnerModuleTypeA.html +Ocamlary-module-type-RECOLLECTION.html +Ocamlary-module-type-RecollectionModule.html +Ocamlary-module-type-RecollectionModule-InnerModuleA.html +Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA'.html +Ocamlary-module-type-RecollectionModule-InnerModuleA-module-type-InnerModuleTypeA'.html +Ocamlary-module-type-RecollectionModule-module-type-InnerModuleTypeA.html +Ocamlary-module-type-A.html +Ocamlary-module-type-A-Q.html +Ocamlary-module-type-A-Q-InnerModuleA.html +Ocamlary-module-type-A-Q-InnerModuleA-InnerModuleA'.html +Ocamlary-module-type-A-Q-InnerModuleA-module-type-InnerModuleTypeA'.html +Ocamlary-module-type-A-Q-module-type-InnerModuleTypeA.html +Ocamlary-module-type-B.html +Ocamlary-module-type-B-Q.html +Ocamlary-module-type-B-Q-InnerModuleA.html +Ocamlary-module-type-B-Q-InnerModuleA-InnerModuleA'.html +Ocamlary-module-type-B-Q-InnerModuleA-module-type-InnerModuleTypeA'.html +Ocamlary-module-type-B-Q-module-type-InnerModuleTypeA.html +Ocamlary-module-type-C.html +Ocamlary-module-type-C-Q.html +Ocamlary-module-type-C-Q-InnerModuleA.html +Ocamlary-module-type-C-Q-InnerModuleA-InnerModuleA'.html +Ocamlary-module-type-C-Q-InnerModuleA-module-type-InnerModuleTypeA'.html +Ocamlary-module-type-C-Q-module-type-InnerModuleTypeA.html +Ocamlary-FunctorTypeOf.html +Ocamlary-FunctorTypeOf-argument-1-Collection.html +Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA.html +Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA'.html +Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA'.html +Ocamlary-FunctorTypeOf-argument-1-Collection-module-type-InnerModuleTypeA.html +Ocamlary-module-type-IncludeModuleType.html +Ocamlary-module-type-ToInclude.html +Ocamlary-module-type-ToInclude-IncludedA.html +Ocamlary-module-type-ToInclude-module-type-IncludedB.html +Ocamlary-IncludedA.html +Ocamlary-module-type-IncludedB.html +Ocamlary-ExtMod.html +Ocamlary-class-empty_class.html +Ocamlary-class-one_method_class.html +Ocamlary-class-two_method_class.html +Ocamlary-class-param_class.html +Ocamlary-Dep1.html +Ocamlary-Dep1-module-type-S.html +Ocamlary-Dep1-module-type-S-class-c.html +Ocamlary-Dep1-X.html +Ocamlary-Dep1-X-Y.html +Ocamlary-Dep1-X-Y-class-c.html +Ocamlary-Dep2.html +Ocamlary-Dep2-argument-1-Arg.html +Ocamlary-Dep2-argument-1-Arg-X.html +Ocamlary-Dep2-A.html +Ocamlary-Dep3.html +Ocamlary-Dep4.html +Ocamlary-Dep4-module-type-T.html +Ocamlary-Dep4-module-type-S.html +Ocamlary-Dep4-module-type-S-X.html +Ocamlary-Dep4-module-type-S-Y.html +Ocamlary-Dep4-X.html +Ocamlary-Dep5.html +Ocamlary-Dep5-argument-1-Arg.html +Ocamlary-Dep5-argument-1-Arg-module-type-S.html +Ocamlary-Dep5-argument-1-Arg-module-type-S-Y.html +Ocamlary-Dep5-Z.html +Ocamlary-Dep6.html +Ocamlary-Dep6-module-type-S.html +Ocamlary-Dep6-module-type-T.html +Ocamlary-Dep6-module-type-T-module-type-R.html +Ocamlary-Dep6-module-type-T-Y.html +Ocamlary-Dep6-X.html +Ocamlary-Dep6-X-module-type-R.html +Ocamlary-Dep6-X-Y.html +Ocamlary-Dep7.html +Ocamlary-Dep7-argument-1-Arg.html +Ocamlary-Dep7-argument-1-Arg-module-type-T.html +Ocamlary-Dep7-argument-1-Arg-X.html +Ocamlary-Dep7-M.html +Ocamlary-Dep8.html +Ocamlary-Dep8-module-type-T.html +Ocamlary-Dep9.html +Ocamlary-Dep9-argument-1-X.html +Ocamlary-module-type-Dep10.html +Ocamlary-Dep11.html +Ocamlary-Dep11-module-type-S.html +Ocamlary-Dep11-module-type-S-class-c.html +Ocamlary-Dep12.html +Ocamlary-Dep12-argument-1-Arg.html +Ocamlary-Dep13.html +Ocamlary-Dep13-class-c.html +Ocamlary-module-type-With1.html +Ocamlary-module-type-With1-M.html +Ocamlary-With2.html +Ocamlary-With2-module-type-S.html +Ocamlary-With3.html +Ocamlary-With3-N.html +Ocamlary-With4.html +Ocamlary-With4-N.html +Ocamlary-With5.html +Ocamlary-With5-module-type-S.html +Ocamlary-With5-N.html +Ocamlary-With6.html +Ocamlary-With6-module-type-T.html +Ocamlary-With6-module-type-T-M.html +Ocamlary-With7.html +Ocamlary-With7-argument-1-X.html +Ocamlary-module-type-With8.html +Ocamlary-module-type-With8-M.html +Ocamlary-module-type-With8-M-module-type-S.html +Ocamlary-module-type-With8-M-N.html +Ocamlary-With9.html +Ocamlary-With9-module-type-S.html +Ocamlary-With10.html +Ocamlary-With10-module-type-T.html +Ocamlary-With10-module-type-T-M.html +Ocamlary-module-type-With11.html +Ocamlary-module-type-With11-N.html +Ocamlary-module-type-NestedInclude1.html +Ocamlary-module-type-NestedInclude1-module-type-NestedInclude2.html +Ocamlary-module-type-NestedInclude2.html +Ocamlary-DoubleInclude1.html +Ocamlary-DoubleInclude1-DoubleInclude2.html +Ocamlary-DoubleInclude3.html +Ocamlary-DoubleInclude3-DoubleInclude2.html +Ocamlary-IncludeInclude1.html +Ocamlary-IncludeInclude1-module-type-IncludeInclude2.html +Ocamlary-module-type-IncludeInclude2.html +Ocamlary-CanonicalTest.html +Ocamlary-CanonicalTest-Base__List.html +Ocamlary-CanonicalTest-Base__.html +Ocamlary-CanonicalTest-Base.html +Ocamlary-CanonicalTest-Base-List.html +Ocamlary-CanonicalTest-Base__Tests.html +Ocamlary-CanonicalTest-Base__Tests-C.html +Ocamlary-CanonicalTest-List_modif.html +Ocamlary-Aliases.html +Ocamlary-Aliases-Foo__A.html +Ocamlary-Aliases-Foo__B.html +Ocamlary-Aliases-Foo__C.html +Ocamlary-Aliases-Foo__D.html +Ocamlary-Aliases-Foo__E.html +Ocamlary-Aliases-Foo__.html +Ocamlary-Aliases-Foo.html +Ocamlary-Aliases-Foo-A.html +Ocamlary-Aliases-Foo-B.html +Ocamlary-Aliases-Foo-C.html +Ocamlary-Aliases-Foo-D.html +Ocamlary-Aliases-Foo-E.html +Ocamlary-Aliases-Std.html +Ocamlary-Aliases-E.html +Ocamlary-Aliases-P1.html +Ocamlary-Aliases-P1-Y.html +Ocamlary-Aliases-P2.html +Ocamlary-module-type-M.html +Ocamlary-M.html +Ocamlary-Only_a_module.html +Ocamlary-module-type-TypeExt.html +Ocamlary-module-type-TypeExtPruned.html diff --git a/test/generators/html/page-mld.targets b/test/generators/html/page-mld.targets new file mode 100644 index 0000000000..b4f939bf3e --- /dev/null +++ b/test/generators/html/page-mld.targets @@ -0,0 +1 @@ +mld.html diff --git a/test/generators/html/recent.targets b/test/generators/html/recent.targets new file mode 100644 index 0000000000..21edff4b78 --- /dev/null +++ b/test/generators/html/recent.targets @@ -0,0 +1,9 @@ +Recent.html +Recent-module-type-S.html +Recent-module-type-S1.html +Recent-module-type-S1-argument-1-_.html +Recent-Z.html +Recent-Z-Y.html +Recent-Z-Y-X.html +Recent-X.html +Recent-module-type-PolyS.html diff --git a/test/generators/html/recent_impl.targets b/test/generators/html/recent_impl.targets new file mode 100644 index 0000000000..aef9cdb5c1 --- /dev/null +++ b/test/generators/html/recent_impl.targets @@ -0,0 +1,9 @@ +Recent_impl.html +Recent_impl-Foo.html +Recent_impl-Foo-A.html +Recent_impl-Foo-B.html +Recent_impl-B.html +Recent_impl-module-type-S.html +Recent_impl-module-type-S-F.html +Recent_impl-module-type-S-F-argument-1-_.html +Recent_impl-module-type-S-X.html diff --git a/test/generators/html/section.targets b/test/generators/html/section.targets new file mode 100644 index 0000000000..8f1713eebb --- /dev/null +++ b/test/generators/html/section.targets @@ -0,0 +1 @@ +Section.html diff --git a/test/generators/html/stop.targets b/test/generators/html/stop.targets new file mode 100644 index 0000000000..9a8cdebe77 --- /dev/null +++ b/test/generators/html/stop.targets @@ -0,0 +1,2 @@ +Stop.html +Stop-N.html diff --git a/test/generators/html/stop_dead_link_doc.targets b/test/generators/html/stop_dead_link_doc.targets new file mode 100644 index 0000000000..84da28d516 --- /dev/null +++ b/test/generators/html/stop_dead_link_doc.targets @@ -0,0 +1,2 @@ +Stop_dead_link_doc.html +Stop_dead_link_doc-Foo.html diff --git a/test/generators/html/toplevel_comments.targets b/test/generators/html/toplevel_comments.targets new file mode 100644 index 0000000000..648430d265 --- /dev/null +++ b/test/generators/html/toplevel_comments.targets @@ -0,0 +1,14 @@ +Toplevel_comments.html +Toplevel_comments-module-type-T.html +Toplevel_comments-Include_inline.html +Toplevel_comments-Include_inline'.html +Toplevel_comments-module-type-Include_inline_T.html +Toplevel_comments-module-type-Include_inline_T'.html +Toplevel_comments-M.html +Toplevel_comments-M'.html +Toplevel_comments-M''.html +Toplevel_comments-Alias.html +Toplevel_comments-class-c1.html +Toplevel_comments-class-type-ct.html +Toplevel_comments-class-c2.html +Toplevel_comments-Ref_in_synopsis.html diff --git a/test/generators/html/type.targets b/test/generators/html/type.targets new file mode 100644 index 0000000000..23f3280245 --- /dev/null +++ b/test/generators/html/type.targets @@ -0,0 +1,2 @@ +Type.html +Type-module-type-X.html diff --git a/test/generators/html/val.targets b/test/generators/html/val.targets new file mode 100644 index 0000000000..fa8c78998a --- /dev/null +++ b/test/generators/html/val.targets @@ -0,0 +1 @@ +Val.html From 88078e911ad1f2dfb97c9c047ba312945cd614ee Mon Sep 17 00:00:00 2001 From: lubegasimon Date: Tue, 6 Jul 2021 19:19:30 +0300 Subject: [PATCH 5/8] add latex dir and promote latex files Signed-off-by: lubegasimon --- test/generators/latex/Alias.X.tex | 5 + test/generators/latex/Alias.tex | 8 + test/generators/latex/Bugs.tex | 6 + .../latex/Bugs_post_406.let_open'.tex | 3 + test/generators/latex/Bugs_post_406.tex | 8 + test/generators/latex/Bugs_pre_410.tex | 6 + .../generators/latex/Class.empty_virtual'.tex | 3 + test/generators/latex/Class.mutually'.tex | 3 + test/generators/latex/Class.polymorphic'.tex | 3 + test/generators/latex/Class.recursive'.tex | 3 + test/generators/latex/Class.tex | 20 + test/generators/latex/External.tex | 5 + test/generators/latex/Functor.F1.tex | 9 + test/generators/latex/Functor.F2.tex | 9 + test/generators/latex/Functor.F3.tex | 9 + test/generators/latex/Functor.F4.tex | 9 + test/generators/latex/Functor.F5.tex | 6 + test/generators/latex/Functor.tex | 23 + test/generators/latex/Functor2.X.tex | 14 + test/generators/latex/Functor2.tex | 20 + test/generators/latex/Include.tex | 29 + test/generators/latex/Include2.tex | 21 + test/generators/latex/Include_sections.tex | 71 ++ test/generators/latex/Interlude.tex | 22 + test/generators/latex/Labels.c.tex | 4 + test/generators/latex/Labels.tex | 58 ++ test/generators/latex/Markup.tex | 149 +++ test/generators/latex/Module.tex | 75 ++ test/generators/latex/Nested.F.tex | 25 + test/generators/latex/Nested.inherits.tex | 4 + test/generators/latex/Nested.tex | 34 + test/generators/latex/Nested.z.tex | 14 + test/generators/latex/Ocamlary.Dep12.tex | 9 + test/generators/latex/Ocamlary.Dep13.c.tex | 4 + test/generators/latex/Ocamlary.Dep13.tex | 4 + test/generators/latex/Ocamlary.Dep2.tex | 15 + test/generators/latex/Ocamlary.Dep5.Z.tex | 5 + test/generators/latex/Ocamlary.Dep5.tex | 15 + test/generators/latex/Ocamlary.Dep7.M.tex | 5 + test/generators/latex/Ocamlary.Dep7.tex | 17 + test/generators/latex/Ocamlary.Dep9.tex | 9 + .../latex/Ocamlary.FunctorTypeOf.tex | 36 + .../latex/Ocamlary.ModuleWithSignature.tex | 5 + .../Ocamlary.ModuleWithSignatureAlias.tex | 10 + .../latex/Ocamlary.Recollection.tex | 57 + test/generators/latex/Ocamlary.With3.N.tex | 4 + test/generators/latex/Ocamlary.With3.tex | 5 + test/generators/latex/Ocamlary.With4.N.tex | 4 + test/generators/latex/Ocamlary.With4.tex | 4 + test/generators/latex/Ocamlary.With7.tex | 9 + .../generators/latex/Ocamlary.empty_class.tex | 3 + .../latex/Ocamlary.one_method_class.tex | 4 + .../generators/latex/Ocamlary.param_class.tex | 4 + test/generators/latex/Ocamlary.tex | 970 ++++++++++++++++++ .../latex/Ocamlary.two_method_class.tex | 5 + test/generators/latex/Recent.tex | 78 ++ test/generators/latex/Recent_impl.B.tex | 7 + test/generators/latex/Recent_impl.tex | 32 + test/generators/latex/Section.tex | 20 + test/generators/latex/Stop.tex | 17 + test/generators/latex/Stop_dead_link_doc.tex | 28 + .../latex/Toplevel_comments.Alias.tex | 8 + .../generators/latex/Toplevel_comments.c1.tex | 7 + .../generators/latex/Toplevel_comments.c2.tex | 7 + test/generators/latex/Toplevel_comments.tex | 49 + test/generators/latex/Type.tex | 124 +++ test/generators/latex/Val.tex | 8 + test/generators/latex/alias.targets | 2 + test/generators/latex/bugs.targets | 1 + test/generators/latex/bugs_post_406.targets | 2 + test/generators/latex/bugs_pre_410.targets | 1 + test/generators/latex/class.targets | 5 + test/generators/latex/external.targets | 1 + test/generators/latex/functor.targets | 6 + test/generators/latex/functor2.targets | 2 + test/generators/latex/include.targets | 1 + test/generators/latex/include2.targets | 1 + .../generators/latex/include_sections.targets | 1 + test/generators/latex/interlude.targets | 1 + test/generators/latex/labels.targets | 2 + test/generators/latex/markup.targets | 1 + test/generators/latex/mld.tex | 31 + test/generators/latex/module.targets | 1 + test/generators/latex/nested.targets | 4 + test/generators/latex/ocamlary.targets | 23 + test/generators/latex/page-mld.targets | 1 + test/generators/latex/recent.targets | 1 + test/generators/latex/recent_impl.targets | 2 + test/generators/latex/section.targets | 1 + test/generators/latex/stop.targets | 1 + .../latex/stop_dead_link_doc.targets | 1 + .../latex/toplevel_comments.targets | 4 + test/generators/latex/type.targets | 1 + test/generators/latex/val.targets | 1 + 94 files changed, 2365 insertions(+) create mode 100644 test/generators/latex/Alias.X.tex create mode 100644 test/generators/latex/Alias.tex create mode 100644 test/generators/latex/Bugs.tex create mode 100644 test/generators/latex/Bugs_post_406.let_open'.tex create mode 100644 test/generators/latex/Bugs_post_406.tex create mode 100644 test/generators/latex/Bugs_pre_410.tex create mode 100644 test/generators/latex/Class.empty_virtual'.tex create mode 100644 test/generators/latex/Class.mutually'.tex create mode 100644 test/generators/latex/Class.polymorphic'.tex create mode 100644 test/generators/latex/Class.recursive'.tex create mode 100644 test/generators/latex/Class.tex create mode 100644 test/generators/latex/External.tex create mode 100644 test/generators/latex/Functor.F1.tex create mode 100644 test/generators/latex/Functor.F2.tex create mode 100644 test/generators/latex/Functor.F3.tex create mode 100644 test/generators/latex/Functor.F4.tex create mode 100644 test/generators/latex/Functor.F5.tex create mode 100644 test/generators/latex/Functor.tex create mode 100644 test/generators/latex/Functor2.X.tex create mode 100644 test/generators/latex/Functor2.tex create mode 100644 test/generators/latex/Include.tex create mode 100644 test/generators/latex/Include2.tex create mode 100644 test/generators/latex/Include_sections.tex create mode 100644 test/generators/latex/Interlude.tex create mode 100644 test/generators/latex/Labels.c.tex create mode 100644 test/generators/latex/Labels.tex create mode 100644 test/generators/latex/Markup.tex create mode 100644 test/generators/latex/Module.tex create mode 100644 test/generators/latex/Nested.F.tex create mode 100644 test/generators/latex/Nested.inherits.tex create mode 100644 test/generators/latex/Nested.tex create mode 100644 test/generators/latex/Nested.z.tex create mode 100644 test/generators/latex/Ocamlary.Dep12.tex create mode 100644 test/generators/latex/Ocamlary.Dep13.c.tex create mode 100644 test/generators/latex/Ocamlary.Dep13.tex create mode 100644 test/generators/latex/Ocamlary.Dep2.tex create mode 100644 test/generators/latex/Ocamlary.Dep5.Z.tex create mode 100644 test/generators/latex/Ocamlary.Dep5.tex create mode 100644 test/generators/latex/Ocamlary.Dep7.M.tex create mode 100644 test/generators/latex/Ocamlary.Dep7.tex create mode 100644 test/generators/latex/Ocamlary.Dep9.tex create mode 100644 test/generators/latex/Ocamlary.FunctorTypeOf.tex create mode 100644 test/generators/latex/Ocamlary.ModuleWithSignature.tex create mode 100644 test/generators/latex/Ocamlary.ModuleWithSignatureAlias.tex create mode 100644 test/generators/latex/Ocamlary.Recollection.tex create mode 100644 test/generators/latex/Ocamlary.With3.N.tex create mode 100644 test/generators/latex/Ocamlary.With3.tex create mode 100644 test/generators/latex/Ocamlary.With4.N.tex create mode 100644 test/generators/latex/Ocamlary.With4.tex create mode 100644 test/generators/latex/Ocamlary.With7.tex create mode 100644 test/generators/latex/Ocamlary.empty_class.tex create mode 100644 test/generators/latex/Ocamlary.one_method_class.tex create mode 100644 test/generators/latex/Ocamlary.param_class.tex create mode 100644 test/generators/latex/Ocamlary.tex create mode 100644 test/generators/latex/Ocamlary.two_method_class.tex create mode 100644 test/generators/latex/Recent.tex create mode 100644 test/generators/latex/Recent_impl.B.tex create mode 100644 test/generators/latex/Recent_impl.tex create mode 100644 test/generators/latex/Section.tex create mode 100644 test/generators/latex/Stop.tex create mode 100644 test/generators/latex/Stop_dead_link_doc.tex create mode 100644 test/generators/latex/Toplevel_comments.Alias.tex create mode 100644 test/generators/latex/Toplevel_comments.c1.tex create mode 100644 test/generators/latex/Toplevel_comments.c2.tex create mode 100644 test/generators/latex/Toplevel_comments.tex create mode 100644 test/generators/latex/Type.tex create mode 100644 test/generators/latex/Val.tex create mode 100644 test/generators/latex/alias.targets create mode 100644 test/generators/latex/bugs.targets create mode 100644 test/generators/latex/bugs_post_406.targets create mode 100644 test/generators/latex/bugs_pre_410.targets create mode 100644 test/generators/latex/class.targets create mode 100644 test/generators/latex/external.targets create mode 100644 test/generators/latex/functor.targets create mode 100644 test/generators/latex/functor2.targets create mode 100644 test/generators/latex/include.targets create mode 100644 test/generators/latex/include2.targets create mode 100644 test/generators/latex/include_sections.targets create mode 100644 test/generators/latex/interlude.targets create mode 100644 test/generators/latex/labels.targets create mode 100644 test/generators/latex/markup.targets create mode 100644 test/generators/latex/mld.tex create mode 100644 test/generators/latex/module.targets create mode 100644 test/generators/latex/nested.targets create mode 100644 test/generators/latex/ocamlary.targets create mode 100644 test/generators/latex/page-mld.targets create mode 100644 test/generators/latex/recent.targets create mode 100644 test/generators/latex/recent_impl.targets create mode 100644 test/generators/latex/section.targets create mode 100644 test/generators/latex/stop.targets create mode 100644 test/generators/latex/stop_dead_link_doc.targets create mode 100644 test/generators/latex/toplevel_comments.targets create mode 100644 test/generators/latex/type.targets create mode 100644 test/generators/latex/val.targets diff --git a/test/generators/latex/Alias.X.tex b/test/generators/latex/Alias.X.tex new file mode 100644 index 0000000000..df11cbc727 --- /dev/null +++ b/test/generators/latex/Alias.X.tex @@ -0,0 +1,5 @@ +\section{Module \ocamlinlinecode{Alias.\allowbreak{}X}}\label{module-Alias-module-X}% +\label{module-Alias-module-X-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int}\begin{ocamlindent}Module Foo\_\_X documentation. This should appear in the documentation for the alias to this module 'X'\end{ocamlindent}% +\medbreak + + diff --git a/test/generators/latex/Alias.tex b/test/generators/latex/Alias.tex new file mode 100644 index 0000000000..38b790399a --- /dev/null +++ b/test/generators/latex/Alias.tex @@ -0,0 +1,8 @@ +\section{Module \ocamlinlinecode{Alias}}\label{module-Alias}% +\label{module-Alias-module-Foo+u++u+X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Alias-module-Foo+u++u+X]{\ocamlinlinecode{Foo\_\allowbreak{}\_\allowbreak{}X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Alias-module-Foo+u++u+X-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[xref-unresolved]{\ocamlinlinecode{int}}}\begin{ocamlindent}Module Foo\_\_X documentation. This should appear in the documentation for the alias to this module 'X'\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Alias-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Alias-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ + +\input{Alias.X.tex} diff --git a/test/generators/latex/Bugs.tex b/test/generators/latex/Bugs.tex new file mode 100644 index 0000000000..a4de712aea --- /dev/null +++ b/test/generators/latex/Bugs.tex @@ -0,0 +1,6 @@ +\section{Module \ocamlinlinecode{Bugs}}\label{module-Bugs}% +\label{module-Bugs-type-opt}\ocamlcodefragment{\ocamltag{keyword}{type} 'a opt = \ocamltag{type-var}{'a} option}\\ +\label{module-Bugs-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : ?bar:\ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} unit \ocamltag{arrow}{$\rightarrow$} unit}\begin{ocamlindent}Triggers an assertion failure when \href{https://github.com/ocaml/odoc/issues/101}{https://github.com/ocaml/odoc/issues/101}\footnote{\url{https://github.com/ocaml/odoc/issues/101}} is not fixed.\end{ocamlindent}% +\medbreak + + diff --git a/test/generators/latex/Bugs_post_406.let_open'.tex b/test/generators/latex/Bugs_post_406.let_open'.tex new file mode 100644 index 0000000000..8bb3cf4282 --- /dev/null +++ b/test/generators/latex/Bugs_post_406.let_open'.tex @@ -0,0 +1,3 @@ +\section{Class \ocamlinlinecode{Bugs\_\allowbreak{}post\_\allowbreak{}406.\allowbreak{}let\_\allowbreak{}open'}}\label{module-Bugs+u+post+u+406-class-let+u+open'}% + + diff --git a/test/generators/latex/Bugs_post_406.tex b/test/generators/latex/Bugs_post_406.tex new file mode 100644 index 0000000000..607db98fb1 --- /dev/null +++ b/test/generators/latex/Bugs_post_406.tex @@ -0,0 +1,8 @@ +\section{Module \ocamlinlinecode{Bugs\_\allowbreak{}post\_\allowbreak{}406}}\label{module-Bugs+u+post+u+406}% +Let-open in class types, https://github.com/ocaml/odoc/issues/543 This was added to the language in 4.06 + +\label{module-Bugs+u+post+u+406-class-type-let+u+open}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{type} \hyperref[module-Bugs+u+post+u+406-class-type-let+u+open]{\ocamlinlinecode{let\_\allowbreak{}open}}}\ocamlcodefragment{ = \ocamltag{keyword}{object}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Bugs+u+post+u+406-class-let+u+open'}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[module-Bugs+u+post+u+406-class-let+u+open']{\ocamlinlinecode{let\_\allowbreak{}open'}}}\ocamlcodefragment{ : \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ + +\input{Bugs_post_406.let_open'.tex} diff --git a/test/generators/latex/Bugs_pre_410.tex b/test/generators/latex/Bugs_pre_410.tex new file mode 100644 index 0000000000..e192093b81 --- /dev/null +++ b/test/generators/latex/Bugs_pre_410.tex @@ -0,0 +1,6 @@ +\section{Module \ocamlinlinecode{Bugs\_\allowbreak{}pre\_\allowbreak{}410}}\label{module-Bugs+u+pre+u+410}% +\label{module-Bugs+u+pre+u+410-type-opt'}\ocamlcodefragment{\ocamltag{keyword}{type} 'a opt' = int option}\\ +\label{module-Bugs+u+pre+u+410-val-foo'}\ocamlcodefragment{\ocamltag{keyword}{val} foo' : ?bar:\ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} unit \ocamltag{arrow}{$\rightarrow$} unit}\begin{ocamlindent}Similar to \ocamlinlinecode{Bugs}, but the printed type of \ocamlinlinecode{\textasciitilde{}bar} should be \ocamlinlinecode{int}, not \ocamlinlinecode{'a}. This probably requires fixing in the compiler. See \href{https://github.com/ocaml/odoc/pull/230\#issuecomment-433226807}{https://github.com/ocaml/odoc/pull/230\#issuecomment-433226807}\footnote{\url{https://github.com/ocaml/odoc/pull/230\#issuecomment-433226807}}.\end{ocamlindent}% +\medbreak + + diff --git a/test/generators/latex/Class.empty_virtual'.tex b/test/generators/latex/Class.empty_virtual'.tex new file mode 100644 index 0000000000..f0187a8e65 --- /dev/null +++ b/test/generators/latex/Class.empty_virtual'.tex @@ -0,0 +1,3 @@ +\section{Class \ocamlinlinecode{Class.\allowbreak{}empty\_\allowbreak{}virtual'}}\label{module-Class-class-empty+u+virtual'}% + + diff --git a/test/generators/latex/Class.mutually'.tex b/test/generators/latex/Class.mutually'.tex new file mode 100644 index 0000000000..82677b8a61 --- /dev/null +++ b/test/generators/latex/Class.mutually'.tex @@ -0,0 +1,3 @@ +\section{Class \ocamlinlinecode{Class.\allowbreak{}mutually'}}\label{module-Class-class-mutually'}% + + diff --git a/test/generators/latex/Class.polymorphic'.tex b/test/generators/latex/Class.polymorphic'.tex new file mode 100644 index 0000000000..0545c384f9 --- /dev/null +++ b/test/generators/latex/Class.polymorphic'.tex @@ -0,0 +1,3 @@ +\section{Class \ocamlinlinecode{Class.\allowbreak{}polymorphic'}}\label{module-Class-class-polymorphic'}% + + diff --git a/test/generators/latex/Class.recursive'.tex b/test/generators/latex/Class.recursive'.tex new file mode 100644 index 0000000000..5c924ffd06 --- /dev/null +++ b/test/generators/latex/Class.recursive'.tex @@ -0,0 +1,3 @@ +\section{Class \ocamlinlinecode{Class.\allowbreak{}recursive'}}\label{module-Class-class-recursive'}% + + diff --git a/test/generators/latex/Class.tex b/test/generators/latex/Class.tex new file mode 100644 index 0000000000..672e906372 --- /dev/null +++ b/test/generators/latex/Class.tex @@ -0,0 +1,20 @@ +\section{Module \ocamlinlinecode{Class}}\label{module-Class}% +\label{module-Class-class-type-empty}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{type} \hyperref[module-Class-class-type-empty]{\ocamlinlinecode{empty}}}\ocamlcodefragment{ = \ocamltag{keyword}{object}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Class-class-type-mutually}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{type} \hyperref[module-Class-class-type-mutually]{\ocamlinlinecode{mutually}}}\ocamlcodefragment{ = \ocamltag{keyword}{object}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Class-class-type-recursive}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{type} \hyperref[module-Class-class-type-recursive]{\ocamlinlinecode{recursive}}}\ocamlcodefragment{ = \ocamltag{keyword}{object}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Class-class-mutually'}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[module-Class-class-mutually']{\ocamlinlinecode{mutually'}}}\ocamlcodefragment{ : \hyperref[module-Class-class-type-mutually]{\ocamlinlinecode{mutually}}}\\ +\label{module-Class-class-recursive'}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[module-Class-class-recursive']{\ocamlinlinecode{recursive'}}}\ocamlcodefragment{ : \hyperref[module-Class-class-type-recursive]{\ocamlinlinecode{recursive}}}\\ +\label{module-Class-class-type-empty+u+virtual}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{type} \ocamltag{keyword}{virtual} \hyperref[module-Class-class-type-empty+u+virtual]{\ocamlinlinecode{empty\_\allowbreak{}virtual}}}\ocamlcodefragment{ = \ocamltag{keyword}{object}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Class-class-empty+u+virtual'}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{virtual} \hyperref[module-Class-class-empty+u+virtual']{\ocamlinlinecode{empty\_\allowbreak{}virtual'}}}\ocamlcodefragment{ : \hyperref[module-Class-class-type-empty]{\ocamlinlinecode{empty}}}\\ +\label{module-Class-class-type-polymorphic}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{type} 'a \hyperref[module-Class-class-type-polymorphic]{\ocamlinlinecode{polymorphic}}}\ocamlcodefragment{ = \ocamltag{keyword}{object}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Class-class-polymorphic'}\ocamlcodefragment{\ocamltag{keyword}{class} 'a \hyperref[module-Class-class-polymorphic']{\ocamlinlinecode{polymorphic'}}}\ocamlcodefragment{ : \ocamltag{type-var}{'a} \hyperref[module-Class-class-type-polymorphic]{\ocamlinlinecode{polymorphic}}}\\ + +\input{Class.mutually'.tex} +\input{Class.recursive'.tex} +\input{Class.empty_virtual'.tex} +\input{Class.polymorphic'.tex} diff --git a/test/generators/latex/External.tex b/test/generators/latex/External.tex new file mode 100644 index 0000000000..795e00d8ff --- /dev/null +++ b/test/generators/latex/External.tex @@ -0,0 +1,5 @@ +\section{Module \ocamlinlinecode{External}}\label{module-External}% +\label{module-External-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit \ocamltag{arrow}{$\rightarrow$} unit}\begin{ocamlindent}Foo \emph{bar}.\end{ocamlindent}% +\medbreak + + diff --git a/test/generators/latex/Functor.F1.tex b/test/generators/latex/Functor.F1.tex new file mode 100644 index 0000000000..3777b02940 --- /dev/null +++ b/test/generators/latex/Functor.F1.tex @@ -0,0 +1,9 @@ +\section{Module \ocamlinlinecode{Functor.\allowbreak{}F1}}\label{module-Functor-module-F1}% +\subsection{Parameters\label{parameters}}% +\label{module-Functor-module-F1-argument-1-Arg}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Functor-module-F1-argument-1-Arg]{\ocamlinlinecode{Arg}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Functor-module-F1-argument-1-Arg-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsection{Signature\label{signature}}% +\label{module-Functor-module-F1-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ + + diff --git a/test/generators/latex/Functor.F2.tex b/test/generators/latex/Functor.F2.tex new file mode 100644 index 0000000000..b303684338 --- /dev/null +++ b/test/generators/latex/Functor.F2.tex @@ -0,0 +1,9 @@ +\section{Module \ocamlinlinecode{Functor.\allowbreak{}F2}}\label{module-Functor-module-F2}% +\subsection{Parameters\label{parameters}}% +\label{module-Functor-module-F2-argument-1-Arg}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Functor-module-F2-argument-1-Arg]{\ocamlinlinecode{Arg}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Functor-module-F2-argument-1-Arg-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsection{Signature\label{signature}}% +\label{module-Functor-module-F2-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Functor-module-F2-argument-1-Arg-type-t]{\ocamlinlinecode{Arg.\allowbreak{}t}}}\\ + + diff --git a/test/generators/latex/Functor.F3.tex b/test/generators/latex/Functor.F3.tex new file mode 100644 index 0000000000..b0bd3e0c99 --- /dev/null +++ b/test/generators/latex/Functor.F3.tex @@ -0,0 +1,9 @@ +\section{Module \ocamlinlinecode{Functor.\allowbreak{}F3}}\label{module-Functor-module-F3}% +\subsection{Parameters\label{parameters}}% +\label{module-Functor-module-F3-argument-1-Arg}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Functor-module-F3-argument-1-Arg]{\ocamlinlinecode{Arg}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Functor-module-F3-argument-1-Arg-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsection{Signature\label{signature}}% +\label{module-Functor-module-F3-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Functor-module-F3-argument-1-Arg-type-t]{\ocamlinlinecode{Arg.\allowbreak{}t}}}\\ + + diff --git a/test/generators/latex/Functor.F4.tex b/test/generators/latex/Functor.F4.tex new file mode 100644 index 0000000000..9cd87ffd3e --- /dev/null +++ b/test/generators/latex/Functor.F4.tex @@ -0,0 +1,9 @@ +\section{Module \ocamlinlinecode{Functor.\allowbreak{}F4}}\label{module-Functor-module-F4}% +\subsection{Parameters\label{parameters}}% +\label{module-Functor-module-F4-argument-1-Arg}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Functor-module-F4-argument-1-Arg]{\ocamlinlinecode{Arg}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Functor-module-F4-argument-1-Arg-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsection{Signature\label{signature}}% +\label{module-Functor-module-F4-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ + + diff --git a/test/generators/latex/Functor.F5.tex b/test/generators/latex/Functor.F5.tex new file mode 100644 index 0000000000..d0adb0595a --- /dev/null +++ b/test/generators/latex/Functor.F5.tex @@ -0,0 +1,6 @@ +\section{Module \ocamlinlinecode{Functor.\allowbreak{}F5}}\label{module-Functor-module-F5}% +\subsection{Parameters\label{parameters}}% +\subsection{Signature\label{signature}}% +\label{module-Functor-module-F5-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ + + diff --git a/test/generators/latex/Functor.tex b/test/generators/latex/Functor.tex new file mode 100644 index 0000000000..19f23590c9 --- /dev/null +++ b/test/generators/latex/Functor.tex @@ -0,0 +1,23 @@ +\section{Module \ocamlinlinecode{Functor}}\label{module-Functor}% +\label{module-Functor-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Functor-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Functor-module-type-S-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Functor-module-type-S1}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Functor-module-type-S1]{\ocamlinlinecode{S1}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Parameters\label{parameters}}% +\label{module-Functor-module-type-S1-argument-1-+u+}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Functor-module-type-S1-argument-1-+u+]{\ocamlinlinecode{\_\allowbreak{}}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Functor-module-type-S1-argument-1-+u+-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsubsection{Signature\label{signature}}% +\label{module-Functor-module-type-S1-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Functor-module-F1}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Functor-module-F1]{\ocamlinlinecode{F1}}}\ocamlcodefragment{ (\hyperref[module-Functor-module-F1-argument-1-Arg]{\ocamlinlinecode{Arg}} : \hyperref[module-Functor-module-type-S]{\ocamlinlinecode{S}}) : \hyperref[module-Functor-module-type-S]{\ocamlinlinecode{S}}}\\ +\label{module-Functor-module-F2}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Functor-module-F2]{\ocamlinlinecode{F2}}}\ocamlcodefragment{ (\hyperref[module-Functor-module-F2-argument-1-Arg]{\ocamlinlinecode{Arg}} : \hyperref[module-Functor-module-type-S]{\ocamlinlinecode{S}}) : \hyperref[module-Functor-module-type-S]{\ocamlinlinecode{S}} \ocamltag{keyword}{with} \ocamltag{keyword}{type} \hyperref[module-Functor-module-type-S-type-t]{\ocamlinlinecode{t}} = \hyperref[module-Functor-module-F2-argument-1-Arg-type-t]{\ocamlinlinecode{Arg.\allowbreak{}t}}}\\ +\label{module-Functor-module-F3}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Functor-module-F3]{\ocamlinlinecode{F3}}}\ocamlcodefragment{ (\hyperref[module-Functor-module-F3-argument-1-Arg]{\ocamlinlinecode{Arg}} : \hyperref[module-Functor-module-type-S]{\ocamlinlinecode{S}}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Functor-module-F4}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Functor-module-F4]{\ocamlinlinecode{F4}}}\ocamlcodefragment{ (\hyperref[module-Functor-module-F4-argument-1-Arg]{\ocamlinlinecode{Arg}} : \hyperref[module-Functor-module-type-S]{\ocamlinlinecode{S}}) : \hyperref[module-Functor-module-type-S]{\ocamlinlinecode{S}}}\\ +\label{module-Functor-module-F5}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Functor-module-F5]{\ocamlinlinecode{F5}}}\ocamlcodefragment{ () : \hyperref[module-Functor-module-type-S]{\ocamlinlinecode{S}}}\\ + +\input{Functor.F1.tex} +\input{Functor.F2.tex} +\input{Functor.F3.tex} +\input{Functor.F4.tex} +\input{Functor.F5.tex} diff --git a/test/generators/latex/Functor2.X.tex b/test/generators/latex/Functor2.X.tex new file mode 100644 index 0000000000..32da0dc7eb --- /dev/null +++ b/test/generators/latex/Functor2.X.tex @@ -0,0 +1,14 @@ +\section{Module \ocamlinlinecode{Functor2.\allowbreak{}X}}\label{module-Functor2-module-X}% +\subsection{Parameters\label{parameters}}% +\label{module-Functor2-module-X-argument-1-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Functor2-module-X-argument-1-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Functor2-module-X-argument-1-Y-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Functor2-module-X-argument-2-Z}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Functor2-module-X-argument-2-Z]{\ocamlinlinecode{Z}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Functor2-module-X-argument-2-Z-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsection{Signature\label{signature}}% +\label{module-Functor2-module-X-type-y+u+t}\ocamlcodefragment{\ocamltag{keyword}{type} y\_\allowbreak{}t = \hyperref[module-Functor2-module-X-argument-1-Y-type-t]{\ocamlinlinecode{Y.\allowbreak{}t}}}\\ +\label{module-Functor2-module-X-type-z+u+t}\ocamlcodefragment{\ocamltag{keyword}{type} z\_\allowbreak{}t = \hyperref[module-Functor2-module-X-argument-2-Z-type-t]{\ocamlinlinecode{Z.\allowbreak{}t}}}\\ +\label{module-Functor2-module-X-type-x+u+t}\ocamlcodefragment{\ocamltag{keyword}{type} x\_\allowbreak{}t = \hyperref[module-Functor2-module-X-type-y+u+t]{\ocamlinlinecode{y\_\allowbreak{}t}}}\\ + + diff --git a/test/generators/latex/Functor2.tex b/test/generators/latex/Functor2.tex new file mode 100644 index 0000000000..40bcf4af31 --- /dev/null +++ b/test/generators/latex/Functor2.tex @@ -0,0 +1,20 @@ +\section{Module \ocamlinlinecode{Functor2}}\label{module-Functor2}% +\label{module-Functor2-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Functor2-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Functor2-module-type-S-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Functor2-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Functor2-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ (\hyperref[module-Functor2-module-X-argument-1-Y]{\ocamlinlinecode{Y}} : \hyperref[module-Functor2-module-type-S]{\ocamlinlinecode{S}}) (\hyperref[module-Functor2-module-X-argument-2-Z]{\ocamlinlinecode{Z}} : \hyperref[module-Functor2-module-type-S]{\ocamlinlinecode{S}}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Functor2-module-type-XF}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Functor2-module-type-XF]{\ocamlinlinecode{XF}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Parameters\label{parameters}}% +\label{module-Functor2-module-type-XF-argument-1-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Functor2-module-type-XF-argument-1-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Functor2-module-type-XF-argument-1-Y-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Functor2-module-type-XF-argument-2-Z}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Functor2-module-type-XF-argument-2-Z]{\ocamlinlinecode{Z}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Functor2-module-type-XF-argument-2-Z-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsubsection{Signature\label{signature}}% +\label{module-Functor2-module-type-XF-type-y+u+t}\ocamlcodefragment{\ocamltag{keyword}{type} y\_\allowbreak{}t = \hyperref[module-Functor2-module-type-XF-argument-1-Y-type-t]{\ocamlinlinecode{Y.\allowbreak{}t}}}\\ +\label{module-Functor2-module-type-XF-type-z+u+t}\ocamlcodefragment{\ocamltag{keyword}{type} z\_\allowbreak{}t = \hyperref[module-Functor2-module-type-XF-argument-2-Z-type-t]{\ocamlinlinecode{Z.\allowbreak{}t}}}\\ +\label{module-Functor2-module-type-XF-type-x+u+t}\ocamlcodefragment{\ocamltag{keyword}{type} x\_\allowbreak{}t = \hyperref[module-Functor2-module-type-XF-type-y+u+t]{\ocamlinlinecode{y\_\allowbreak{}t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ + +\input{Functor2.X.tex} diff --git a/test/generators/latex/Include.tex b/test/generators/latex/Include.tex new file mode 100644 index 0000000000..f1f5b94f18 --- /dev/null +++ b/test/generators/latex/Include.tex @@ -0,0 +1,29 @@ +\section{Module \ocamlinlinecode{Include}}\label{module-Include}% +\label{module-Include-module-type-Not+u+inlined}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Include-module-type-Not+u+inlined]{\ocamlinlinecode{Not\_\allowbreak{}inlined}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Include-module-type-Not+u+inlined-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\ocamltag{keyword}{include} \hyperref[module-Include-module-type-Not+u+inlined]{\ocamlinlinecode{Not\_\allowbreak{}inlined}}\label{module-Include-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Include-module-type-Inlined}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Include-module-type-Inlined]{\ocamlinlinecode{Inlined}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Include-module-type-Inlined-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\ocamltag{keyword}{include} \hyperref[module-Include-module-type-Inlined]{\ocamlinlinecode{Inlined}}\label{module-Include-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ +\label{module-Include-module-type-Not+u+inlined+u+and+u+closed}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Include-module-type-Not+u+inlined+u+and+u+closed]{\ocamlinlinecode{Not\_\allowbreak{}inlined\_\allowbreak{}and\_\allowbreak{}closed}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Include-module-type-Not+u+inlined+u+and+u+closed-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} v}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\ocamltag{keyword}{include} \hyperref[module-Include-module-type-Not+u+inlined+u+and+u+closed]{\ocamlinlinecode{Not\_\allowbreak{}inlined\_\allowbreak{}and\_\allowbreak{}closed}}\label{module-Include-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} v}\\ +\label{module-Include-module-type-Not+u+inlined+u+and+u+opened}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Include-module-type-Not+u+inlined+u+and+u+opened]{\ocamlinlinecode{Not\_\allowbreak{}inlined\_\allowbreak{}and\_\allowbreak{}opened}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Include-module-type-Not+u+inlined+u+and+u+opened-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} w}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\ocamltag{keyword}{include} \hyperref[module-Include-module-type-Not+u+inlined+u+and+u+opened]{\ocamlinlinecode{Not\_\allowbreak{}inlined\_\allowbreak{}and\_\allowbreak{}opened}}\label{module-Include-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} w}\\ +\label{module-Include-module-type-Inherent+u+Module}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Include-module-type-Inherent+u+Module]{\ocamlinlinecode{Inherent\_\allowbreak{}Module}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Include-module-type-Inherent+u+Module-val-a}\ocamlcodefragment{\ocamltag{keyword}{val} a : \hyperref[module-Include-type-t]{\ocamlinlinecode{t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\ocamltag{keyword}{include} \hyperref[module-Include-module-type-Inherent+u+Module]{\ocamlinlinecode{Inherent\_\allowbreak{}Module}}\label{module-Include-val-a}\ocamlcodefragment{\ocamltag{keyword}{val} a : \hyperref[module-Include-type-t]{\ocamlinlinecode{t}}}\\ +\label{module-Include-module-type-Dorminant+u+Module}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Include-module-type-Dorminant+u+Module]{\ocamlinlinecode{Dorminant\_\allowbreak{}Module}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \hyperref[module-Include-module-type-Inherent+u+Module]{\ocamlinlinecode{Inherent\_\allowbreak{}Module}}\label{module-Include-module-type-Dorminant+u+Module-val-a}\ocamlcodefragment{\ocamltag{keyword}{val} a : \hyperref[module-Include-type-t]{\ocamlinlinecode{t}}}\\ +\label{module-Include-module-type-Dorminant+u+Module-val-a}\ocamlcodefragment{\ocamltag{keyword}{val} a : \hyperref[module-Include-type-u]{\ocamlinlinecode{u}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\ocamltag{keyword}{include} \hyperref[module-Include-module-type-Dorminant+u+Module]{\ocamlinlinecode{Dorminant\_\allowbreak{}Module}}\ocamltag{keyword}{include} \hyperref[module-Include-module-type-Inherent+u+Module]{\ocamlinlinecode{Inherent\_\allowbreak{}Module}}\label{module-Include-val-a}\ocamlcodefragment{\ocamltag{keyword}{val} a : \hyperref[module-Include-type-t]{\ocamlinlinecode{t}}}\\ +\label{module-Include-val-a}\ocamlcodefragment{\ocamltag{keyword}{val} a : \hyperref[module-Include-type-u]{\ocamlinlinecode{u}}}\\ + + diff --git a/test/generators/latex/Include2.tex b/test/generators/latex/Include2.tex new file mode 100644 index 0000000000..166f2a64e9 --- /dev/null +++ b/test/generators/latex/Include2.tex @@ -0,0 +1,21 @@ +\section{Module \ocamlinlinecode{Include2}}\label{module-Include2}% +\label{module-Include2-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Include2-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Include2-module-X-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Comment about X that should not appear when including X below.\end{ocamlindent}% +\medbreak +\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \ocamltag{keyword}{struct} \ocamltag{keyword}{include} \hyperref[module-Include2-module-X]{\ocamlinlinecode{X}} \ocamltag{keyword}{end}Comment about X that should not appear when including X below. + +\label{module-Include2-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int}\\ +\label{module-Include2-module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Include2-module-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Include2-module-Y-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Top-comment of Y.\end{ocamlindent}% +\medbreak +\label{module-Include2-module-Y+u+include+u+synopsis}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Include2-module-Y+u+include+u+synopsis]{\ocamlinlinecode{Y\_\allowbreak{}include\_\allowbreak{}synopsis}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \ocamltag{keyword}{struct} \ocamltag{keyword}{include} \hyperref[module-Include2-module-Y]{\ocamlinlinecode{Y}} \ocamltag{keyword}{end}\label{module-Include2-module-Y+u+include+u+synopsis-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Include2-module-Y-type-t]{\ocamlinlinecode{Y.\allowbreak{}t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}The \ocamlinlinecode{include Y} below should have the synopsis from \ocamlinlinecode{Y}'s top-comment attached to it.\end{ocamlindent}% +\medbreak +\label{module-Include2-module-Y+u+include+u+doc}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Include2-module-Y+u+include+u+doc]{\ocamlinlinecode{Y\_\allowbreak{}include\_\allowbreak{}doc}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}Doc attached to \ocamlinlinecode{include Y}. \ocamlinlinecode{Y}'s top-comment shouldn't appear here.\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \ocamltag{keyword}{struct} \ocamltag{keyword}{include} \hyperref[module-Include2-module-Y]{\ocamlinlinecode{Y}} \ocamltag{keyword}{end}\label{module-Include2-module-Y+u+include+u+doc-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Include2-module-Y-type-t]{\ocamlinlinecode{Y.\allowbreak{}t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ + + diff --git a/test/generators/latex/Include_sections.tex b/test/generators/latex/Include_sections.tex new file mode 100644 index 0000000000..08e736e340 --- /dev/null +++ b/test/generators/latex/Include_sections.tex @@ -0,0 +1,71 @@ +\section{Module \ocamlinlinecode{Include\_\allowbreak{}sections}}\label{module-Include+u+sections}% +\label{module-Include+u+sections-module-type-Something}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Include+u+sections-module-type-Something]{\ocamlinlinecode{Something}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Include+u+sections-module-type-Something-val-something}\ocamlcodefragment{\ocamltag{keyword}{val} something : unit}\\ +\subsubsection{Something 1\label{something-1}}% +foo + +\label{module-Include+u+sections-module-type-Something-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\\ +\subsubsection{Something 2\label{something-2}}% +\label{module-Include+u+sections-module-type-Something-val-bar}\ocamlcodefragment{\ocamltag{keyword}{val} bar : unit}\begin{ocamlindent}foo bar\end{ocamlindent}% +\medbreak +\subsubsection{Something 1-bis\label{something-1-bis}}% +Some text. + +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}A module type.\end{ocamlindent}% +\medbreak +Let's include \hyperref[module-Include+u+sections-module-type-Something]{\ocamlinlinecode{\ocamlinlinecode{Something}}[p\pageref*{module-Include+u+sections-module-type-Something}]} once + +\ocamltag{keyword}{include} \hyperref[module-Include+u+sections-module-type-Something]{\ocamlinlinecode{Something}}\label{module-Include+u+sections-val-something}\ocamlcodefragment{\ocamltag{keyword}{val} something : unit}\\ +\subsection{Something 1\label{something-1}}% +foo + +\label{module-Include+u+sections-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\\ +\subsubsection{Something 2\label{something-2}}% +\label{module-Include+u+sections-val-bar}\ocamlcodefragment{\ocamltag{keyword}{val} bar : unit}\begin{ocamlindent}foo bar\end{ocamlindent}% +\medbreak +\subsection{Something 1-bis\label{something-1-bis}}% +Some text. + +\subsection{Second include\label{second-include}}% +Let's include \hyperref[module-Include+u+sections-module-type-Something]{\ocamlinlinecode{\ocamlinlinecode{Something}}[p\pageref*{module-Include+u+sections-module-type-Something}]} a second time: the heading level should be shift here. + +\ocamltag{keyword}{include} \hyperref[module-Include+u+sections-module-type-Something]{\ocamlinlinecode{Something}}\label{module-Include+u+sections-val-something}\ocamlcodefragment{\ocamltag{keyword}{val} something : unit}\\ +\subsection{Something 1\label{something-1}}% +foo + +\label{module-Include+u+sections-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\\ +\subsubsection{Something 2\label{something-2}}% +\label{module-Include+u+sections-val-bar}\ocamlcodefragment{\ocamltag{keyword}{val} bar : unit}\begin{ocamlindent}foo bar\end{ocamlindent}% +\medbreak +\subsection{Something 1-bis\label{something-1-bis}}% +Some text. + +\subsubsection{Third include\label{third-include}}% +Shifted some more. + +\ocamltag{keyword}{include} \hyperref[module-Include+u+sections-module-type-Something]{\ocamlinlinecode{Something}}\label{module-Include+u+sections-val-something}\ocamlcodefragment{\ocamltag{keyword}{val} something : unit}\\ +\subsection{Something 1\label{something-1}}% +foo + +\label{module-Include+u+sections-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\\ +\subsubsection{Something 2\label{something-2}}% +\label{module-Include+u+sections-val-bar}\ocamlcodefragment{\ocamltag{keyword}{val} bar : unit}\begin{ocamlindent}foo bar\end{ocamlindent}% +\medbreak +\subsection{Something 1-bis\label{something-1-bis}}% +Some text. + +And let's include it again, but without inlining it this time: the ToC shouldn't grow. + +\ocamltag{keyword}{include} \hyperref[module-Include+u+sections-module-type-Something]{\ocamlinlinecode{Something}}\label{module-Include+u+sections-val-something}\ocamlcodefragment{\ocamltag{keyword}{val} something : unit}\\ +\subsection{Something 1\label{something-1}}% +foo + +\label{module-Include+u+sections-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\\ +\subsubsection{Something 2\label{something-2}}% +\label{module-Include+u+sections-val-bar}\ocamlcodefragment{\ocamltag{keyword}{val} bar : unit}\begin{ocamlindent}foo bar\end{ocamlindent}% +\medbreak +\subsection{Something 1-bis\label{something-1-bis}}% +Some text. + + + diff --git a/test/generators/latex/Interlude.tex b/test/generators/latex/Interlude.tex new file mode 100644 index 0000000000..7a8424dadd --- /dev/null +++ b/test/generators/latex/Interlude.tex @@ -0,0 +1,22 @@ +\section{Module \ocamlinlinecode{Interlude}}\label{module-Interlude}% +This is the comment associated to the module. + +Some separate stray text at the top of the module. + +\label{module-Interlude-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\begin{ocamlindent}Foo.\end{ocamlindent}% +\medbreak +Some stray text that is not associated with any signature item. + +It has multiple paragraphs. + +A separate block of stray text, adjacent to the preceding one. + +\label{module-Interlude-val-bar}\ocamlcodefragment{\ocamltag{keyword}{val} bar : unit}\begin{ocamlindent}Bar.\end{ocamlindent}% +\medbreak +\label{module-Interlude-val-multiple}\ocamlcodefragment{\ocamltag{keyword}{val} multiple : unit}\\ +\label{module-Interlude-val-signature}\ocamlcodefragment{\ocamltag{keyword}{val} signature : unit}\\ +\label{module-Interlude-val-items}\ocamlcodefragment{\ocamltag{keyword}{val} items : unit}\\ +Stray text at the bottom of the module. + + + diff --git a/test/generators/latex/Labels.c.tex b/test/generators/latex/Labels.c.tex new file mode 100644 index 0000000000..0f809061fd --- /dev/null +++ b/test/generators/latex/Labels.c.tex @@ -0,0 +1,4 @@ +\section{Class \ocamlinlinecode{Labels.\allowbreak{}c}}\label{module-Labels-class-c}% +\subsection{Attached to class\label{L6}}% + + diff --git a/test/generators/latex/Labels.tex b/test/generators/latex/Labels.tex new file mode 100644 index 0000000000..6f16c446e4 --- /dev/null +++ b/test/generators/latex/Labels.tex @@ -0,0 +1,58 @@ +\section{Module \ocamlinlinecode{Labels}}\label{module-Labels}% +\subsection{Attached to unit\label{L1}}% +\subsection{Attached to nothing\label{L2}}% +\label{module-Labels-module-A}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Labels-module-A]{\ocamlinlinecode{A}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Attached to module\label{L3}}% +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Labels-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\begin{ocamlindent}Attached to type\end{ocamlindent}% +\medbreak +\label{module-Labels-val-f}\ocamlcodefragment{\ocamltag{keyword}{val} f : \hyperref[module-Labels-type-t]{\ocamlinlinecode{t}}}\begin{ocamlindent}Attached to value\end{ocamlindent}% +\medbreak +\label{module-Labels-val-e}\ocamlcodefragment{\ocamltag{keyword}{val} e : unit \ocamltag{arrow}{$\rightarrow$} \hyperref[module-Labels-type-t]{\ocamlinlinecode{t}}}\begin{ocamlindent}Attached to external\end{ocamlindent}% +\medbreak +\label{module-Labels-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Labels-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Attached to module type\label{L6}}% +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Labels-class-c}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[module-Labels-class-c]{\ocamlinlinecode{c}}}\ocamlcodefragment{ : \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Labels-class-type-cs}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{type} \hyperref[module-Labels-class-type-cs]{\ocamlinlinecode{cs}}}\ocamlcodefragment{ = \ocamltag{keyword}{object}}\begin{ocamlindent}\subsubsection{Attached to class type\label{L7}}% +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Labels-exception-E}\ocamlcodefragment{\ocamltag{keyword}{exception} \ocamltag{exception}{E}}\begin{ocamlindent}Attached to exception\end{ocamlindent}% +\medbreak +\label{module-Labels-type-x}\ocamlcodefragment{\ocamltag{keyword}{type} x = .\allowbreak{}.\allowbreak{}}\\ +\label{module-Labels-extension-decl-X}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[module-Labels-type-x]{\ocamlinlinecode{x}} += }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{X}}\label{module-Labels-extension-X}\\ +\end{ocamltabular}% +\\ +\begin{ocamlindent}Attached to extension\end{ocamlindent}% +\medbreak +\label{module-Labels-module-S}\ocamlcodefragment{\ocamltag{keyword}{module} S := \hyperref[module-Labels-module-A]{\ocamlinlinecode{A}}}\begin{ocamlindent}Attached to module subst\end{ocamlindent}% +\medbreak +\label{module-Labels-type-s}\ocamlcodefragment{\ocamltag{keyword}{type} s := \hyperref[module-Labels-type-t]{\ocamlinlinecode{t}}}\begin{ocamlindent}Attached to type subst\end{ocamlindent}% +\medbreak +\label{module-Labels-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u = }\\ +\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A'}}\label{module-Labels-type-u.A'}& Attached to constructor\\ +\end{ocamltabular}% +\\ +\label{module-Labels-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} v = \{}\\ +\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlinlinecode{f : \hyperref[module-Labels-type-t]{\ocamlinlinecode{t}};\allowbreak{}}\label{module-Labels-type-v.f}& Attached to field\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{\}}\\ +Testing that labels can be referenced + +\begin{itemize}\item{\hyperref[module-Labels-L1]{\ocamlinlinecode{Attached to unit}[p\pageref*{module-Labels-L1}]}}% +\item{\hyperref[module-Labels-L2]{\ocamlinlinecode{Attached to nothing}[p\pageref*{module-Labels-L2}]}}% +\item{\hyperref[module-Labels-L3]{\ocamlinlinecode{Attached to module}[p\pageref*{module-Labels-L3}]}}% +\item{\hyperref[module-Labels-L4]{\ocamlinlinecode{Attached to type}[p\pageref*{module-Labels-L4}]}}% +\item{\hyperref[module-Labels-L5]{\ocamlinlinecode{Attached to value}[p\pageref*{module-Labels-L5}]}}% +\item{\hyperref[module-Labels-L6]{\ocamlinlinecode{Attached to class}[p\pageref*{module-Labels-L6}]}}% +\item{\hyperref[module-Labels-L7]{\ocamlinlinecode{Attached to class type}[p\pageref*{module-Labels-L7}]}}% +\item{\hyperref[module-Labels-L8]{\ocamlinlinecode{Attached to exception}[p\pageref*{module-Labels-L8}]}}% +\item{\hyperref[module-Labels-L9]{\ocamlinlinecode{Attached to extension}[p\pageref*{module-Labels-L9}]}}% +\item{\hyperref[module-Labels-L10]{\ocamlinlinecode{Attached to module subst}[p\pageref*{module-Labels-L10}]}}% +\item{\hyperref[module-Labels-L11]{\ocamlinlinecode{Attached to type subst}[p\pageref*{module-Labels-L11}]}}% +\item{\hyperref[module-Labels-L12]{\ocamlinlinecode{Attached to constructor}[p\pageref*{module-Labels-L12}]}}% +\item{\hyperref[module-Labels-L13]{\ocamlinlinecode{Attached to field}[p\pageref*{module-Labels-L13}]}}\end{itemize}% + +\input{Labels.c.tex} diff --git a/test/generators/latex/Markup.tex b/test/generators/latex/Markup.tex new file mode 100644 index 0000000000..f2ac5bb108 --- /dev/null +++ b/test/generators/latex/Markup.tex @@ -0,0 +1,149 @@ +\section{Module \ocamlinlinecode{Markup}}\label{module-Markup}% +Here, we test the rendering of comment markup. + +\subsection{Sections\label{sections}}% +Let's get these done first, because sections will be used to break up the rest of this test. + +Besides the section heading above, there are also + +\subsubsection{Subsection headings\label{subsection-headings}}% +and + +\subsubsection{Sub-subsection headings\label{sub-subsection-headings}}% +but odoc has banned deeper headings. There are also title headings, but they are only allowed in mld files. + +\subsubsection{Anchors\label{anchors}}% +Sections can have attached \hyperref[module-Markup-anchors]{\ocamlinlinecode{Anchors}[p\pageref*{module-Markup-anchors}]}, and it is possible to \hyperref[module-Markup-anchors]{\ocamlinlinecode{link}[p\pageref*{module-Markup-anchors}]} to them. Links to section headers should not be set in source code style. + +\subsubsection{Paragraph\label{paragraph}}% +Individual paragraphs can have a heading. + +\subsubsection{Subparagraph\label{subparagraph}}% +Parts of a longer paragraph that can be considered alone can also have headings. + +\subsection{Styling\label{styling}}% +This paragraph has some styled elements: \bold{bold} and \emph{italic}, \bold{\emph{bold italic}}, \emph{emphasis}, \emph{\emph{emphasis} within emphasis}, \bold{\emph{bold italic}}, super\textsuperscript{script}, sub\textsubscript{script}. The line spacing should be enough for superscripts and subscripts not to look odd. + +Note: \emph{In italics \emph{emphasis} is rendered as normal text while \emph{emphasis \emph{in} emphasis} is rendered in italics.} \emph{It also work the same in \href{\#}{links in italics with \emph{emphasis \emph{in} emphasis}.}\footnote{\url{\#}}} + +\ocamlinlinecode{code} is a different kind of markup that doesn't allow nested markup. + +It's possible for two markup elements to appear \bold{next} \emph{to} each other and have a space, and appear \bold{next}\emph{to} each other with no space. It doesn't matter \bold{how} \emph{much} space it was in the source: in this sentence, it was two space characters. And in this one, there is \bold{a} \emph{newline}. + +This is also true between \emph{non-}\ocamlinlinecode{code} markup \emph{and} \ocamlinlinecode{code}. + +Code can appear \bold{inside \ocamlinlinecode{other} markup}. Its display shouldn't be affected. + +\subsection{Links and references\label{links-and-references}}% +This is a \href{\#}{link}\footnote{\url{\#}}. It sends you to the top of this page. Links can have markup inside them: \href{\#}{\bold{bold}}\footnote{\url{\#}}, \href{\#}{\emph{italics}}\footnote{\url{\#}}, \href{\#}{\emph{emphasis}}\footnote{\url{\#}}, \href{\#}{super\textsuperscript{script}}\footnote{\url{\#}}, \href{\#}{sub\textsubscript{script}}\footnote{\url{\#}}, and \href{\#}{\ocamlinlinecode{code}}\footnote{\url{\#}}. Links can also be nested \emph{\href{\#}{inside}\footnote{\url{\#}}} markup. Links cannot be nested inside each other. This link has no replacement text: \href{\#}{\#}\footnote{\url{\#}}. The text is filled in by odoc. This is a shorthand link: \href{\#}{\#}\footnote{\url{\#}}. The text is also filled in by odoc in this case. + +This is a reference to \hyperref[module-Markup-val-foo]{\ocamlinlinecode{\ocamlinlinecode{foo}}[p\pageref*{module-Markup-val-foo}]}. References can have replacement text: \hyperref[module-Markup-val-foo]{\ocamlinlinecode{the value foo}[p\pageref*{module-Markup-val-foo}]}. Except for the special lookup support, references are pretty much just like links. The replacement text can have nested styles: \hyperref[module-Markup-val-foo]{\ocamlinlinecode{\bold{bold}}[p\pageref*{module-Markup-val-foo}]}, \hyperref[module-Markup-val-foo]{\ocamlinlinecode{\emph{italic}}[p\pageref*{module-Markup-val-foo}]}, \hyperref[module-Markup-val-foo]{\ocamlinlinecode{\emph{emphasis}}[p\pageref*{module-Markup-val-foo}]}, \hyperref[module-Markup-val-foo]{\ocamlinlinecode{super\textsuperscript{script}}[p\pageref*{module-Markup-val-foo}]}, \hyperref[module-Markup-val-foo]{\ocamlinlinecode{sub\textsubscript{script}}[p\pageref*{module-Markup-val-foo}]}, and \hyperref[module-Markup-val-foo]{\ocamlinlinecode{\ocamlinlinecode{code}}[p\pageref*{module-Markup-val-foo}]}. It's also possible to surround a reference in a style: \bold{\hyperref[module-Markup-val-foo]{\ocamlinlinecode{\ocamlinlinecode{foo}}[p\pageref*{module-Markup-val-foo}]}}. References can't be nested inside references, and links and references can't be nested inside each other. + +\subsection{Preformatted text\label{preformatted-text}}% +This is a code block:\medbreak +\begin{ocamlcodeblock} +let foo = () +(** There are some nested comments in here, but an unpaired comment + terminator would terminate the whole doc surrounding comment. It's + best to keep code blocks no wider than 72 characters. *) + +let bar = + ignore foo +\end{ocamlcodeblock}\medbreak +There are also verbatim blocks: + +\begin{verbatim}The main difference is these don't get syntax highlighting.\end{verbatim}% +\subsection{Lists\label{lists}}% +\begin{itemize}\item{This is a}% +\item{shorthand bulleted list,}% +\item{and the paragraphs in each list item support \emph{styling}.}\end{itemize}% +\begin{enumerate}\item{This is a}% +\item{shorthand numbered list.}\end{enumerate}% +\begin{itemize}\item{Shorthand list items can span multiple lines, however trying to put two paragraphs into a shorthand list item using a double line break}\end{itemize}% +just creates a paragraph outside the list. + +\begin{itemize}\item{Similarly, inserting a blank line between two list items}\end{itemize}% +\begin{itemize}\item{creates two separate lists.}\end{itemize}% +\begin{itemize}\item{To get around this limitation, one + +can use explicitly-delimited lists. + +}% +\item{This one is bulleted,}\end{itemize}% +\begin{enumerate}\item{but there is also the numbered variant.}\end{enumerate}% +\begin{itemize}\item{\begin{itemize}\item{lists}% +\item{can be nested}% +\item{and can include references}% +\item{\hyperref[module-Markup-val-foo]{\ocamlinlinecode{\ocamlinlinecode{foo}}[p\pageref*{module-Markup-val-foo}]}}\end{itemize}% +}\end{itemize}% +\subsection{Unicode\label{unicode}}% +The parser supports any ASCII-compatible encoding, in particuλar UTF-8. + +\subsection{Raw HTML\label{raw-html}}% +Raw HTML can be as inline elements into sentences. + +\subsection{Modules\label{modules}}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{\ocamlinlinecode{X}}]{}\end{description}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{\ocamlinlinecode{X}}]{}% +\item[{\ocamlinlinecode{Y}}]{}% +\item[{\ocamlinlinecode{Z}}]{}\end{description}% +\subsection{Tags\label{tags}}% +Each comment can end with zero or more tags. Here are some examples: + +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{author}]{antron}\end{description}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{deprecated}]{a \emph{long} time ago + +}\end{description}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{parameter foo}]{unused + +}\end{description}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{raises Failure}]{always + +}\end{description}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{returns}]{never + +}\end{description}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{see \href{\#}{\#}\footnote{\url{\#}}}]{this url + +}\end{description}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{see \ocamlinlinecode{foo.\allowbreak{}ml}}]{this file + +}\end{description}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{see Foo}]{this document + +}\end{description}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{since}]{0}\end{description}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{before 1.0}]{it was in b\textsuperscript{e}t\textsubscript{a} + +}\end{description}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{version}]{-1}\end{description}% +\label{module-Markup-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\begin{ocamlindent}Comments in structure items \bold{support} \emph{markup}, t\textsuperscript{o}\textsubscript{o}.\end{ocamlindent}% +\medbreak + + diff --git a/test/generators/latex/Module.tex b/test/generators/latex/Module.tex new file mode 100644 index 0000000000..b852aa7b1b --- /dev/null +++ b/test/generators/latex/Module.tex @@ -0,0 +1,75 @@ +\section{Module \ocamlinlinecode{Module}}\label{module-Module}% +Foo. + +\label{module-Module-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\begin{ocamlindent}The module needs at least one signature item, otherwise a bug causes the compiler to drop the module comment (above). See \href{https://caml.inria.fr/mantis/view.php?id=7701}{https://caml.inria.fr/mantis/view.php?id=7701}\footnote{\url{https://caml.inria.fr/mantis/view.php?id=7701}}.\end{ocamlindent}% +\medbreak +\label{module-Module-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Module-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Module-module-type-S-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Module-module-type-S-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ +\label{module-Module-module-type-S-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\ +\label{module-Module-module-type-S-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\ +\label{module-Module-module-type-S-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Module-module-type-S-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Module-module-type-S1}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} S1}\\ +\label{module-Module-module-type-S2}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Module-module-type-S2]{\ocamlinlinecode{S2}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Module-module-type-S2-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Module-module-type-S2-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ +\label{module-Module-module-type-S2-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\ +\label{module-Module-module-type-S2-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\ +\label{module-Module-module-type-S2-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Module-module-type-S2-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Module-module-type-S3}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Module-module-type-S3]{\ocamlinlinecode{S3}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Module-module-type-S3-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int}\\ +\label{module-Module-module-type-S3-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u = string}\\ +\label{module-Module-module-type-S3-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\ +\label{module-Module-module-type-S3-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\ +\label{module-Module-module-type-S3-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Module-module-type-S3-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Module-module-type-S4}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Module-module-type-S4]{\ocamlinlinecode{S4}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Module-module-type-S4-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ +\label{module-Module-module-type-S4-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\ +\label{module-Module-module-type-S4-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\ +\label{module-Module-module-type-S4-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Module-module-type-S4-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Module-module-type-S5}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Module-module-type-S5]{\ocamlinlinecode{S5}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Module-module-type-S5-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Module-module-type-S5-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ +\label{module-Module-module-type-S5-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\ +\label{module-Module-module-type-S5-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Module-module-type-S5-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Module-type-result}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) result}\\ +\label{module-Module-module-type-S6}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Module-module-type-S6]{\ocamlinlinecode{S6}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Module-module-type-S6-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Module-module-type-S6-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ +\label{module-Module-module-type-S6-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\ +\label{module-Module-module-type-S6-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Module-module-type-S6-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Module-module-M'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Module-module-M']{\ocamlinlinecode{M'}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Module-module-type-S7}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Module-module-type-S7]{\ocamlinlinecode{S7}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Module-module-type-S7-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Module-module-type-S7-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ +\label{module-Module-module-type-S7-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\ +\label{module-Module-module-type-S7-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\ +\label{module-Module-module-type-S7-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} M = \hyperref[module-Module-module-M']{\ocamlinlinecode{M'}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Module-module-type-S8}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Module-module-type-S8]{\ocamlinlinecode{S8}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Module-module-type-S8-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Module-module-type-S8-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ +\label{module-Module-module-type-S8-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\ +\label{module-Module-module-type-S8-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Module-module-type-S9}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Module-module-type-S9]{\ocamlinlinecode{S9}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Module-module-Mutually}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Module-module-Mutually]{\ocamlinlinecode{Mutually}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Module-module-Recursive}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Module-module-Recursive]{\ocamlinlinecode{Recursive}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ + + diff --git a/test/generators/latex/Nested.F.tex b/test/generators/latex/Nested.F.tex new file mode 100644 index 0000000000..20ad2859fb --- /dev/null +++ b/test/generators/latex/Nested.F.tex @@ -0,0 +1,25 @@ +\section{Module \ocamlinlinecode{Nested.\allowbreak{}F}}\label{module-Nested-module-F}% +This is a functor F. + +Some additional comments. + +\subsection{Type\label{type}}% +\subsection{Parameters\label{parameters}}% +\label{module-Nested-module-F-argument-1-Arg1}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Nested-module-F-argument-1-Arg1]{\ocamlinlinecode{Arg1}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Type\label{type}}% +\label{module-Nested-module-F-argument-1-Arg1-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\begin{ocamlindent}Some type.\end{ocamlindent}% +\medbreak +\subsubsection{Values\label{values}}% +\label{module-Nested-module-F-argument-1-Arg1-val-y}\ocamlcodefragment{\ocamltag{keyword}{val} y : \hyperref[module-Nested-module-F-argument-1-Arg1-type-t]{\ocamlinlinecode{t}}}\begin{ocamlindent}The value of y.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Nested-module-F-argument-2-Arg2}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Nested-module-F-argument-2-Arg2]{\ocamlinlinecode{Arg2}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Type\label{type}}% +\label{module-Nested-module-F-argument-2-Arg2-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\begin{ocamlindent}Some type.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsection{Signature\label{signature}}% +\label{module-Nested-module-F-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Nested-module-F-argument-1-Arg1-type-t]{\ocamlinlinecode{Arg1.\allowbreak{}t}} * \hyperref[module-Nested-module-F-argument-2-Arg2-type-t]{\ocamlinlinecode{Arg2.\allowbreak{}t}}}\begin{ocamlindent}Some type.\end{ocamlindent}% +\medbreak + + diff --git a/test/generators/latex/Nested.inherits.tex b/test/generators/latex/Nested.inherits.tex new file mode 100644 index 0000000000..626aa7ad47 --- /dev/null +++ b/test/generators/latex/Nested.inherits.tex @@ -0,0 +1,4 @@ +\section{Class \ocamlinlinecode{Nested.\allowbreak{}inherits}}\label{module-Nested-class-inherits}% +\ocamlcodefragment{\ocamltag{keyword}{inherit} \hyperref[module-Nested-class-z]{\ocamlinlinecode{z}}}\\ + + diff --git a/test/generators/latex/Nested.tex b/test/generators/latex/Nested.tex new file mode 100644 index 0000000000..95c639aa69 --- /dev/null +++ b/test/generators/latex/Nested.tex @@ -0,0 +1,34 @@ +\section{Module \ocamlinlinecode{Nested}}\label{module-Nested}% +This comment needs to be here before \#235 is fixed. + +\subsection{Module\label{module}}% +\label{module-Nested-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Nested-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Type\label{type}}% +\label{module-Nested-module-X-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\begin{ocamlindent}Some type.\end{ocamlindent}% +\medbreak +\subsubsection{Values\label{values}}% +\label{module-Nested-module-X-val-x}\ocamlcodefragment{\ocamltag{keyword}{val} x : \hyperref[module-Nested-module-X-type-t]{\ocamlinlinecode{t}}}\begin{ocamlindent}The value of x.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This is module X.\end{ocamlindent}% +\medbreak +\subsection{Module type\label{module-type}}% +\label{module-Nested-module-type-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Nested-module-type-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Type\label{type}}% +\label{module-Nested-module-type-Y-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\begin{ocamlindent}Some type.\end{ocamlindent}% +\medbreak +\subsubsection{Values\label{values}}% +\label{module-Nested-module-type-Y-val-y}\ocamlcodefragment{\ocamltag{keyword}{val} y : \hyperref[module-Nested-module-type-Y-type-t]{\ocamlinlinecode{t}}}\begin{ocamlindent}The value of y.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This is module type Y.\end{ocamlindent}% +\medbreak +\subsection{Functor\label{functor}}% +\label{module-Nested-module-F}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Nested-module-F]{\ocamlinlinecode{F}}}\ocamlcodefragment{ (\hyperref[module-Nested-module-F-argument-1-Arg1]{\ocamlinlinecode{Arg1}} : \hyperref[module-Nested-module-type-Y]{\ocamlinlinecode{Y}}) (\hyperref[module-Nested-module-F-argument-2-Arg2]{\ocamlinlinecode{Arg2}} : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\begin{ocamlindent}This is a functor F.\end{ocamlindent}% +\medbreak +\subsection{Class\label{class}}% +\label{module-Nested-class-z}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{virtual} \hyperref[module-Nested-class-z]{\ocamlinlinecode{z}}}\ocamlcodefragment{ : \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\begin{ocamlindent}This is class z.\end{ocamlindent}% +\medbreak +\label{module-Nested-class-inherits}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{virtual} \hyperref[module-Nested-class-inherits]{\ocamlinlinecode{inherits}}}\ocamlcodefragment{ : \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ + +\input{Nested.F.tex} +\input{Nested.z.tex} +\input{Nested.inherits.tex} diff --git a/test/generators/latex/Nested.z.tex b/test/generators/latex/Nested.z.tex new file mode 100644 index 0000000000..bae6c92f1a --- /dev/null +++ b/test/generators/latex/Nested.z.tex @@ -0,0 +1,14 @@ +\section{Class \ocamlinlinecode{Nested.\allowbreak{}z}}\label{module-Nested-class-z}% +This is class z. + +Some additional comments. + +\label{module-Nested-class-z-val-y}\ocamlcodefragment{\ocamltag{keyword}{val} y : int}\begin{ocamlindent}Some value.\end{ocamlindent}% +\medbreak +\label{module-Nested-class-z-val-y'}\ocamlcodefragment{\ocamltag{keyword}{val} \ocamltag{keyword}{mutable} \ocamltag{keyword}{virtual} y' : int}\\ +\subsection{Methods\label{methods}}% +\label{module-Nested-class-z-method-z}\ocamlcodefragment{\ocamltag{keyword}{method} z : int}\begin{ocamlindent}Some method.\end{ocamlindent}% +\medbreak +\label{module-Nested-class-z-method-z'}\ocamlcodefragment{\ocamltag{keyword}{method} \ocamltag{keyword}{private} \ocamltag{keyword}{virtual} z' : int}\\ + + diff --git a/test/generators/latex/Ocamlary.Dep12.tex b/test/generators/latex/Ocamlary.Dep12.tex new file mode 100644 index 0000000000..c8e7301d08 --- /dev/null +++ b/test/generators/latex/Ocamlary.Dep12.tex @@ -0,0 +1,9 @@ +\section{Module \ocamlinlinecode{Ocamlary.\allowbreak{}Dep12}}\label{module-Ocamlary-module-Dep12}% +\subsection{Parameters\label{parameters}}% +\label{module-Ocamlary-module-Dep12-argument-1-Arg}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep12-argument-1-Arg]{\ocamlinlinecode{Arg}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep12-argument-1-Arg-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} S}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsection{Signature\label{signature}}% +\label{module-Ocamlary-module-Dep12-module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} T = \hyperref[module-Ocamlary-module-Dep12-argument-1-Arg-module-type-S]{\ocamlinlinecode{Arg.\allowbreak{}S}}}\\ + + diff --git a/test/generators/latex/Ocamlary.Dep13.c.tex b/test/generators/latex/Ocamlary.Dep13.c.tex new file mode 100644 index 0000000000..034f051f92 --- /dev/null +++ b/test/generators/latex/Ocamlary.Dep13.c.tex @@ -0,0 +1,4 @@ +\section{Class \ocamlinlinecode{Dep13.\allowbreak{}c}}\label{module-Ocamlary-module-Dep13-class-c}% +\label{module-Ocamlary-module-Dep13-class-c-method-m}\ocamlcodefragment{\ocamltag{keyword}{method} m : int}\\ + + diff --git a/test/generators/latex/Ocamlary.Dep13.tex b/test/generators/latex/Ocamlary.Dep13.tex new file mode 100644 index 0000000000..1cb1cf36d9 --- /dev/null +++ b/test/generators/latex/Ocamlary.Dep13.tex @@ -0,0 +1,4 @@ +\section{Module \ocamlinlinecode{Ocamlary.\allowbreak{}Dep13}}\label{module-Ocamlary-module-Dep13}% +\label{module-Ocamlary-module-Dep13-class-c}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[module-Ocamlary-module-Dep13-class-c]{\ocamlinlinecode{c}}}\ocamlcodefragment{ : \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ + +\input{Ocamlary.Dep13.c.tex} diff --git a/test/generators/latex/Ocamlary.Dep2.tex b/test/generators/latex/Ocamlary.Dep2.tex new file mode 100644 index 0000000000..91cd92fa9d --- /dev/null +++ b/test/generators/latex/Ocamlary.Dep2.tex @@ -0,0 +1,15 @@ +\section{Module \ocamlinlinecode{Ocamlary.\allowbreak{}Dep2}}\label{module-Ocamlary-module-Dep2}% +\subsection{Parameters\label{parameters}}% +\label{module-Ocamlary-module-Dep2-argument-1-Arg}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep2-argument-1-Arg]{\ocamlinlinecode{Arg}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep2-argument-1-Arg-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} S}\\ +\label{module-Ocamlary-module-Dep2-argument-1-Arg-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep2-argument-1-Arg-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep2-argument-1-Arg-module-X-module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} Y : \hyperref[module-Ocamlary-module-Dep2-argument-1-Arg-module-type-S]{\ocamlinlinecode{S}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsection{Signature\label{signature}}% +\label{module-Ocamlary-module-Dep2-module-A}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep2-module-A]{\ocamlinlinecode{A}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep2-module-A-module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} Y : \hyperref[module-Ocamlary-module-Dep2-argument-1-Arg-module-type-S]{\ocamlinlinecode{Arg.\allowbreak{}S}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep2-module-B}\ocamlcodefragment{\ocamltag{keyword}{module} B = \hyperref[module-Ocamlary-module-Dep2-module-A-module-Y]{\ocamlinlinecode{A.\allowbreak{}Y}}}\\ + + diff --git a/test/generators/latex/Ocamlary.Dep5.Z.tex b/test/generators/latex/Ocamlary.Dep5.Z.tex new file mode 100644 index 0000000000..d3cc24003b --- /dev/null +++ b/test/generators/latex/Ocamlary.Dep5.Z.tex @@ -0,0 +1,5 @@ +\section{Module \ocamlinlinecode{Dep5.\allowbreak{}Z}}\label{module-Ocamlary-module-Dep5-module-Z}% +\label{module-Ocamlary-module-Dep5-module-Z-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} X : \hyperref[module-Ocamlary-module-Dep5-argument-1-Arg-module-type-T]{\ocamlinlinecode{Arg.\allowbreak{}T}}}\\ +\label{module-Ocamlary-module-Dep5-module-Z-module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} Y = \hyperref[module-Ocamlary-module-Dep3]{\ocamlinlinecode{Dep3}}}\\ + + diff --git a/test/generators/latex/Ocamlary.Dep5.tex b/test/generators/latex/Ocamlary.Dep5.tex new file mode 100644 index 0000000000..f48efbd907 --- /dev/null +++ b/test/generators/latex/Ocamlary.Dep5.tex @@ -0,0 +1,15 @@ +\section{Module \ocamlinlinecode{Ocamlary.\allowbreak{}Dep5}}\label{module-Ocamlary-module-Dep5}% +\subsection{Parameters\label{parameters}}% +\label{module-Ocamlary-module-Dep5-argument-1-Arg}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep5-argument-1-Arg]{\ocamlinlinecode{Arg}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep5-argument-1-Arg-module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} T}\\ +\label{module-Ocamlary-module-Dep5-argument-1-Arg-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-Dep5-argument-1-Arg-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep5-argument-1-Arg-module-type-S-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} X : \hyperref[module-Ocamlary-module-Dep5-argument-1-Arg-module-type-T]{\ocamlinlinecode{T}}}\\ +\label{module-Ocamlary-module-Dep5-argument-1-Arg-module-type-S-module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep5-argument-1-Arg-module-type-S-module-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep5-argument-1-Arg-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} X : \hyperref[module-Ocamlary-module-Dep5-argument-1-Arg-module-type-T]{\ocamlinlinecode{T}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsection{Signature\label{signature}}% +\label{module-Ocamlary-module-Dep5-module-Z}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep5-module-Z]{\ocamlinlinecode{Z}}}\ocamlcodefragment{ : \hyperref[module-Ocamlary-module-Dep5-argument-1-Arg-module-type-S]{\ocamlinlinecode{Arg.\allowbreak{}S}} \ocamltag{keyword}{with} \ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep5-argument-1-Arg-module-type-S-module-Y]{\ocamlinlinecode{Y}} = \hyperref[module-Ocamlary-module-Dep3]{\ocamlinlinecode{Dep3}}}\\ + +\input{Ocamlary.Dep5.Z.tex} diff --git a/test/generators/latex/Ocamlary.Dep7.M.tex b/test/generators/latex/Ocamlary.Dep7.M.tex new file mode 100644 index 0000000000..095e9d38d7 --- /dev/null +++ b/test/generators/latex/Ocamlary.Dep7.M.tex @@ -0,0 +1,5 @@ +\section{Module \ocamlinlinecode{Dep7.\allowbreak{}M}}\label{module-Ocamlary-module-Dep7-module-M}% +\label{module-Ocamlary-module-Dep7-module-M-module-type-R}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} R = \hyperref[module-Ocamlary-module-Dep7-argument-1-Arg-module-type-S]{\ocamlinlinecode{Arg.\allowbreak{}S}}}\\ +\label{module-Ocamlary-module-Dep7-module-M-module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} Y : \hyperref[module-Ocamlary-module-Dep7-module-M-module-type-R]{\ocamlinlinecode{R}}}\\ + + diff --git a/test/generators/latex/Ocamlary.Dep7.tex b/test/generators/latex/Ocamlary.Dep7.tex new file mode 100644 index 0000000000..9ea695acc3 --- /dev/null +++ b/test/generators/latex/Ocamlary.Dep7.tex @@ -0,0 +1,17 @@ +\section{Module \ocamlinlinecode{Ocamlary.\allowbreak{}Dep7}}\label{module-Ocamlary-module-Dep7}% +\subsection{Parameters\label{parameters}}% +\label{module-Ocamlary-module-Dep7-argument-1-Arg}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep7-argument-1-Arg]{\ocamlinlinecode{Arg}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep7-argument-1-Arg-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} S}\\ +\label{module-Ocamlary-module-Dep7-argument-1-Arg-module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-Dep7-argument-1-Arg-module-type-T]{\ocamlinlinecode{T}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep7-argument-1-Arg-module-type-T-module-type-R}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} R = \hyperref[module-Ocamlary-module-Dep7-argument-1-Arg-module-type-S]{\ocamlinlinecode{S}}}\\ +\label{module-Ocamlary-module-Dep7-argument-1-Arg-module-type-T-module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} Y : \hyperref[module-Ocamlary-module-Dep7-argument-1-Arg-module-type-T-module-type-R]{\ocamlinlinecode{R}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep7-argument-1-Arg-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep7-argument-1-Arg-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep7-argument-1-Arg-module-X-module-type-R}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} R = \hyperref[module-Ocamlary-module-Dep7-argument-1-Arg-module-type-S]{\ocamlinlinecode{S}}}\\ +\label{module-Ocamlary-module-Dep7-argument-1-Arg-module-X-module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} Y : \hyperref[module-Ocamlary-module-Dep7-argument-1-Arg-module-X-module-type-R]{\ocamlinlinecode{R}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsection{Signature\label{signature}}% +\label{module-Ocamlary-module-Dep7-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep7-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \hyperref[module-Ocamlary-module-Dep7-argument-1-Arg-module-type-T]{\ocamlinlinecode{Arg.\allowbreak{}T}}}\\ + +\input{Ocamlary.Dep7.M.tex} diff --git a/test/generators/latex/Ocamlary.Dep9.tex b/test/generators/latex/Ocamlary.Dep9.tex new file mode 100644 index 0000000000..4a1a826d45 --- /dev/null +++ b/test/generators/latex/Ocamlary.Dep9.tex @@ -0,0 +1,9 @@ +\section{Module \ocamlinlinecode{Ocamlary.\allowbreak{}Dep9}}\label{module-Ocamlary-module-Dep9}% +\subsection{Parameters\label{parameters}}% +\label{module-Ocamlary-module-Dep9-argument-1-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep9-argument-1-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep9-argument-1-X-module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} T}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsection{Signature\label{signature}}% +\label{module-Ocamlary-module-Dep9-module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} T = \hyperref[module-Ocamlary-module-Dep9-argument-1-X-module-type-T]{\ocamlinlinecode{X.\allowbreak{}T}}}\\ + + diff --git a/test/generators/latex/Ocamlary.FunctorTypeOf.tex b/test/generators/latex/Ocamlary.FunctorTypeOf.tex new file mode 100644 index 0000000000..544082486a --- /dev/null +++ b/test/generators/latex/Ocamlary.FunctorTypeOf.tex @@ -0,0 +1,36 @@ +\section{Module \ocamlinlinecode{Ocamlary.\allowbreak{}FunctorTypeOf}}\label{module-Ocamlary-module-FunctorTypeOf}% +This comment is for \ocamlinlinecode{FunctorTypeOf}. + +\subsection{Parameters\label{parameters}}% +\label{module-Ocamlary-module-FunctorTypeOf-argument-1-Collection}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-FunctorTypeOf-argument-1-Collection]{\ocamlinlinecode{Collection}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}. + +\label{module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-type-collection}\ocamlcodefragment{\ocamltag{keyword}{type} collection}\begin{ocamlindent}This comment is for \ocamlinlinecode{collection}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element}\\ +\label{module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-module-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-module-InnerModuleA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-module-InnerModuleA-module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-module-InnerModuleA-module-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-module-InnerModuleA-module-InnerModuleA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[module-Ocamlary-type-a+u+function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-module-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-module-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-module-InnerModuleA-module-type-InnerModuleTypeA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-module-type-InnerModuleTypeA]{\ocamlinlinecode{InnerModuleTypeA}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-module-type-InnerModuleTypeA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsection{Signature\label{signature}}% +\label{module-Ocamlary-module-FunctorTypeOf-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-FunctorTypeOf-argument-1-Collection-type-collection]{\ocamlinlinecode{Collection.\allowbreak{}collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak + + diff --git a/test/generators/latex/Ocamlary.ModuleWithSignature.tex b/test/generators/latex/Ocamlary.ModuleWithSignature.tex new file mode 100644 index 0000000000..0ffe609d47 --- /dev/null +++ b/test/generators/latex/Ocamlary.ModuleWithSignature.tex @@ -0,0 +1,5 @@ +\section{Module \ocamlinlinecode{Ocamlary.\allowbreak{}ModuleWithSignature}}\label{module-Ocamlary-module-ModuleWithSignature}% +A plain module of a signature of \hyperref[module-Ocamlary-module-type-EmptySig]{\ocamlinlinecode{\ocamlinlinecode{EmptySig}}[p\pageref*{module-Ocamlary-module-type-EmptySig}]} (reference) + + + diff --git a/test/generators/latex/Ocamlary.ModuleWithSignatureAlias.tex b/test/generators/latex/Ocamlary.ModuleWithSignatureAlias.tex new file mode 100644 index 0000000000..1520b73330 --- /dev/null +++ b/test/generators/latex/Ocamlary.ModuleWithSignatureAlias.tex @@ -0,0 +1,10 @@ +\section{Module \ocamlinlinecode{Ocamlary.\allowbreak{}ModuleWithSignatureAlias}}\label{module-Ocamlary-module-ModuleWithSignatureAlias}% +A plain module with an alias signature + +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{deprecated}]{I don't like this element any more. + +}\end{description}% + + diff --git a/test/generators/latex/Ocamlary.Recollection.tex b/test/generators/latex/Ocamlary.Recollection.tex new file mode 100644 index 0000000000..63e3562c8f --- /dev/null +++ b/test/generators/latex/Ocamlary.Recollection.tex @@ -0,0 +1,57 @@ +\section{Module \ocamlinlinecode{Ocamlary.\allowbreak{}Recollection}}\label{module-Ocamlary-module-Recollection}% +\subsection{Parameters\label{parameters}}% +\label{module-Ocamlary-module-Recollection-argument-1-C}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Recollection-argument-1-C]{\ocamlinlinecode{C}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}. + +\label{module-Ocamlary-module-Recollection-argument-1-C-type-collection}\ocamlcodefragment{\ocamltag{keyword}{type} collection}\begin{ocamlindent}This comment is for \ocamlinlinecode{collection}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-Recollection-argument-1-C-type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element}\\ +\label{module-Ocamlary-module-Recollection-argument-1-C-module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Recollection-argument-1-C-module-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Recollection-argument-1-C-module-InnerModuleA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-Recollection-argument-1-C-type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-Recollection-argument-1-C-module-InnerModuleA-module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Recollection-argument-1-C-module-InnerModuleA-module-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Recollection-argument-1-C-module-InnerModuleA-module-InnerModuleA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[module-Ocamlary-type-a+u+function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-Recollection-argument-1-C-module-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-Recollection-argument-1-C-module-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Recollection-argument-1-C-module-InnerModuleA-module-type-InnerModuleTypeA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-Recollection-argument-1-C-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-Recollection-argument-1-C-module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-Recollection-argument-1-C-module-type-InnerModuleTypeA]{\ocamlinlinecode{InnerModuleTypeA}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Recollection-argument-1-C-module-type-InnerModuleTypeA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-Recollection-argument-1-C-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsection{Signature\label{signature}}% +This comment is for \ocamlinlinecode{CollectionModule}. + +\label{module-Ocamlary-module-Recollection-type-collection}\ocamlcodefragment{\ocamltag{keyword}{type} collection = \hyperref[module-Ocamlary-module-Recollection-argument-1-C-type-element]{\ocamlinlinecode{C.\allowbreak{}element}} list}\begin{ocamlindent}This comment is for \ocamlinlinecode{collection}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-Recollection-type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element = \hyperref[module-Ocamlary-module-Recollection-argument-1-C-type-collection]{\ocamlinlinecode{C.\allowbreak{}collection}}}\\ +\label{module-Ocamlary-module-Recollection-module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Recollection-module-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Recollection-module-InnerModuleA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-Recollection-type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-Recollection-module-InnerModuleA-module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Recollection-module-InnerModuleA-module-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Recollection-module-InnerModuleA-module-InnerModuleA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[module-Ocamlary-type-a+u+function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-Recollection-module-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-Recollection-module-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Recollection-module-InnerModuleA-module-type-InnerModuleTypeA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-Recollection-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-Recollection-module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-Recollection-module-type-InnerModuleTypeA]{\ocamlinlinecode{InnerModuleTypeA}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Recollection-module-type-InnerModuleTypeA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-Recollection-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}% +\medbreak + + diff --git a/test/generators/latex/Ocamlary.With3.N.tex b/test/generators/latex/Ocamlary.With3.N.tex new file mode 100644 index 0000000000..2d853c67f0 --- /dev/null +++ b/test/generators/latex/Ocamlary.With3.N.tex @@ -0,0 +1,4 @@ +\section{Module \ocamlinlinecode{With3.\allowbreak{}N}}\label{module-Ocamlary-module-With3-module-N}% +\label{module-Ocamlary-module-With3-module-N-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ + + diff --git a/test/generators/latex/Ocamlary.With3.tex b/test/generators/latex/Ocamlary.With3.tex new file mode 100644 index 0000000000..3605791514 --- /dev/null +++ b/test/generators/latex/Ocamlary.With3.tex @@ -0,0 +1,5 @@ +\section{Module \ocamlinlinecode{Ocamlary.\allowbreak{}With3}}\label{module-Ocamlary-module-With3}% +\label{module-Ocamlary-module-With3-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} M = \hyperref[module-Ocamlary-module-With2]{\ocamlinlinecode{With2}}}\\ +\label{module-Ocamlary-module-With3-module-N}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-With3-module-N]{\ocamlinlinecode{N}}}\ocamlcodefragment{ : \hyperref[module-Ocamlary-module-With2-module-type-S]{\ocamlinlinecode{M.\allowbreak{}S}}}\\ + +\input{Ocamlary.With3.N.tex} diff --git a/test/generators/latex/Ocamlary.With4.N.tex b/test/generators/latex/Ocamlary.With4.N.tex new file mode 100644 index 0000000000..0dfc5ccdcb --- /dev/null +++ b/test/generators/latex/Ocamlary.With4.N.tex @@ -0,0 +1,4 @@ +\section{Module \ocamlinlinecode{With4.\allowbreak{}N}}\label{module-Ocamlary-module-With4-module-N}% +\label{module-Ocamlary-module-With4-module-N-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ + + diff --git a/test/generators/latex/Ocamlary.With4.tex b/test/generators/latex/Ocamlary.With4.tex new file mode 100644 index 0000000000..8577e0bf06 --- /dev/null +++ b/test/generators/latex/Ocamlary.With4.tex @@ -0,0 +1,4 @@ +\section{Module \ocamlinlinecode{Ocamlary.\allowbreak{}With4}}\label{module-Ocamlary-module-With4}% +\label{module-Ocamlary-module-With4-module-N}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-With4-module-N]{\ocamlinlinecode{N}}}\ocamlcodefragment{ : \hyperref[module-Ocamlary-module-With2-module-type-S]{\ocamlinlinecode{With2.\allowbreak{}S}}}\\ + +\input{Ocamlary.With4.N.tex} diff --git a/test/generators/latex/Ocamlary.With7.tex b/test/generators/latex/Ocamlary.With7.tex new file mode 100644 index 0000000000..6322192634 --- /dev/null +++ b/test/generators/latex/Ocamlary.With7.tex @@ -0,0 +1,9 @@ +\section{Module \ocamlinlinecode{Ocamlary.\allowbreak{}With7}}\label{module-Ocamlary-module-With7}% +\subsection{Parameters\label{parameters}}% +\label{module-Ocamlary-module-With7-argument-1-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-With7-argument-1-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-With7-argument-1-X-module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} T}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsection{Signature\label{signature}}% +\label{module-Ocamlary-module-With7-module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} T = \hyperref[module-Ocamlary-module-With7-argument-1-X-module-type-T]{\ocamlinlinecode{X.\allowbreak{}T}}}\\ + + diff --git a/test/generators/latex/Ocamlary.empty_class.tex b/test/generators/latex/Ocamlary.empty_class.tex new file mode 100644 index 0000000000..d7c2f6ba65 --- /dev/null +++ b/test/generators/latex/Ocamlary.empty_class.tex @@ -0,0 +1,3 @@ +\section{Class \ocamlinlinecode{Ocamlary.\allowbreak{}empty\_\allowbreak{}class}}\label{module-Ocamlary-class-empty+u+class}% + + diff --git a/test/generators/latex/Ocamlary.one_method_class.tex b/test/generators/latex/Ocamlary.one_method_class.tex new file mode 100644 index 0000000000..9859e5c28e --- /dev/null +++ b/test/generators/latex/Ocamlary.one_method_class.tex @@ -0,0 +1,4 @@ +\section{Class \ocamlinlinecode{Ocamlary.\allowbreak{}one\_\allowbreak{}method\_\allowbreak{}class}}\label{module-Ocamlary-class-one+u+method+u+class}% +\label{module-Ocamlary-class-one+u+method+u+class-method-go}\ocamlcodefragment{\ocamltag{keyword}{method} go : unit}\\ + + diff --git a/test/generators/latex/Ocamlary.param_class.tex b/test/generators/latex/Ocamlary.param_class.tex new file mode 100644 index 0000000000..ecff6fce91 --- /dev/null +++ b/test/generators/latex/Ocamlary.param_class.tex @@ -0,0 +1,4 @@ +\section{Class \ocamlinlinecode{Ocamlary.\allowbreak{}param\_\allowbreak{}class}}\label{module-Ocamlary-class-param+u+class}% +\label{module-Ocamlary-class-param+u+class-method-v}\ocamlcodefragment{\ocamltag{keyword}{method} v : \ocamltag{type-var}{'a}}\\ + + diff --git a/test/generators/latex/Ocamlary.tex b/test/generators/latex/Ocamlary.tex new file mode 100644 index 0000000000..e643d6cead --- /dev/null +++ b/test/generators/latex/Ocamlary.tex @@ -0,0 +1,970 @@ +\section{Module \ocamlinlinecode{Ocamlary}}\label{module-Ocamlary}% +This is an \emph{interface} with \bold{all} of the \emph{module system} features. This documentation demonstrates: + +\begin{itemize}\item{comment formatting}% +\item{unassociated comments}% +\item{documentation sections}% +\item{module system documentation including + +\begin{enumerate}\item{submodules}% +\item{module aliases}% +\item{module types}% +\item{module type aliases}% +\item{modules with signatures}% +\item{modules with aliased signatures}\end{enumerate}% +}\end{itemize}% +A numbered list: + +\begin{enumerate}\item{3}% +\item{2}% +\item{1}\end{enumerate}% +David Sheets is the author. + +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{author}]{David Sheets}\end{description}% +You may find more information about this HTML documentation renderer at \href{https://github.com/dsheets/ocamlary}{github.com/dsheets/ocamlary}\footnote{\url{https://github.com/dsheets/ocamlary}}. + +This is some verbatim text: + +\begin{verbatim}verbatim\end{verbatim}% +This is some verbatim text: + +\begin{verbatim}[][df[]]}}\end{verbatim}% +Here is some raw LaTeX: $e^{i\pi} = -1$ + +Here is an index table of \ocamlinlinecode{Empty} modules: + +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{\hyperref[module-Ocamlary-module-Empty]{\ocamlinlinecode{\ocamlinlinecode{Empty}}[p\pageref*{module-Ocamlary-module-Empty}]}}]{A plain, empty module}% +\item[{\hyperref[module-Ocamlary-module-Empty]{\ocamlinlinecode{\ocamlinlinecode{EmptyAlias}}[p\pageref*{module-Ocamlary-module-Empty}]}}]{A plain module alias of \ocamlinlinecode{Empty}}\end{description}% +Here is a table of links to indexes: \ocamlinlinecode{indexlist} + +Here is some superscript: x\textsuperscript{2} + +Here is some subscript: x\textsubscript{0} + +Here are some escaped brackets: \{ [ @ ] \} + +Here is some \emph{emphasis} \ocamlinlinecode{followed by code}. + +An unassociated comment + +\subsection{Level 1\label{level-1}}% +\subsubsection{Level 2\label{level-2}}% +\subsubsection{Level 3\label{level-3}}% +\subsubsection{Level 4\label{level-4}}% +\subsubsection{Basic module stuff\label{basic-module-stuff}}% +\label{module-Ocamlary-module-Empty}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Empty]{\ocamlinlinecode{Empty}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}A plain, empty module\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-Empty}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-Empty]{\ocamlinlinecode{Empty}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-Empty-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}An ambiguous, misnamed module type\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-MissingComment}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-MissingComment]{\ocamlinlinecode{MissingComment}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-MissingComment-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}An ambiguous, misnamed module type\end{ocamlindent}% +\medbreak +\subsection{Section 9000\label{s9000}}% +\label{module-Ocamlary-module-EmptyAlias}\ocamlcodefragment{\ocamltag{keyword}{module} EmptyAlias = \hyperref[module-Ocamlary-module-Empty]{\ocamlinlinecode{Empty}}}\begin{ocamlindent}A plain module alias of \ocamlinlinecode{Empty}\end{ocamlindent}% +\medbreak +\subsubsection{EmptySig\label{emptySig}}% +\label{module-Ocamlary-module-type-EmptySig}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-EmptySig]{\ocamlinlinecode{EmptySig}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}A plain, empty module signature\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-EmptySigAlias}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-EmptySigAlias]{\ocamlinlinecode{EmptySigAlias}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}A plain, empty module signature alias of\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-ModuleWithSignature}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-ModuleWithSignature]{\ocamlinlinecode{ModuleWithSignature}}}\ocamlcodefragment{ : \hyperref[module-Ocamlary-module-type-EmptySig]{\ocamlinlinecode{EmptySig}}}\begin{ocamlindent}A plain module of a signature of \hyperref[module-Ocamlary-module-type-EmptySig]{\ocamlinlinecode{\ocamlinlinecode{EmptySig}}[p\pageref*{module-Ocamlary-module-type-EmptySig}]} (reference)\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-ModuleWithSignatureAlias}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-ModuleWithSignatureAlias]{\ocamlinlinecode{ModuleWithSignatureAlias}}}\ocamlcodefragment{ : \hyperref[module-Ocamlary-module-type-EmptySigAlias]{\ocamlinlinecode{EmptySigAlias}}}\begin{ocamlindent}A plain module with an alias signature\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-One}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-One]{\ocamlinlinecode{One}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-One-type-one}\ocamlcodefragment{\ocamltag{keyword}{type} one}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-SigForMod}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-SigForMod]{\ocamlinlinecode{SigForMod}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-SigForMod-module-Inner}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-SigForMod-module-Inner]{\ocamlinlinecode{Inner}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-SigForMod-module-Inner-module-type-Empty}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-SigForMod-module-Inner-module-type-Empty]{\ocamlinlinecode{Empty}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}There's a signature in a module in this signature.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-SuperSig}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-SuperSig]{\ocamlinlinecode{SuperSig}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-SuperSig-module-type-SubSigA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-SuperSig-module-type-SubSigA]{\ocamlinlinecode{SubSigA}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{A Labeled Section Header Inside of a Signature\label{subSig}}% +\label{module-Ocamlary-module-type-SuperSig-module-type-SubSigA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Ocamlary-module-type-SuperSig-module-type-SubSigA-module-SubSigAMod}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-SuperSig-module-type-SubSigA-module-SubSigAMod]{\ocamlinlinecode{SubSigAMod}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-SuperSig-module-type-SubSigA-module-SubSigAMod-type-sub+u+sig+u+a+u+mod}\ocamlcodefragment{\ocamltag{keyword}{type} sub\_\allowbreak{}sig\_\allowbreak{}a\_\allowbreak{}mod}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-SuperSig-module-type-SubSigB}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-SuperSig-module-type-SubSigB]{\ocamlinlinecode{SubSigB}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Another Labeled Section Header Inside of a Signature\label{subSig}}% +\label{module-Ocamlary-module-type-SuperSig-module-type-SubSigB-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-SuperSig-module-type-EmptySig}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-SuperSig-module-type-EmptySig]{\ocamlinlinecode{EmptySig}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-SuperSig-module-type-EmptySig-type-not+u+actually+u+empty}\ocamlcodefragment{\ocamltag{keyword}{type} not\_\allowbreak{}actually\_\allowbreak{}empty}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-SuperSig-module-type-One}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-SuperSig-module-type-One]{\ocamlinlinecode{One}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-SuperSig-module-type-One-type-two}\ocamlcodefragment{\ocamltag{keyword}{type} two}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-SuperSig-module-type-SuperSig}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-SuperSig-module-type-SuperSig]{\ocamlinlinecode{SuperSig}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +For a good time, see \ocamlinlinecode{SuperSig}.SubSigA.subSig or \ocamlinlinecode{SuperSig}.SubSigB.subSig or \hyperref[module-Ocamlary-module-type-SuperSig-module-type-EmptySig]{\ocamlinlinecode{\ocamlinlinecode{SuperSig.\allowbreak{}EmptySig}}[p\pageref*{module-Ocamlary-module-type-SuperSig-module-type-EmptySig}]}. Section \hyperref[module-Ocamlary-s9000]{\ocamlinlinecode{Section 9000}[p\pageref*{module-Ocamlary-s9000}]} is also interesting. \hyperref[module-Ocamlary-emptySig]{\ocamlinlinecode{EmptySig}[p\pageref*{module-Ocamlary-emptySig}]} is the section and \hyperref[module-Ocamlary-module-type-EmptySig]{\ocamlinlinecode{\ocamlinlinecode{EmptySig}}[p\pageref*{module-Ocamlary-module-type-EmptySig}]} is the module signature. + +\label{module-Ocamlary-module-Buffer}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Buffer]{\ocamlinlinecode{Buffer}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Buffer-val-f}\ocamlcodefragment{\ocamltag{keyword}{val} f : \hyperref[xref-unresolved]{\ocamlinlinecode{Stdlib}}.\allowbreak{}Buffer.\allowbreak{}t \ocamltag{arrow}{$\rightarrow$} unit}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}\ocamlinlinecode{Buffer}.t\end{ocamlindent}% +\medbreak +Some text before exception title. + +\subsubsection{Basic exception stuff\label{basic-exception-stuff}}% +After exception title. + +\label{module-Ocamlary-exception-Kaboom}\ocamlcodefragment{\ocamltag{keyword}{exception} \ocamltag{exception}{Kaboom} \ocamltag{keyword}{of} unit}\begin{ocamlindent}Unary exception constructor\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-exception-Kablam}\ocamlcodefragment{\ocamltag{keyword}{exception} \ocamltag{exception}{Kablam} \ocamltag{keyword}{of} unit * unit}\begin{ocamlindent}Binary exception constructor\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-exception-Kapow}\ocamlcodefragment{\ocamltag{keyword}{exception} \ocamltag{exception}{Kapow} \ocamltag{keyword}{of} unit * unit}\begin{ocamlindent}Unary exception constructor over binary tuple\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-exception-EmptySig}\ocamlcodefragment{\ocamltag{keyword}{exception} \ocamltag{exception}{EmptySig}}\begin{ocamlindent}\hyperref[module-Ocamlary-module-type-EmptySig]{\ocamlinlinecode{\ocamlinlinecode{EmptySig}}[p\pageref*{module-Ocamlary-module-type-EmptySig}]} is a module and \hyperref[module-Ocamlary-exception-EmptySig]{\ocamlinlinecode{\ocamlinlinecode{EmptySig}}[p\pageref*{module-Ocamlary-exception-EmptySig}]} is this exception.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-exception-EmptySigAlias}\ocamlcodefragment{\ocamltag{keyword}{exception} \ocamltag{exception}{EmptySigAlias}}\begin{ocamlindent}\hyperref[module-Ocamlary-exception-EmptySigAlias]{\ocamlinlinecode{\ocamlinlinecode{EmptySigAlias}}[p\pageref*{module-Ocamlary-exception-EmptySigAlias}]} is this exception.\end{ocamlindent}% +\medbreak +\subsubsection{Basic type and value stuff with advanced doc comments\label{basic-type-and-value-stuff-with-advanced-doc-comments}}% +\label{module-Ocamlary-type-a+u+function}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) a\_\allowbreak{}function = \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'b}}\begin{ocamlindent}\hyperref[module-Ocamlary-type-a+u+function]{\ocamlinlinecode{\ocamlinlinecode{a\_\allowbreak{}function}}[p\pageref*{module-Ocamlary-type-a+u+function}]} is this type and \hyperref[module-Ocamlary-val-a+u+function]{\ocamlinlinecode{\ocamlinlinecode{a\_\allowbreak{}function}}[p\pageref*{module-Ocamlary-val-a+u+function}]} is the value below.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-val-a+u+function}\ocamlcodefragment{\ocamltag{keyword}{val} a\_\allowbreak{}function : x:int \ocamltag{arrow}{$\rightarrow$} int}\begin{ocamlindent}This is \ocamlinlinecode{a\_\allowbreak{}function} with param and return type.\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{parameter x}]{the \ocamlinlinecode{x} coordinate}\end{description}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{returns}]{the \ocamlinlinecode{y} coordinate}\end{description}% +\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-val-fun+u+fun+u+fun}\ocamlcodefragment{\ocamltag{keyword}{val} fun\_\allowbreak{}fun\_\allowbreak{}fun : ((int,\allowbreak{} int) \hyperref[module-Ocamlary-type-a+u+function]{\ocamlinlinecode{a\_\allowbreak{}function}},\allowbreak{} (unit,\allowbreak{} unit) \hyperref[module-Ocamlary-type-a+u+function]{\ocamlinlinecode{a\_\allowbreak{}function}}) \hyperref[module-Ocamlary-type-a+u+function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\\ +\label{module-Ocamlary-val-fun+u+maybe}\ocamlcodefragment{\ocamltag{keyword}{val} fun\_\allowbreak{}maybe : ?yes:unit \ocamltag{arrow}{$\rightarrow$} unit \ocamltag{arrow}{$\rightarrow$} int}\\ +\label{module-Ocamlary-val-not+u+found}\ocamlcodefragment{\ocamltag{keyword}{val} not\_\allowbreak{}found : unit \ocamltag{arrow}{$\rightarrow$} unit}\begin{ocamlindent}\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{raises Not\_\allowbreak{}found}]{That's all it does}\end{description}% +\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-val-ocaml+u+org}\ocamlcodefragment{\ocamltag{keyword}{val} ocaml\_\allowbreak{}org : string}\begin{ocamlindent}\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{see \href{http://ocaml.org/}{http://ocaml.org/}\footnote{\url{http://ocaml.org/}}}]{The OCaml Web site}\end{description}% +\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-val-some+u+file}\ocamlcodefragment{\ocamltag{keyword}{val} some\_\allowbreak{}file : string}\begin{ocamlindent}\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{see \ocamlinlinecode{some\_\allowbreak{}file}}]{The file called \ocamlinlinecode{some\_\allowbreak{}file}}\end{description}% +\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-val-some+u+doc}\ocamlcodefragment{\ocamltag{keyword}{val} some\_\allowbreak{}doc : string}\begin{ocamlindent}\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{see some\_\allowbreak{}doc}]{The document called \ocamlinlinecode{some\_\allowbreak{}doc}}\end{description}% +\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-val-since+u+mesozoic}\ocamlcodefragment{\ocamltag{keyword}{val} since\_\allowbreak{}mesozoic : unit}\begin{ocamlindent}This value was introduced in the Mesozoic era.\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{since}]{mesozoic}\end{description}% +\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-val-changing}\ocamlcodefragment{\ocamltag{keyword}{val} changing : unit}\begin{ocamlindent}This value has had changes in 1.0.0, 1.1.0, and 1.2.0.\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{before 1.\allowbreak{}0.\allowbreak{}0}]{before 1.0.0}\end{description}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{before 1.\allowbreak{}1.\allowbreak{}0}]{before 1.1.0}\end{description}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{version}]{1.2.0}\end{description}% +\end{ocamlindent}% +\medbreak +\subsubsection{Some Operators\label{some-operators}}% +\label{module-Ocamlary-val-(+t+-)}\ocamlcodefragment{\ocamltag{keyword}{val} (\textasciitilde{}-) : unit}\\ +\label{module-Ocamlary-val-(!)}\ocamlcodefragment{\ocamltag{keyword}{val} (!) : unit}\\ +\label{module-Ocamlary-val-(@)}\ocamlcodefragment{\ocamltag{keyword}{val} (@) : unit}\\ +\label{module-Ocamlary-val-($)}\ocamlcodefragment{\ocamltag{keyword}{val} (\$) : unit}\\ +\label{module-Ocamlary-val-(%)}\ocamlcodefragment{\ocamltag{keyword}{val} (\%) : unit}\\ +\label{module-Ocamlary-val-(&)}\ocamlcodefragment{\ocamltag{keyword}{val} (\&) : unit}\\ +\label{module-Ocamlary-val-(*)}\ocamlcodefragment{\ocamltag{keyword}{val} (*) : unit}\\ +\label{module-Ocamlary-val-(-)}\ocamlcodefragment{\ocamltag{keyword}{val} (-) : unit}\\ +\label{module-Ocamlary-val-(+++)}\ocamlcodefragment{\ocamltag{keyword}{val} (+) : unit}\\ +\label{module-Ocamlary-val-(-?)}\ocamlcodefragment{\ocamltag{keyword}{val} (-?) : unit}\\ +\label{module-Ocamlary-val-(/)}\ocamlcodefragment{\ocamltag{keyword}{val} (/) : unit}\\ +\label{module-Ocamlary-val-(:=)}\ocamlcodefragment{\ocamltag{keyword}{val} (:=) : unit}\\ +\label{module-Ocamlary-val-(=)}\ocamlcodefragment{\ocamltag{keyword}{val} (=) : unit}\\ +\label{module-Ocamlary-val-(land)}\ocamlcodefragment{\ocamltag{keyword}{val} (land) : unit}\\ +\subsubsection{Advanced Module Stuff\label{advanced-module-stuff}}% +\label{module-Ocamlary-module-CollectionModule}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-CollectionModule]{\ocamlinlinecode{CollectionModule}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-CollectionModule-type-collection}\ocamlcodefragment{\ocamltag{keyword}{type} collection}\begin{ocamlindent}This comment is for \ocamlinlinecode{collection}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-CollectionModule-type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element}\\ +\label{module-Ocamlary-module-CollectionModule-module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-CollectionModule-module-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-CollectionModule-module-InnerModuleA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-CollectionModule-type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-CollectionModule-module-InnerModuleA-module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-CollectionModule-module-InnerModuleA-module-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-CollectionModule-module-InnerModuleA-module-InnerModuleA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[module-Ocamlary-type-a+u+function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-CollectionModule-module-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-CollectionModule-module-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-CollectionModule-module-InnerModuleA-module-type-InnerModuleTypeA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-CollectionModule-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-CollectionModule-module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-CollectionModule-module-type-InnerModuleTypeA]{\ocamlinlinecode{InnerModuleTypeA}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-CollectionModule-module-type-InnerModuleTypeA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-CollectionModule-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-COLLECTION}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{COLLECTION}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}. + +\label{module-Ocamlary-module-type-COLLECTION-type-collection}\ocamlcodefragment{\ocamltag{keyword}{type} collection}\begin{ocamlindent}This comment is for \ocamlinlinecode{collection}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-COLLECTION-type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element}\\ +\label{module-Ocamlary-module-type-COLLECTION-module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-COLLECTION-module-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-COLLECTION-module-InnerModuleA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-COLLECTION-type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-COLLECTION-module-InnerModuleA-module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-COLLECTION-module-InnerModuleA-module-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-COLLECTION-module-InnerModuleA-module-InnerModuleA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[module-Ocamlary-type-a+u+function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-COLLECTION-module-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-COLLECTION-module-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-COLLECTION-module-InnerModuleA-module-type-InnerModuleTypeA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-COLLECTION-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-COLLECTION-module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-COLLECTION-module-type-InnerModuleTypeA]{\ocamlinlinecode{InnerModuleTypeA}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-COLLECTION-module-type-InnerModuleTypeA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-COLLECTION-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}module type of\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-Recollection}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Recollection]{\ocamlinlinecode{Recollection}}}\ocamlcodefragment{ (\hyperref[module-Ocamlary-module-Recollection-argument-1-C]{\ocamlinlinecode{C}} : \hyperref[module-Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{COLLECTION}}) : \hyperref[module-Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{COLLECTION}} \ocamltag{keyword}{with} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-COLLECTION-type-collection]{\ocamlinlinecode{collection}} = \hyperref[module-Ocamlary-module-Recollection-argument-1-C-type-element]{\ocamlinlinecode{C.\allowbreak{}element}} list \ocamltag{keyword}{and} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-COLLECTION-type-element]{\ocamlinlinecode{element}} = \hyperref[module-Ocamlary-module-Recollection-argument-1-C-type-collection]{\ocamlinlinecode{C.\allowbreak{}collection}}}\\ +\label{module-Ocamlary-module-type-MMM}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-MMM]{\ocamlinlinecode{MMM}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-MMM-module-C}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-MMM-module-C]{\ocamlinlinecode{C}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}. + +\label{module-Ocamlary-module-type-MMM-module-C-type-collection}\ocamlcodefragment{\ocamltag{keyword}{type} collection}\begin{ocamlindent}This comment is for \ocamlinlinecode{collection}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-MMM-module-C-type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element}\\ +\label{module-Ocamlary-module-type-MMM-module-C-module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-MMM-module-C-module-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-MMM-module-C-module-InnerModuleA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-MMM-module-C-type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-MMM-module-C-module-InnerModuleA-module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-MMM-module-C-module-InnerModuleA-module-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-MMM-module-C-module-InnerModuleA-module-InnerModuleA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[module-Ocamlary-type-a+u+function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-MMM-module-C-module-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-MMM-module-C-module-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-MMM-module-C-module-InnerModuleA-module-type-InnerModuleTypeA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-MMM-module-C-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-MMM-module-C-module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-MMM-module-C-module-type-InnerModuleTypeA]{\ocamlinlinecode{InnerModuleTypeA}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-MMM-module-C-module-type-InnerModuleTypeA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-MMM-module-C-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-RECOLLECTION}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-RECOLLECTION]{\ocamlinlinecode{RECOLLECTION}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-RECOLLECTION-module-C}\ocamlcodefragment{\ocamltag{keyword}{module} C = \hyperref[module-Ocamlary-module-Recollection]{\ocamlinlinecode{Recollection(CollectionModule)}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-RecollectionModule}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-RecollectionModule]{\ocamlinlinecode{RecollectionModule}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-RecollectionModule-type-collection}\ocamlcodefragment{\ocamltag{keyword}{type} collection = \hyperref[module-Ocamlary-module-CollectionModule-type-element]{\ocamlinlinecode{CollectionModule.\allowbreak{}element}} list}\\ +\label{module-Ocamlary-module-type-RecollectionModule-type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element = \hyperref[module-Ocamlary-module-CollectionModule-type-collection]{\ocamlinlinecode{CollectionModule.\allowbreak{}collection}}}\\ +\label{module-Ocamlary-module-type-RecollectionModule-module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-RecollectionModule-module-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-RecollectionModule-module-InnerModuleA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-RecollectionModule-type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-RecollectionModule-module-InnerModuleA-module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-RecollectionModule-module-InnerModuleA-module-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-RecollectionModule-module-InnerModuleA-module-InnerModuleA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[module-Ocamlary-type-a+u+function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-RecollectionModule-module-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-RecollectionModule-module-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-RecollectionModule-module-InnerModuleA-module-type-InnerModuleTypeA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-RecollectionModule-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-RecollectionModule-module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-RecollectionModule-module-type-InnerModuleTypeA]{\ocamlinlinecode{InnerModuleTypeA}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-RecollectionModule-module-type-InnerModuleTypeA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-RecollectionModule-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-A}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-A]{\ocamlinlinecode{A}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-A-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Ocamlary-module-type-A-module-Q}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-A-module-Q]{\ocamlinlinecode{Q}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}. + +\label{module-Ocamlary-module-type-A-module-Q-type-collection}\ocamlcodefragment{\ocamltag{keyword}{type} collection}\begin{ocamlindent}This comment is for \ocamlinlinecode{collection}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-A-module-Q-type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element}\\ +\label{module-Ocamlary-module-type-A-module-Q-module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-A-module-Q-module-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-A-module-Q-module-InnerModuleA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-A-module-Q-type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-A-module-Q-module-InnerModuleA-module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-A-module-Q-module-InnerModuleA-module-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-A-module-Q-module-InnerModuleA-module-InnerModuleA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[module-Ocamlary-type-a+u+function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-A-module-Q-module-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-A-module-Q-module-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-A-module-Q-module-InnerModuleA-module-type-InnerModuleTypeA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-A-module-Q-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-A-module-Q-module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-A-module-Q-module-type-InnerModuleTypeA]{\ocamlinlinecode{InnerModuleTypeA}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-A-module-Q-module-type-InnerModuleTypeA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-A-module-Q-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-B}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-B]{\ocamlinlinecode{B}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-B-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Ocamlary-module-type-B-module-Q}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-B-module-Q]{\ocamlinlinecode{Q}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}. + +\label{module-Ocamlary-module-type-B-module-Q-type-collection}\ocamlcodefragment{\ocamltag{keyword}{type} collection}\begin{ocamlindent}This comment is for \ocamlinlinecode{collection}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-B-module-Q-type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element}\\ +\label{module-Ocamlary-module-type-B-module-Q-module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-B-module-Q-module-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-B-module-Q-module-InnerModuleA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-B-module-Q-type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-B-module-Q-module-InnerModuleA-module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-B-module-Q-module-InnerModuleA-module-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-B-module-Q-module-InnerModuleA-module-InnerModuleA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[module-Ocamlary-type-a+u+function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-B-module-Q-module-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-B-module-Q-module-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-B-module-Q-module-InnerModuleA-module-type-InnerModuleTypeA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-B-module-Q-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-B-module-Q-module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-B-module-Q-module-type-InnerModuleTypeA]{\ocamlinlinecode{InnerModuleTypeA}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-B-module-Q-module-type-InnerModuleTypeA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-B-module-Q-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-C}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-C]{\ocamlinlinecode{C}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \hyperref[module-Ocamlary-module-type-A]{\ocamlinlinecode{A}}\label{module-Ocamlary-module-type-C-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Ocamlary-module-type-C-module-Q}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-C-module-Q]{\ocamlinlinecode{Q}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}. + +\label{module-Ocamlary-module-type-C-module-Q-type-collection}\ocamlcodefragment{\ocamltag{keyword}{type} collection}\begin{ocamlindent}This comment is for \ocamlinlinecode{collection}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-C-module-Q-type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element}\\ +\label{module-Ocamlary-module-type-C-module-Q-module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-C-module-Q-module-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-C-module-Q-module-InnerModuleA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-C-module-Q-type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-C-module-Q-module-InnerModuleA-module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-C-module-Q-module-InnerModuleA-module-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-C-module-Q-module-InnerModuleA-module-InnerModuleA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[module-Ocamlary-type-a+u+function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-C-module-Q-module-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-C-module-Q-module-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-C-module-Q-module-InnerModuleA-module-type-InnerModuleTypeA'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-C-module-Q-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-C-module-Q-module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-C-module-Q-module-type-InnerModuleTypeA]{\ocamlinlinecode{InnerModuleTypeA}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-C-module-Q-module-type-InnerModuleTypeA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-type-C-module-Q-module-InnerModuleA-module-InnerModuleA'-type-t]{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\ocamltag{keyword}{include} \hyperref[module-Ocamlary-module-type-B]{\ocamlinlinecode{B}} \ocamltag{keyword}{with} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-B-type-t]{\ocamlinlinecode{t}} := \hyperref[module-Ocamlary-module-type-C-type-t]{\ocamlinlinecode{t}} \ocamltag{keyword}{and} \ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-B-module-Q]{\ocamlinlinecode{Q}} := \hyperref[module-Ocamlary-module-type-C-module-Q]{\ocamlinlinecode{Q}}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This module type includes two signatures.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-FunctorTypeOf}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-FunctorTypeOf]{\ocamlinlinecode{FunctorTypeOf}}}\ocamlcodefragment{ (\hyperref[module-Ocamlary-module-FunctorTypeOf-argument-1-Collection]{\ocamlinlinecode{Collection}} : \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[module-Ocamlary-module-CollectionModule]{\ocamlinlinecode{CollectionModule}}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{FunctorTypeOf}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-IncludeModuleType}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-IncludeModuleType]{\ocamlinlinecode{IncludeModuleType}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}This comment is for \ocamlinlinecode{include EmptySigAlias}.\ocamltag{keyword}{include} \hyperref[module-Ocamlary-module-type-EmptySigAlias]{\ocamlinlinecode{EmptySigAlias}}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{IncludeModuleType}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-type-ToInclude}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-ToInclude]{\ocamlinlinecode{ToInclude}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-ToInclude-module-IncludedA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-ToInclude-module-IncludedA]{\ocamlinlinecode{IncludedA}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-ToInclude-module-IncludedA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-ToInclude-module-type-IncludedB}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-ToInclude-module-type-IncludedB]{\ocamlinlinecode{IncludedB}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-ToInclude-module-type-IncludedB-type-s}\ocamlcodefragment{\ocamltag{keyword}{type} s}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\ocamltag{keyword}{include} \hyperref[module-Ocamlary-module-type-ToInclude]{\ocamlinlinecode{ToInclude}}\label{module-Ocamlary-module-IncludedA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-IncludedA]{\ocamlinlinecode{IncludedA}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-IncludedA-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-IncludedB}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-IncludedB]{\ocamlinlinecode{IncludedB}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-IncludedB-type-s}\ocamlcodefragment{\ocamltag{keyword}{type} s}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsubsection{Advanced Type Stuff\label{advanced-type-stuff}}% +\label{module-Ocamlary-type-record}\ocamlcodefragment{\ocamltag{keyword}{type} record = \{}\\ +\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlinlinecode{field1 : int;\allowbreak{}}\label{module-Ocamlary-type-record.field1}& This comment is for \ocamlinlinecode{field1}.\\ +\ocamlinlinecode{field2 : int;\allowbreak{}}\label{module-Ocamlary-type-record.field2}& This comment is for \ocamlinlinecode{field2}.\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{\}}\begin{ocamlindent}This comment is for \ocamlinlinecode{record}.This comment is also for \ocamlinlinecode{record}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-type-mutable+u+record}\ocamlcodefragment{\ocamltag{keyword}{type} mutable\_\allowbreak{}record = \{}\\ +\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlinlinecode{\ocamltag{keyword}{mutable} a : int;\allowbreak{}}\label{module-Ocamlary-type-mutable+u+record.a}& \ocamlinlinecode{a} is first and mutable\\ +\ocamlinlinecode{b : unit;\allowbreak{}}\label{module-Ocamlary-type-mutable+u+record.b}& \ocamlinlinecode{b} is second and immutable\\ +\ocamlinlinecode{\ocamltag{keyword}{mutable} c : int;\allowbreak{}}\label{module-Ocamlary-type-mutable+u+record.c}& \ocamlinlinecode{c} is third and mutable\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{\}}\\ +\label{module-Ocamlary-type-universe+u+record}\ocamlcodefragment{\ocamltag{keyword}{type} universe\_\allowbreak{}record = \{}\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{nihilate : a.\allowbreak{} \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} unit;\allowbreak{}}\label{module-Ocamlary-type-universe+u+record.nihilate}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{\}}\\ +\label{module-Ocamlary-type-variant}\ocamlcodefragment{\ocamltag{keyword}{type} variant = }\\ +\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{TagA}}\label{module-Ocamlary-type-variant.TagA}& This comment is for \ocamlinlinecode{TagA}.\\ +\ocamlcodefragment{| \ocamltag{constructor}{ConstrB} \ocamltag{keyword}{of} int}\label{module-Ocamlary-type-variant.ConstrB}& This comment is for \ocamlinlinecode{ConstrB}.\\ +\ocamlcodefragment{| \ocamltag{constructor}{ConstrC} \ocamltag{keyword}{of} int * int}\label{module-Ocamlary-type-variant.ConstrC}& This comment is for binary \ocamlinlinecode{ConstrC}.\\ +\ocamlcodefragment{| \ocamltag{constructor}{ConstrD} \ocamltag{keyword}{of} int * int}\label{module-Ocamlary-type-variant.ConstrD}& This comment is for unary \ocamlinlinecode{ConstrD} of binary tuple.\\ +\end{ocamltabular}% +\\ +\begin{ocamlindent}This comment is for \ocamlinlinecode{variant}.This comment is also for \ocamlinlinecode{variant}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-type-poly+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} poly\_\allowbreak{}variant = [ }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{`TagA}\label{module-Ocamlary-type-poly+u+variant.TagA}\\ +\ocamlinlinecode{| }\ocamlinlinecode{`ConstrB \ocamltag{keyword}{of} int}\label{module-Ocamlary-type-poly+u+variant.ConstrB}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{ ]}\begin{ocamlindent}This comment is for \ocamlinlinecode{poly\_\allowbreak{}variant}.Wow! It was a polymorphic variant!\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-type-full+u+gadt}\ocamlcodefragment{\ocamltag{keyword}{type} (\_\allowbreak{},\allowbreak{} \_\allowbreak{}) full\_\allowbreak{}gadt = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{Tag} : (unit,\allowbreak{} unit) \hyperref[module-Ocamlary-type-full+u+gadt]{\ocamlinlinecode{full\_\allowbreak{}gadt}}}\label{module-Ocamlary-type-full+u+gadt.Tag}\\ +\ocamlcodefragment{| \ocamltag{constructor}{First} : \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} (\ocamltag{type-var}{'a},\allowbreak{} unit) \hyperref[module-Ocamlary-type-full+u+gadt]{\ocamlinlinecode{full\_\allowbreak{}gadt}}}\label{module-Ocamlary-type-full+u+gadt.First}\\ +\ocamlcodefragment{| \ocamltag{constructor}{Second} : \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} (unit,\allowbreak{} \ocamltag{type-var}{'a}) \hyperref[module-Ocamlary-type-full+u+gadt]{\ocamlinlinecode{full\_\allowbreak{}gadt}}}\label{module-Ocamlary-type-full+u+gadt.Second}\\ +\ocamlcodefragment{| \ocamltag{constructor}{Exist} : \ocamltag{type-var}{'a} * \ocamltag{type-var}{'b} \ocamltag{arrow}{$\rightarrow$} (\ocamltag{type-var}{'b},\allowbreak{} unit) \hyperref[module-Ocamlary-type-full+u+gadt]{\ocamlinlinecode{full\_\allowbreak{}gadt}}}\label{module-Ocamlary-type-full+u+gadt.Exist}\\ +\end{ocamltabular}% +\\ +\begin{ocamlindent}This comment is for \ocamlinlinecode{full\_\allowbreak{}gadt}.Wow! It was a GADT!\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-type-partial+u+gadt}\ocamlcodefragment{\ocamltag{keyword}{type} 'a partial\_\allowbreak{}gadt = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{AscribeTag} : \ocamltag{type-var}{'a} \hyperref[module-Ocamlary-type-partial+u+gadt]{\ocamlinlinecode{partial\_\allowbreak{}gadt}}}\label{module-Ocamlary-type-partial+u+gadt.AscribeTag}\\ +\ocamlcodefragment{| \ocamltag{constructor}{OfTag} \ocamltag{keyword}{of} \ocamltag{type-var}{'a} \hyperref[module-Ocamlary-type-partial+u+gadt]{\ocamlinlinecode{partial\_\allowbreak{}gadt}}}\label{module-Ocamlary-type-partial+u+gadt.OfTag}\\ +\ocamlcodefragment{| \ocamltag{constructor}{ExistGadtTag} : (\ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'b}) \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'a} \hyperref[module-Ocamlary-type-partial+u+gadt]{\ocamlinlinecode{partial\_\allowbreak{}gadt}}}\label{module-Ocamlary-type-partial+u+gadt.ExistGadtTag}\\ +\end{ocamltabular}% +\\ +\begin{ocamlindent}This comment is for \ocamlinlinecode{partial\_\allowbreak{}gadt}.Wow! It was a mixed GADT!\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-type-alias}\ocamlcodefragment{\ocamltag{keyword}{type} alias = \hyperref[module-Ocamlary-type-variant]{\ocamlinlinecode{variant}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{alias}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-type-tuple}\ocamlcodefragment{\ocamltag{keyword}{type} tuple = (\hyperref[module-Ocamlary-type-alias]{\ocamlinlinecode{alias}} * \hyperref[module-Ocamlary-type-alias]{\ocamlinlinecode{alias}}) * \hyperref[module-Ocamlary-type-alias]{\ocamlinlinecode{alias}} * (\hyperref[module-Ocamlary-type-alias]{\ocamlinlinecode{alias}} * \hyperref[module-Ocamlary-type-alias]{\ocamlinlinecode{alias}})}\begin{ocamlindent}This comment is for \ocamlinlinecode{tuple}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-type-variant+u+alias}\ocamlcodefragment{\ocamltag{keyword}{type} variant\_\allowbreak{}alias = \hyperref[module-Ocamlary-type-variant]{\ocamlinlinecode{variant}} = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{TagA}}\label{module-Ocamlary-type-variant+u+alias.TagA}\\ +\ocamlcodefragment{| \ocamltag{constructor}{ConstrB} \ocamltag{keyword}{of} int}\label{module-Ocamlary-type-variant+u+alias.ConstrB}\\ +\ocamlcodefragment{| \ocamltag{constructor}{ConstrC} \ocamltag{keyword}{of} int * int}\label{module-Ocamlary-type-variant+u+alias.ConstrC}\\ +\ocamlcodefragment{| \ocamltag{constructor}{ConstrD} \ocamltag{keyword}{of} int * int}\label{module-Ocamlary-type-variant+u+alias.ConstrD}\\ +\end{ocamltabular}% +\\ +\begin{ocamlindent}This comment is for \ocamlinlinecode{variant\_\allowbreak{}alias}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-type-record+u+alias}\ocamlcodefragment{\ocamltag{keyword}{type} record\_\allowbreak{}alias = \hyperref[module-Ocamlary-type-record]{\ocamlinlinecode{record}} = \{}\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{field1 : int;\allowbreak{}}\label{module-Ocamlary-type-record+u+alias.field1}\\ +\ocamlinlinecode{field2 : int;\allowbreak{}}\label{module-Ocamlary-type-record+u+alias.field2}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{\}}\begin{ocamlindent}This comment is for \ocamlinlinecode{record\_\allowbreak{}alias}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-type-poly+u+variant+u+union}\ocamlcodefragment{\ocamltag{keyword}{type} poly\_\allowbreak{}variant\_\allowbreak{}union = [ }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{\hyperref[module-Ocamlary-type-poly+u+variant]{\ocamlinlinecode{poly\_\allowbreak{}variant}}}\label{module-Ocamlary-type-poly+u+variant+u+union.poly+u+variant}\\ +\ocamlinlinecode{| }\ocamlinlinecode{`TagC}\label{module-Ocamlary-type-poly+u+variant+u+union.TagC}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{ ]}\begin{ocamlindent}This comment is for \ocamlinlinecode{poly\_\allowbreak{}variant\_\allowbreak{}union}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-type-poly+u+poly+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a poly\_\allowbreak{}poly\_\allowbreak{}variant = [ }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{`TagA \ocamltag{keyword}{of} \ocamltag{type-var}{'a}}\label{module-Ocamlary-type-poly+u+poly+u+variant.TagA}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{ ]}\\ +\label{module-Ocamlary-type-bin+u+poly+u+poly+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) bin\_\allowbreak{}poly\_\allowbreak{}poly\_\allowbreak{}variant = [ }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{`TagA \ocamltag{keyword}{of} \ocamltag{type-var}{'a}}\label{module-Ocamlary-type-bin+u+poly+u+poly+u+variant.TagA}\\ +\ocamlinlinecode{| }\ocamlinlinecode{`ConstrB \ocamltag{keyword}{of} \ocamltag{type-var}{'b}}\label{module-Ocamlary-type-bin+u+poly+u+poly+u+variant.ConstrB}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{ ]}\\ +\label{module-Ocamlary-type-open+u+poly+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a open\_\allowbreak{}poly\_\allowbreak{}variant = [> `TagA ] \ocamltag{keyword}{as} 'a}\\ +\label{module-Ocamlary-type-open+u+poly+u+variant2}\ocamlcodefragment{\ocamltag{keyword}{type} 'a open\_\allowbreak{}poly\_\allowbreak{}variant2 = [> `ConstrB of int ] \ocamltag{keyword}{as} 'a}\\ +\label{module-Ocamlary-type-open+u+poly+u+variant+u+alias}\ocamlcodefragment{\ocamltag{keyword}{type} 'a open\_\allowbreak{}poly\_\allowbreak{}variant\_\allowbreak{}alias = \ocamltag{type-var}{'a} \hyperref[module-Ocamlary-type-open+u+poly+u+variant]{\ocamlinlinecode{open\_\allowbreak{}poly\_\allowbreak{}variant}} \hyperref[module-Ocamlary-type-open+u+poly+u+variant2]{\ocamlinlinecode{open\_\allowbreak{}poly\_\allowbreak{}variant2}}}\\ +\label{module-Ocamlary-type-poly+u+fun}\ocamlcodefragment{\ocamltag{keyword}{type} 'a poly\_\allowbreak{}fun = [> `ConstrB of int ] \ocamltag{keyword}{as} 'a \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'a}}\\ +\label{module-Ocamlary-type-poly+u+fun+u+constraint}\ocamlcodefragment{\ocamltag{keyword}{type} 'a poly\_\allowbreak{}fun\_\allowbreak{}constraint = \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = [> `TagA ]}\\ +\label{module-Ocamlary-type-closed+u+poly+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a closed\_\allowbreak{}poly\_\allowbreak{}variant = [< `One | `Two ] \ocamltag{keyword}{as} 'a}\\ +\label{module-Ocamlary-type-clopen+u+poly+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a clopen\_\allowbreak{}poly\_\allowbreak{}variant = [< `One | `Two of int | `Three Two Three ] \ocamltag{keyword}{as} 'a}\\ +\label{module-Ocamlary-type-nested+u+poly+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} nested\_\allowbreak{}poly\_\allowbreak{}variant = [ }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{`A}\label{module-Ocamlary-type-nested+u+poly+u+variant.A}\\ +\ocamlinlinecode{| }\ocamlinlinecode{`B \ocamltag{keyword}{of} [ `B1 | `B2 ]}\label{module-Ocamlary-type-nested+u+poly+u+variant.B}\\ +\ocamlinlinecode{| }\ocamlinlinecode{`C}\label{module-Ocamlary-type-nested+u+poly+u+variant.C}\\ +\ocamlinlinecode{| }\ocamlinlinecode{`D \ocamltag{keyword}{of} [ `D1 of [ `D1a ] ]}\label{module-Ocamlary-type-nested+u+poly+u+variant.D}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{ ]}\\ +\label{module-Ocamlary-type-full+u+gadt+u+alias}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) full\_\allowbreak{}gadt\_\allowbreak{}alias = (\ocamltag{type-var}{'a},\allowbreak{} \ocamltag{type-var}{'b}) \hyperref[module-Ocamlary-type-full+u+gadt]{\ocamlinlinecode{full\_\allowbreak{}gadt}} = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{Tag} : (unit,\allowbreak{} unit) \hyperref[module-Ocamlary-type-full+u+gadt+u+alias]{\ocamlinlinecode{full\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{module-Ocamlary-type-full+u+gadt+u+alias.Tag}\\ +\ocamlcodefragment{| \ocamltag{constructor}{First} : \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} (\ocamltag{type-var}{'a},\allowbreak{} unit) \hyperref[module-Ocamlary-type-full+u+gadt+u+alias]{\ocamlinlinecode{full\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{module-Ocamlary-type-full+u+gadt+u+alias.First}\\ +\ocamlcodefragment{| \ocamltag{constructor}{Second} : \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} (unit,\allowbreak{} \ocamltag{type-var}{'a}) \hyperref[module-Ocamlary-type-full+u+gadt+u+alias]{\ocamlinlinecode{full\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{module-Ocamlary-type-full+u+gadt+u+alias.Second}\\ +\ocamlcodefragment{| \ocamltag{constructor}{Exist} : \ocamltag{type-var}{'a} * \ocamltag{type-var}{'b} \ocamltag{arrow}{$\rightarrow$} (\ocamltag{type-var}{'b},\allowbreak{} unit) \hyperref[module-Ocamlary-type-full+u+gadt+u+alias]{\ocamlinlinecode{full\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{module-Ocamlary-type-full+u+gadt+u+alias.Exist}\\ +\end{ocamltabular}% +\\ +\begin{ocamlindent}This comment is for \ocamlinlinecode{full\_\allowbreak{}gadt\_\allowbreak{}alias}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-type-partial+u+gadt+u+alias}\ocamlcodefragment{\ocamltag{keyword}{type} 'a partial\_\allowbreak{}gadt\_\allowbreak{}alias = \ocamltag{type-var}{'a} \hyperref[module-Ocamlary-type-partial+u+gadt]{\ocamlinlinecode{partial\_\allowbreak{}gadt}} = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{AscribeTag} : \ocamltag{type-var}{'a} \hyperref[module-Ocamlary-type-partial+u+gadt+u+alias]{\ocamlinlinecode{partial\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{module-Ocamlary-type-partial+u+gadt+u+alias.AscribeTag}\\ +\ocamlcodefragment{| \ocamltag{constructor}{OfTag} \ocamltag{keyword}{of} \ocamltag{type-var}{'a} \hyperref[module-Ocamlary-type-partial+u+gadt+u+alias]{\ocamlinlinecode{partial\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{module-Ocamlary-type-partial+u+gadt+u+alias.OfTag}\\ +\ocamlcodefragment{| \ocamltag{constructor}{ExistGadtTag} : (\ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'b}) \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'a} \hyperref[module-Ocamlary-type-partial+u+gadt+u+alias]{\ocamlinlinecode{partial\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{module-Ocamlary-type-partial+u+gadt+u+alias.ExistGadtTag}\\ +\end{ocamltabular}% +\\ +\begin{ocamlindent}This comment is for \ocamlinlinecode{partial\_\allowbreak{}gadt\_\allowbreak{}alias}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-exception-Exn+u+arrow}\ocamlcodefragment{\ocamltag{keyword}{exception} \ocamltag{exception}{Exn\_\allowbreak{}arrow} : unit \ocamltag{arrow}{$\rightarrow$} exn}\begin{ocamlindent}This comment is for \hyperref[module-Ocamlary-exception-Exn+u+arrow]{\ocamlinlinecode{\ocamlinlinecode{Exn\_\allowbreak{}arrow}}[p\pageref*{module-Ocamlary-exception-Exn+u+arrow}]}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-type-mutual+u+constr+u+a}\ocamlcodefragment{\ocamltag{keyword}{type} mutual\_\allowbreak{}constr\_\allowbreak{}a = }\\ +\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A}}\label{module-Ocamlary-type-mutual+u+constr+u+a.A}& \\ +\ocamlcodefragment{| \ocamltag{constructor}{B\_\allowbreak{}ish} \ocamltag{keyword}{of} \hyperref[module-Ocamlary-type-mutual+u+constr+u+b]{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}b}}}\label{module-Ocamlary-type-mutual+u+constr+u+a.B+u+ish}& This comment is between \hyperref[module-Ocamlary-type-mutual+u+constr+u+a]{\ocamlinlinecode{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}a}}[p\pageref*{module-Ocamlary-type-mutual+u+constr+u+a}]} and \hyperref[module-Ocamlary-type-mutual+u+constr+u+b]{\ocamlinlinecode{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}b}}[p\pageref*{module-Ocamlary-type-mutual+u+constr+u+b}]}.\\ +\end{ocamltabular}% +\\ +\begin{ocamlindent}This comment is for \hyperref[module-Ocamlary-type-mutual+u+constr+u+a]{\ocamlinlinecode{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}a}}[p\pageref*{module-Ocamlary-type-mutual+u+constr+u+a}]} then \hyperref[module-Ocamlary-type-mutual+u+constr+u+b]{\ocamlinlinecode{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}b}}[p\pageref*{module-Ocamlary-type-mutual+u+constr+u+b}]}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-type-mutual+u+constr+u+b}\ocamlcodefragment{\ocamltag{keyword}{and} mutual\_\allowbreak{}constr\_\allowbreak{}b = }\\ +\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{B}}\label{module-Ocamlary-type-mutual+u+constr+u+b.B}& \\ +\ocamlcodefragment{| \ocamltag{constructor}{A\_\allowbreak{}ish} \ocamltag{keyword}{of} \hyperref[module-Ocamlary-type-mutual+u+constr+u+a]{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}a}}}\label{module-Ocamlary-type-mutual+u+constr+u+b.A+u+ish}& This comment must be here for the next to associate correctly.\\ +\end{ocamltabular}% +\\ +\begin{ocamlindent}This comment is for \hyperref[module-Ocamlary-type-mutual+u+constr+u+b]{\ocamlinlinecode{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}b}}[p\pageref*{module-Ocamlary-type-mutual+u+constr+u+b}]} then \hyperref[module-Ocamlary-type-mutual+u+constr+u+a]{\ocamlinlinecode{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}a}}[p\pageref*{module-Ocamlary-type-mutual+u+constr+u+a}]}.\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-type-rec+u+obj}\ocamlcodefragment{\ocamltag{keyword}{type} rec\_\allowbreak{}obj = < f : int;\allowbreak{} g : unit \ocamltag{arrow}{$\rightarrow$} unit;\allowbreak{} h : \hyperref[module-Ocamlary-type-rec+u+obj]{\ocamlinlinecode{rec\_\allowbreak{}obj}};\allowbreak{} >}\\ +\label{module-Ocamlary-type-open+u+obj}\ocamlcodefragment{\ocamltag{keyword}{type} 'a open\_\allowbreak{}obj = < f : int;\allowbreak{} g : unit \ocamltag{arrow}{$\rightarrow$} unit;\allowbreak{} .\allowbreak{}.\allowbreak{} > \ocamltag{keyword}{as} 'a}\\ +\label{module-Ocamlary-type-oof}\ocamlcodefragment{\ocamltag{keyword}{type} 'a oof = < a : unit;\allowbreak{} .\allowbreak{}.\allowbreak{} > \ocamltag{keyword}{as} 'a \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'a}}\\ +\label{module-Ocamlary-type-any+u+obj}\ocamlcodefragment{\ocamltag{keyword}{type} 'a any\_\allowbreak{}obj = < .\allowbreak{}.\allowbreak{} > \ocamltag{keyword}{as} 'a}\\ +\label{module-Ocamlary-type-empty+u+obj}\ocamlcodefragment{\ocamltag{keyword}{type} empty\_\allowbreak{}obj = < >}\\ +\label{module-Ocamlary-type-one+u+meth}\ocamlcodefragment{\ocamltag{keyword}{type} one\_\allowbreak{}meth = < meth : unit;\allowbreak{} >}\\ +\label{module-Ocamlary-type-ext}\ocamlcodefragment{\ocamltag{keyword}{type} ext = .\allowbreak{}.\allowbreak{}}\begin{ocamlindent}A mystery wrapped in an ellipsis\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-extension-decl-ExtA}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[module-Ocamlary-type-ext]{\ocamlinlinecode{ext}} += }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{ExtA}}\label{module-Ocamlary-extension-ExtA}\\ +\end{ocamltabular}% +\\ +\label{module-Ocamlary-extension-decl-ExtB}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[module-Ocamlary-type-ext]{\ocamlinlinecode{ext}} += }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{ExtB}}\label{module-Ocamlary-extension-ExtB}\\ +\end{ocamltabular}% +\\ +\label{module-Ocamlary-extension-decl-ExtC}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[module-Ocamlary-type-ext]{\ocamlinlinecode{ext}} += }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{ExtC} \ocamltag{keyword}{of} unit}\label{module-Ocamlary-extension-ExtC}\\ +\ocamlcodefragment{| \ocamltag{extension}{ExtD} \ocamltag{keyword}{of} \hyperref[module-Ocamlary-type-ext]{\ocamlinlinecode{ext}}}\label{module-Ocamlary-extension-ExtD}\\ +\end{ocamltabular}% +\\ +\label{module-Ocamlary-extension-decl-ExtE}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[module-Ocamlary-type-ext]{\ocamlinlinecode{ext}} += }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{ExtE}}\label{module-Ocamlary-extension-ExtE}\\ +\end{ocamltabular}% +\\ +\label{module-Ocamlary-extension-decl-ExtF}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[module-Ocamlary-type-ext]{\ocamlinlinecode{ext}} += }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{ExtF}}\label{module-Ocamlary-extension-ExtF}\\ +\end{ocamltabular}% +\\ +\label{module-Ocamlary-type-poly+u+ext}\ocamlcodefragment{\ocamltag{keyword}{type} 'a poly\_\allowbreak{}ext = .\allowbreak{}.\allowbreak{}}\begin{ocamlindent}'a poly\_ext\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-extension-decl-Foo}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[module-Ocamlary-type-poly+u+ext]{\ocamlinlinecode{poly\_\allowbreak{}ext}} += }\\ +\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{Foo} \ocamltag{keyword}{of} \ocamltag{type-var}{'b}}\label{module-Ocamlary-extension-Foo}& \\ +\ocamlcodefragment{| \ocamltag{extension}{Bar} \ocamltag{keyword}{of} \ocamltag{type-var}{'b} * \ocamltag{type-var}{'b}}\label{module-Ocamlary-extension-Bar}& 'b poly\_ext\\ +\end{ocamltabular}% +\\ +\label{module-Ocamlary-extension-decl-Quux}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[module-Ocamlary-type-poly+u+ext]{\ocamlinlinecode{poly\_\allowbreak{}ext}} += }\\ +\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{Quux} \ocamltag{keyword}{of} \ocamltag{type-var}{'c}}\label{module-Ocamlary-extension-Quux}& 'c poly\_ext\\ +\end{ocamltabular}% +\\ +\label{module-Ocamlary-module-ExtMod}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-ExtMod]{\ocamlinlinecode{ExtMod}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-ExtMod-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = .\allowbreak{}.\allowbreak{}}\\ +\label{module-Ocamlary-module-ExtMod-extension-decl-Leisureforce}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-ExtMod-type-t]{\ocamlinlinecode{t}} += }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{Leisureforce}}\label{module-Ocamlary-module-ExtMod-extension-Leisureforce}\\ +\end{ocamltabular}% +\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-extension-decl-ZzzTop0}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-ExtMod-type-t]{\ocamlinlinecode{ExtMod.\allowbreak{}t}} += }\\ +\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{ZzzTop0}}\label{module-Ocamlary-extension-ZzzTop0}& It's got the rock\\ +\end{ocamltabular}% +\\ +\label{module-Ocamlary-extension-decl-ZzzTop}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-ExtMod-type-t]{\ocamlinlinecode{ExtMod.\allowbreak{}t}} += }\\ +\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{ZzzTop} \ocamltag{keyword}{of} unit}\label{module-Ocamlary-extension-ZzzTop}& and it packs a unit.\\ +\end{ocamltabular}% +\\ +\label{module-Ocamlary-val-launch+u+missiles}\ocamlcodefragment{\ocamltag{keyword}{val} launch\_\allowbreak{}missiles : unit \ocamltag{arrow}{$\rightarrow$} unit}\begin{ocamlindent}Rotate keys on my mark...\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-type-my+u+mod}\ocamlcodefragment{\ocamltag{keyword}{type} my\_\allowbreak{}mod = (\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{COLLECTION}})}\begin{ocamlindent}A brown paper package tied up with string\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-class-empty+u+class}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[module-Ocamlary-class-empty+u+class]{\ocamlinlinecode{empty\_\allowbreak{}class}}}\ocamlcodefragment{ : \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-class-one+u+method+u+class}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[module-Ocamlary-class-one+u+method+u+class]{\ocamlinlinecode{one\_\allowbreak{}method\_\allowbreak{}class}}}\ocamlcodefragment{ : \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-class-two+u+method+u+class}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[module-Ocamlary-class-two+u+method+u+class]{\ocamlinlinecode{two\_\allowbreak{}method\_\allowbreak{}class}}}\ocamlcodefragment{ : \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-class-param+u+class}\ocamlcodefragment{\ocamltag{keyword}{class} 'a \hyperref[module-Ocamlary-class-param+u+class]{\ocamlinlinecode{param\_\allowbreak{}class}}}\ocamlcodefragment{ : \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-type-my+u+unit+u+object}\ocamlcodefragment{\ocamltag{keyword}{type} my\_\allowbreak{}unit\_\allowbreak{}object = unit \hyperref[module-Ocamlary-class-param+u+class]{\ocamlinlinecode{param\_\allowbreak{}class}}}\\ +\label{module-Ocamlary-type-my+u+unit+u+class}\ocamlcodefragment{\ocamltag{keyword}{type} 'a my\_\allowbreak{}unit\_\allowbreak{}class = unit \hyperref[xref-unresolved]{\ocamlinlinecode{param\_\allowbreak{}class}} \ocamltag{keyword}{as} 'a}\\ +\label{module-Ocamlary-module-Dep1}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep1]{\ocamlinlinecode{Dep1}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep1-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-Dep1-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep1-module-type-S-class-c}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[module-Ocamlary-module-Dep1-module-type-S-class-c]{\ocamlinlinecode{c}}}\ocamlcodefragment{ : \ocamltag{keyword}{object}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep1-module-type-S-class-c-method-m}\ocamlcodefragment{\ocamltag{keyword}{method} m : int}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep1-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep1-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep1-module-X-module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep1-module-X-module-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ : \hyperref[module-Ocamlary-module-Dep1-module-type-S]{\ocamlinlinecode{S}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep2}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep2]{\ocamlinlinecode{Dep2}}}\ocamlcodefragment{ (\hyperref[module-Ocamlary-module-Dep2-argument-1-Arg]{\ocamlinlinecode{Arg}} : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-type-dep1}\ocamlcodefragment{\ocamltag{keyword}{type} dep1 = \hyperref[module-Ocamlary-module-Dep1-module-type-S-class-c]{\ocamlinlinecode{Dep2(Dep1).\allowbreak{}B.\allowbreak{}c}}}\\ +\label{module-Ocamlary-module-Dep3}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep3]{\ocamlinlinecode{Dep3}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep3-type-a}\ocamlcodefragment{\ocamltag{keyword}{type} a}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep4}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep4]{\ocamlinlinecode{Dep4}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep4-module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-Dep4-module-type-T]{\ocamlinlinecode{T}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep4-module-type-T-type-b}\ocamlcodefragment{\ocamltag{keyword}{type} b}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep4-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-Dep4-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep4-module-type-S-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep4-module-type-S-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep4-module-type-S-module-X-type-b}\ocamlcodefragment{\ocamltag{keyword}{type} b}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep4-module-type-S-module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep4-module-type-S-module-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep4-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep4-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \hyperref[module-Ocamlary-module-Dep4-module-type-T]{\ocamlinlinecode{T}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep5}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep5]{\ocamlinlinecode{Dep5}}}\ocamlcodefragment{ (\hyperref[module-Ocamlary-module-Dep5-argument-1-Arg]{\ocamlinlinecode{Arg}} : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-type-dep2}\ocamlcodefragment{\ocamltag{keyword}{type} dep2 = \hyperref[module-Ocamlary-module-Dep4-module-type-T-type-b]{\ocamlinlinecode{Dep5(Dep4).\allowbreak{}Z.\allowbreak{}X.\allowbreak{}b}}}\\ +\label{module-Ocamlary-type-dep3}\ocamlcodefragment{\ocamltag{keyword}{type} dep3 = \hyperref[module-Ocamlary-module-Dep3-type-a]{\ocamlinlinecode{Dep5(Dep4).\allowbreak{}Z.\allowbreak{}Y.\allowbreak{}a}}}\\ +\label{module-Ocamlary-module-Dep6}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep6]{\ocamlinlinecode{Dep6}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep6-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-Dep6-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep6-module-type-S-type-d}\ocamlcodefragment{\ocamltag{keyword}{type} d}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep6-module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-Dep6-module-type-T]{\ocamlinlinecode{T}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep6-module-type-T-module-type-R}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-Dep6-module-type-T-module-type-R]{\ocamlinlinecode{R}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep6-module-type-T-module-type-R-type-d}\ocamlcodefragment{\ocamltag{keyword}{type} d}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep6-module-type-T-module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep6-module-type-T-module-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep6-module-type-T-module-Y-type-d}\ocamlcodefragment{\ocamltag{keyword}{type} d}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep6-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep6-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \hyperref[module-Ocamlary-module-Dep6-module-type-T]{\ocamlinlinecode{T}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep7}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep7]{\ocamlinlinecode{Dep7}}}\ocamlcodefragment{ (\hyperref[module-Ocamlary-module-Dep7-argument-1-Arg]{\ocamlinlinecode{Arg}} : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-type-dep4}\ocamlcodefragment{\ocamltag{keyword}{type} dep4 = \hyperref[module-Ocamlary-module-Dep6-module-type-T-module-Y-type-d]{\ocamlinlinecode{Dep7(Dep6).\allowbreak{}M.\allowbreak{}Y.\allowbreak{}d}}}\\ +\label{module-Ocamlary-module-Dep8}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep8]{\ocamlinlinecode{Dep8}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep8-module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-Dep8-module-type-T]{\ocamlinlinecode{T}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep8-module-type-T-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep9}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep9]{\ocamlinlinecode{Dep9}}}\ocamlcodefragment{ (\hyperref[module-Ocamlary-module-Dep9-argument-1-X]{\ocamlinlinecode{X}} : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-Dep10}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-Dep10]{\ocamlinlinecode{Dep10}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-Dep10-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep11}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep11]{\ocamlinlinecode{Dep11}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep11-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-Dep11-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep11-module-type-S-class-c}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[module-Ocamlary-module-Dep11-module-type-S-class-c]{\ocamlinlinecode{c}}}\ocamlcodefragment{ : \ocamltag{keyword}{object}}\begin{ocamlindent}\label{module-Ocamlary-module-Dep11-module-type-S-class-c-method-m}\ocamlcodefragment{\ocamltag{keyword}{method} m : int}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep12}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep12]{\ocamlinlinecode{Dep12}}}\ocamlcodefragment{ (\hyperref[module-Ocamlary-module-Dep12-argument-1-Arg]{\ocamlinlinecode{Arg}} : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Dep13}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Dep13]{\ocamlinlinecode{Dep13}}}\ocamlcodefragment{ : \hyperref[module-Ocamlary-module-Dep11-module-type-S]{\ocamlinlinecode{Dep12(Dep11).\allowbreak{}T}}}\\ +\label{module-Ocamlary-type-dep5}\ocamlcodefragment{\ocamltag{keyword}{type} dep5 = \hyperref[module-Ocamlary-module-Dep13-class-c]{\ocamlinlinecode{Dep13.\allowbreak{}c}}}\\ +\label{module-Ocamlary-module-type-With1}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-With1]{\ocamlinlinecode{With1}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-With1-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-With1-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-With1-module-M-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} S}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-With1-module-N}\ocamlcodefragment{\ocamltag{keyword}{module} N : \hyperref[module-Ocamlary-module-type-With1-module-M-module-type-S]{\ocamlinlinecode{M.\allowbreak{}S}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-With2}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-With2]{\ocamlinlinecode{With2}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-With2-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-With2-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-With2-module-type-S-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-With3}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-With3]{\ocamlinlinecode{With3}}}\ocamlcodefragment{ : \hyperref[module-Ocamlary-module-type-With1]{\ocamlinlinecode{With1}} \ocamltag{keyword}{with} \ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-With1-module-M]{\ocamlinlinecode{M}} = \hyperref[module-Ocamlary-module-With2]{\ocamlinlinecode{With2}}}\\ +\label{module-Ocamlary-type-with1}\ocamlcodefragment{\ocamltag{keyword}{type} with1 = \hyperref[module-Ocamlary-module-With3-module-N-type-t]{\ocamlinlinecode{With3.\allowbreak{}N.\allowbreak{}t}}}\\ +\label{module-Ocamlary-module-With4}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-With4]{\ocamlinlinecode{With4}}}\ocamlcodefragment{ : \hyperref[module-Ocamlary-module-type-With1]{\ocamlinlinecode{With1}} \ocamltag{keyword}{with} \ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-With1-module-M]{\ocamlinlinecode{M}} := \hyperref[module-Ocamlary-module-With2]{\ocamlinlinecode{With2}}}\\ +\label{module-Ocamlary-type-with2}\ocamlcodefragment{\ocamltag{keyword}{type} with2 = \hyperref[module-Ocamlary-module-With4-module-N-type-t]{\ocamlinlinecode{With4.\allowbreak{}N.\allowbreak{}t}}}\\ +\label{module-Ocamlary-module-With5}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-With5]{\ocamlinlinecode{With5}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-With5-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-With5-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-With5-module-type-S-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-With5-module-N}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-With5-module-N]{\ocamlinlinecode{N}}}\ocamlcodefragment{ : \hyperref[module-Ocamlary-module-With5-module-type-S]{\ocamlinlinecode{S}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-With6}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-With6]{\ocamlinlinecode{With6}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-With6-module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-With6-module-type-T]{\ocamlinlinecode{T}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-With6-module-type-T-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-With6-module-type-T-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-With6-module-type-T-module-M-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} S}\\ +\label{module-Ocamlary-module-With6-module-type-T-module-M-module-N}\ocamlcodefragment{\ocamltag{keyword}{module} N : \hyperref[module-Ocamlary-module-With6-module-type-T-module-M-module-type-S]{\ocamlinlinecode{S}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-With7}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-With7]{\ocamlinlinecode{With7}}}\ocamlcodefragment{ (\hyperref[module-Ocamlary-module-With7-argument-1-X]{\ocamlinlinecode{X}} : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-With8}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-With8]{\ocamlinlinecode{With8}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-With8-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-With8-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-With8-module-M-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-With8-module-M-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-With8-module-M-module-type-S-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-With8-module-M-module-N}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-With8-module-M-module-N]{\ocamlinlinecode{N}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-With8-module-M-module-N-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[module-Ocamlary-module-With5-module-N-type-t]{\ocamlinlinecode{With5.\allowbreak{}N.\allowbreak{}t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-With9}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-With9]{\ocamlinlinecode{With9}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-With9-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-With9-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-With9-module-type-S-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-With10}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-With10]{\ocamlinlinecode{With10}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-With10-module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-With10-module-type-T]{\ocamlinlinecode{T}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-With10-module-type-T-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-With10-module-type-T-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-With10-module-type-T-module-M-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} S}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-With10-module-type-T-module-N}\ocamlcodefragment{\ocamltag{keyword}{module} N : \hyperref[module-Ocamlary-module-With10-module-type-T-module-M-module-type-S]{\ocamlinlinecode{M.\allowbreak{}S}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}\hyperref[module-Ocamlary-module-With10-module-type-T]{\ocamlinlinecode{\ocamlinlinecode{With10.\allowbreak{}T}}[p\pageref*{module-Ocamlary-module-With10-module-type-T}]} is a submodule type.\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-With11}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-With11]{\ocamlinlinecode{With11}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-With11-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} M = \hyperref[module-Ocamlary-module-With9]{\ocamlinlinecode{With9}}}\\ +\label{module-Ocamlary-module-type-With11-module-N}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-type-With11-module-N]{\ocamlinlinecode{N}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-With11-module-N-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-type-NestedInclude1}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-NestedInclude1]{\ocamlinlinecode{NestedInclude1}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-NestedInclude1-module-type-NestedInclude2}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-NestedInclude1-module-type-NestedInclude2]{\ocamlinlinecode{NestedInclude2}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-NestedInclude1-module-type-NestedInclude2-type-nested+u+include}\ocamlcodefragment{\ocamltag{keyword}{type} nested\_\allowbreak{}include}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\ocamltag{keyword}{include} \hyperref[module-Ocamlary-module-type-NestedInclude1]{\ocamlinlinecode{NestedInclude1}}\label{module-Ocamlary-module-type-NestedInclude2}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-NestedInclude2]{\ocamlinlinecode{NestedInclude2}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-NestedInclude2-type-nested+u+include}\ocamlcodefragment{\ocamltag{keyword}{type} nested\_\allowbreak{}include}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\ocamltag{keyword}{include} \hyperref[module-Ocamlary-module-type-NestedInclude2]{\ocamlinlinecode{NestedInclude2}} \ocamltag{keyword}{with} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-NestedInclude2-type-nested+u+include]{\ocamlinlinecode{nested\_\allowbreak{}include}} = int\label{module-Ocamlary-type-nested+u+include}\ocamlcodefragment{\ocamltag{keyword}{type} nested\_\allowbreak{}include = int}\\ +\label{module-Ocamlary-module-DoubleInclude1}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-DoubleInclude1]{\ocamlinlinecode{DoubleInclude1}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-DoubleInclude1-module-DoubleInclude2}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-DoubleInclude1-module-DoubleInclude2]{\ocamlinlinecode{DoubleInclude2}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-DoubleInclude1-module-DoubleInclude2-type-double+u+include}\ocamlcodefragment{\ocamltag{keyword}{type} double\_\allowbreak{}include}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-DoubleInclude3}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-DoubleInclude3]{\ocamlinlinecode{DoubleInclude3}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[module-Ocamlary-module-DoubleInclude1]{\ocamlinlinecode{DoubleInclude1}}\label{module-Ocamlary-module-DoubleInclude3-module-DoubleInclude2}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-DoubleInclude3-module-DoubleInclude2]{\ocamlinlinecode{DoubleInclude2}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-DoubleInclude3-module-DoubleInclude2-type-double+u+include}\ocamlcodefragment{\ocamltag{keyword}{type} double\_\allowbreak{}include}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[module-Ocamlary-module-DoubleInclude3-module-DoubleInclude2]{\ocamlinlinecode{DoubleInclude3.\allowbreak{}DoubleInclude2}}\label{module-Ocamlary-type-double+u+include}\ocamlcodefragment{\ocamltag{keyword}{type} double\_\allowbreak{}include}\\ +\label{module-Ocamlary-module-IncludeInclude1}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-IncludeInclude1]{\ocamlinlinecode{IncludeInclude1}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-IncludeInclude1-module-type-IncludeInclude2}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-IncludeInclude1-module-type-IncludeInclude2]{\ocamlinlinecode{IncludeInclude2}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-IncludeInclude1-module-type-IncludeInclude2-type-include+u+include}\ocamlcodefragment{\ocamltag{keyword}{type} include\_\allowbreak{}include}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[module-Ocamlary-module-IncludeInclude1]{\ocamlinlinecode{IncludeInclude1}}\label{module-Ocamlary-module-type-IncludeInclude2}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-IncludeInclude2]{\ocamlinlinecode{IncludeInclude2}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-IncludeInclude2-type-include+u+include}\ocamlcodefragment{\ocamltag{keyword}{type} include\_\allowbreak{}include}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\ocamltag{keyword}{include} \hyperref[module-Ocamlary-module-type-IncludeInclude2]{\ocamlinlinecode{IncludeInclude2}}\label{module-Ocamlary-type-include+u+include}\ocamlcodefragment{\ocamltag{keyword}{type} include\_\allowbreak{}include}\\ +\subsection{Trying the \{!modules: ...\} command.\label{indexmodules}}% +With ocamldoc, toplevel units will be linked and documented, while submodules will behave as simple references. + +With odoc, everything should be resolved (and linked) but only toplevel units will be documented. + +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{\hyperref[module-Ocamlary-module-Dep1-module-X]{\ocamlinlinecode{\ocamlinlinecode{Dep1.\allowbreak{}X}}[p\pageref*{module-Ocamlary-module-Dep1-module-X}]}}]{}% +\item[{\ocamlinlinecode{DocOckTypes}}]{}% +\item[{\hyperref[module-Ocamlary-module-IncludeInclude1]{\ocamlinlinecode{\ocamlinlinecode{Ocamlary.\allowbreak{}IncludeInclude1}}[p\pageref*{module-Ocamlary-module-IncludeInclude1}]}}]{}% +\item[{\hyperref[module-Ocamlary]{\ocamlinlinecode{\ocamlinlinecode{Ocamlary}}[p\pageref*{module-Ocamlary}]}}]{This is an \emph{interface} with \bold{all} of the \emph{module system} features. This documentation demonstrates:}\end{description}% +\subsubsection{Weirder usages involving module types\label{weirder-usages-involving-module-types}}% +\begin{description}\kern-\topsep +\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded +\item[{\ocamlinlinecode{IncludeInclude1}.IncludeInclude2}]{}% +\item[{\ocamlinlinecode{Dep4}.T}]{}% +\item[{\hyperref[module-Ocamlary-module-type-A-module-Q]{\ocamlinlinecode{\ocamlinlinecode{A.\allowbreak{}Q}}[p\pageref*{module-Ocamlary-module-type-A-module-Q}]}}]{}\end{description}% +\subsection{Playing with @canonical paths\label{playing-with-@canonical-paths}}% +\label{module-Ocamlary-module-CanonicalTest}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-CanonicalTest]{\ocamlinlinecode{CanonicalTest}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-CanonicalTest-module-Base+u++u+List}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-CanonicalTest-module-Base+u++u+List]{\ocamlinlinecode{Base\_\allowbreak{}\_\allowbreak{}List}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-CanonicalTest-module-Base+u++u+List-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} 'a t}\\ +\label{module-Ocamlary-module-CanonicalTest-module-Base+u++u+List-val-id}\ocamlcodefragment{\ocamltag{keyword}{val} id : \ocamltag{type-var}{'a} \hyperref[xref-unresolved]{\ocamlinlinecode{t}} \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'a} \hyperref[xref-unresolved]{\ocamlinlinecode{t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-CanonicalTest-module-Base+u++u+}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-CanonicalTest-module-Base+u++u+]{\ocamlinlinecode{Base\_\allowbreak{}\_\allowbreak{}}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-CanonicalTest-module-Base+u++u+-module-List}\ocamlcodefragment{\ocamltag{keyword}{module} List = \hyperref[xref-unresolved]{\ocamlinlinecode{Base\_\allowbreak{}\_\allowbreak{}List}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-CanonicalTest-module-Base}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-CanonicalTest-module-Base]{\ocamlinlinecode{Base}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-CanonicalTest-module-Base-module-List}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-CanonicalTest-module-Base-module-List]{\ocamlinlinecode{List}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-CanonicalTest-module-Base+u++u+Tests}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-CanonicalTest-module-Base+u++u+Tests]{\ocamlinlinecode{Base\_\allowbreak{}\_\allowbreak{}Tests}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-CanonicalTest-module-Base+u++u+Tests-module-C}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-CanonicalTest-module-Base+u++u+Tests-module-C]{\ocamlinlinecode{C}}}\ocamlcodefragment{ : \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[xref-unresolved]{\ocamlinlinecode{Base\_\allowbreak{}\_\allowbreak{}}}.\allowbreak{}List}\\ +\label{module-Ocamlary-module-CanonicalTest-module-Base+u++u+Tests-module-L}\ocamlcodefragment{\ocamltag{keyword}{module} L = \hyperref[xref-unresolved]{\ocamlinlinecode{Base\_\allowbreak{}\_\allowbreak{}}}.\allowbreak{}List}\\ +\label{module-Ocamlary-module-CanonicalTest-module-Base+u++u+Tests-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : \hyperref[xref-unresolved]{\ocamlinlinecode{int}} \hyperref[xref-unresolved]{\ocamlinlinecode{L}}.\allowbreak{}t \ocamltag{arrow}{$\rightarrow$} \hyperref[xref-unresolved]{\ocamlinlinecode{float}} \hyperref[xref-unresolved]{\ocamlinlinecode{L}}.\allowbreak{}t}\\ +\label{module-Ocamlary-module-CanonicalTest-module-Base+u++u+Tests-val-bar}\ocamlcodefragment{\ocamltag{keyword}{val} bar : \ocamltag{type-var}{'a} \hyperref[xref-unresolved]{\ocamlinlinecode{Base\_\allowbreak{}\_\allowbreak{}}}.\allowbreak{}List.\allowbreak{}t \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'a} \hyperref[xref-unresolved]{\ocamlinlinecode{Base\_\allowbreak{}\_\allowbreak{}}}.\allowbreak{}List.\allowbreak{}t}\begin{ocamlindent}This is just \ocamlinlinecode{List}.id, or rather \ocamlinlinecode{L}.id\end{ocamlindent}% +\medbreak +\label{module-Ocamlary-module-CanonicalTest-module-Base+u++u+Tests-val-baz}\ocamlcodefragment{\ocamltag{keyword}{val} baz : \ocamltag{type-var}{'a} \hyperref[xref-unresolved]{\ocamlinlinecode{Base\_\allowbreak{}\_\allowbreak{}}}.\allowbreak{}List.\allowbreak{}t \ocamltag{arrow}{$\rightarrow$} \hyperref[xref-unresolved]{\ocamlinlinecode{unit}}}\begin{ocamlindent}Just seeing if \ocamlinlinecode{Base\_\allowbreak{}\_\allowbreak{}}.List.t (\ocamlinlinecode{Base\_\allowbreak{}\_\allowbreak{}.\allowbreak{}List.\allowbreak{}t}) gets rewriten to \ocamlinlinecode{Base}.List.t (\ocamlinlinecode{Base.\allowbreak{}List.\allowbreak{}t})\end{ocamlindent}% +\medbreak +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-CanonicalTest-module-List+u+modif}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-CanonicalTest-module-List+u+modif]{\ocamlinlinecode{List\_\allowbreak{}modif}}}\ocamlcodefragment{ : \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[module-Ocamlary-module-CanonicalTest-module-Base-module-List]{\ocamlinlinecode{Base.\allowbreak{}List}} \ocamltag{keyword}{with} \ocamltag{keyword}{type} 'c \hyperref[module-Ocamlary-module-CanonicalTest-module-Base-module-List-type-t]{\ocamlinlinecode{t}} = \ocamltag{type-var}{'c} \hyperref[module-Ocamlary-module-CanonicalTest-module-Base-module-List-type-t]{\ocamlinlinecode{Base.\allowbreak{}List.\allowbreak{}t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-val-test}\ocamlcodefragment{\ocamltag{keyword}{val} test : \ocamltag{type-var}{'a} \hyperref[module-Ocamlary-module-CanonicalTest-module-Base-module-List-type-t]{\ocamlinlinecode{CanonicalTest.\allowbreak{}Base.\allowbreak{}List.\allowbreak{}t}} \ocamltag{arrow}{$\rightarrow$} unit}\begin{ocamlindent}Some ref to \hyperref[module-Ocamlary-module-CanonicalTest-module-Base+u++u+Tests-module-C-type-t]{\ocamlinlinecode{\ocamlinlinecode{CanonicalTest.\allowbreak{}Base\_\allowbreak{}\_\allowbreak{}Tests.\allowbreak{}C.\allowbreak{}t}}[p\pageref*{module-Ocamlary-module-CanonicalTest-module-Base+u++u+Tests-module-C-type-t}]} and \hyperref[module-Ocamlary-module-CanonicalTest-module-Base-module-List-val-id]{\ocamlinlinecode{\ocamlinlinecode{CanonicalTest.\allowbreak{}Base\_\allowbreak{}\_\allowbreak{}Tests.\allowbreak{}L.\allowbreak{}id}}[p\pageref*{module-Ocamlary-module-CanonicalTest-module-Base-module-List-val-id}]}. But also to \hyperref[module-Ocamlary-module-CanonicalTest-module-Base+u++u+-module-List]{\ocamlinlinecode{\ocamlinlinecode{CanonicalTest.\allowbreak{}Base\_\allowbreak{}\_\allowbreak{}.\allowbreak{}List}}[p\pageref*{module-Ocamlary-module-CanonicalTest-module-Base+u++u+-module-List}]} and \hyperref[module-Ocamlary-module-CanonicalTest-module-Base+u++u+-module-List-type-t]{\ocamlinlinecode{\ocamlinlinecode{CanonicalTest.\allowbreak{}Base\_\allowbreak{}\_\allowbreak{}.\allowbreak{}List.\allowbreak{}t}}[p\pageref*{module-Ocamlary-module-CanonicalTest-module-Base+u++u+-module-List-type-t}]}\end{ocamlindent}% +\medbreak +\subsection{Aliases again\label{aliases}}% +\label{module-Ocamlary-module-Aliases}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases]{\ocamlinlinecode{Aliases}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Aliases-module-Foo+u++u+A}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-Foo+u++u+A]{\ocamlinlinecode{Foo\_\allowbreak{}\_\allowbreak{}A}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Aliases-module-Foo+u++u+A-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Ocamlary-module-Aliases-module-Foo+u++u+A-val-id}\ocamlcodefragment{\ocamltag{keyword}{val} id : \hyperref[xref-unresolved]{\ocamlinlinecode{t}} \ocamltag{arrow}{$\rightarrow$} \hyperref[xref-unresolved]{\ocamlinlinecode{t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Aliases-module-Foo+u++u+B}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-Foo+u++u+B]{\ocamlinlinecode{Foo\_\allowbreak{}\_\allowbreak{}B}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Aliases-module-Foo+u++u+B-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Ocamlary-module-Aliases-module-Foo+u++u+B-val-id}\ocamlcodefragment{\ocamltag{keyword}{val} id : \hyperref[xref-unresolved]{\ocamlinlinecode{t}} \ocamltag{arrow}{$\rightarrow$} \hyperref[xref-unresolved]{\ocamlinlinecode{t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Aliases-module-Foo+u++u+C}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-Foo+u++u+C]{\ocamlinlinecode{Foo\_\allowbreak{}\_\allowbreak{}C}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Aliases-module-Foo+u++u+C-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Ocamlary-module-Aliases-module-Foo+u++u+C-val-id}\ocamlcodefragment{\ocamltag{keyword}{val} id : \hyperref[xref-unresolved]{\ocamlinlinecode{t}} \ocamltag{arrow}{$\rightarrow$} \hyperref[xref-unresolved]{\ocamlinlinecode{t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Aliases-module-Foo+u++u+D}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-Foo+u++u+D]{\ocamlinlinecode{Foo\_\allowbreak{}\_\allowbreak{}D}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Aliases-module-Foo+u++u+D-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Ocamlary-module-Aliases-module-Foo+u++u+D-val-id}\ocamlcodefragment{\ocamltag{keyword}{val} id : \hyperref[xref-unresolved]{\ocamlinlinecode{t}} \ocamltag{arrow}{$\rightarrow$} \hyperref[xref-unresolved]{\ocamlinlinecode{t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Aliases-module-Foo+u++u+E}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-Foo+u++u+E]{\ocamlinlinecode{Foo\_\allowbreak{}\_\allowbreak{}E}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Aliases-module-Foo+u++u+E-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Ocamlary-module-Aliases-module-Foo+u++u+E-val-id}\ocamlcodefragment{\ocamltag{keyword}{val} id : \hyperref[xref-unresolved]{\ocamlinlinecode{t}} \ocamltag{arrow}{$\rightarrow$} \hyperref[xref-unresolved]{\ocamlinlinecode{t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Aliases-module-Foo+u++u+}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-Foo+u++u+]{\ocamlinlinecode{Foo\_\allowbreak{}\_\allowbreak{}}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Aliases-module-Foo+u++u+-module-A}\ocamlcodefragment{\ocamltag{keyword}{module} A = \hyperref[xref-unresolved]{\ocamlinlinecode{Foo\_\allowbreak{}\_\allowbreak{}A}}}\\ +\label{module-Ocamlary-module-Aliases-module-Foo+u++u+-module-B}\ocamlcodefragment{\ocamltag{keyword}{module} B = \hyperref[xref-unresolved]{\ocamlinlinecode{Foo\_\allowbreak{}\_\allowbreak{}B}}}\\ +\label{module-Ocamlary-module-Aliases-module-Foo+u++u+-module-C}\ocamlcodefragment{\ocamltag{keyword}{module} C = \hyperref[xref-unresolved]{\ocamlinlinecode{Foo\_\allowbreak{}\_\allowbreak{}C}}}\\ +\label{module-Ocamlary-module-Aliases-module-Foo+u++u+-module-D}\ocamlcodefragment{\ocamltag{keyword}{module} D = \hyperref[xref-unresolved]{\ocamlinlinecode{Foo\_\allowbreak{}\_\allowbreak{}D}}}\\ +\label{module-Ocamlary-module-Aliases-module-Foo+u++u+-module-E}\ocamlcodefragment{\ocamltag{keyword}{module} E = \hyperref[xref-unresolved]{\ocamlinlinecode{Foo\_\allowbreak{}\_\allowbreak{}E}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Aliases-module-Foo}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-Foo]{\ocamlinlinecode{Foo}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Aliases-module-Foo-module-A}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-A]{\ocamlinlinecode{A}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Aliases-module-Foo-module-B}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-B]{\ocamlinlinecode{B}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Aliases-module-Foo-module-C}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-C]{\ocamlinlinecode{C}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Aliases-module-Foo-module-D}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-D]{\ocamlinlinecode{D}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Aliases-module-Foo-module-E}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-E]{\ocamlinlinecode{E}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Aliases-module-A'}\ocamlcodefragment{\ocamltag{keyword}{module} A' = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-A]{\ocamlinlinecode{Foo.\allowbreak{}A}}}\\ +\label{module-Ocamlary-module-Aliases-type-tata}\ocamlcodefragment{\ocamltag{keyword}{type} tata = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-A-type-t]{\ocamlinlinecode{Foo.\allowbreak{}A.\allowbreak{}t}}}\\ +\label{module-Ocamlary-module-Aliases-type-tbtb}\ocamlcodefragment{\ocamltag{keyword}{type} tbtb = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-B-type-t]{\ocamlinlinecode{Foo.\allowbreak{}B.\allowbreak{}t}}}\\ +\label{module-Ocamlary-module-Aliases-type-tete}\ocamlcodefragment{\ocamltag{keyword}{type} tete}\\ +\label{module-Ocamlary-module-Aliases-type-tata'}\ocamlcodefragment{\ocamltag{keyword}{type} tata' = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-A-type-t]{\ocamlinlinecode{A'.\allowbreak{}t}}}\\ +\label{module-Ocamlary-module-Aliases-type-tete2}\ocamlcodefragment{\ocamltag{keyword}{type} tete2 = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-E-type-t]{\ocamlinlinecode{Foo.\allowbreak{}E.\allowbreak{}t}}}\\ +\label{module-Ocamlary-module-Aliases-module-Std}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-Std]{\ocamlinlinecode{Std}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Aliases-module-Std-module-A}\ocamlcodefragment{\ocamltag{keyword}{module} A = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-A]{\ocamlinlinecode{Foo.\allowbreak{}A}}}\\ +\label{module-Ocamlary-module-Aliases-module-Std-module-B}\ocamlcodefragment{\ocamltag{keyword}{module} B = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-B]{\ocamlinlinecode{Foo.\allowbreak{}B}}}\\ +\label{module-Ocamlary-module-Aliases-module-Std-module-C}\ocamlcodefragment{\ocamltag{keyword}{module} C = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-C]{\ocamlinlinecode{Foo.\allowbreak{}C}}}\\ +\label{module-Ocamlary-module-Aliases-module-Std-module-D}\ocamlcodefragment{\ocamltag{keyword}{module} D = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-D]{\ocamlinlinecode{Foo.\allowbreak{}D}}}\\ +\label{module-Ocamlary-module-Aliases-module-Std-module-E}\ocamlcodefragment{\ocamltag{keyword}{module} E = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-E]{\ocamlinlinecode{Foo.\allowbreak{}E}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Aliases-type-stde}\ocamlcodefragment{\ocamltag{keyword}{type} stde = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-E-type-t]{\ocamlinlinecode{Std.\allowbreak{}E.\allowbreak{}t}}}\\ +\subsubsection{include of Foo\label{incl}}% +Just for giggle, let's see what happens when we include \hyperref[module-Ocamlary-module-Aliases-module-Foo]{\ocamlinlinecode{\ocamlinlinecode{Foo}}[p\pageref*{module-Ocamlary-module-Aliases-module-Foo}]}. + +\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[module-Ocamlary-module-Aliases-module-Foo]{\ocamlinlinecode{Foo}}\label{module-Ocamlary-module-Aliases-module-A}\ocamlcodefragment{\ocamltag{keyword}{module} A = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-A]{\ocamlinlinecode{Foo.\allowbreak{}A}}}\\ +\label{module-Ocamlary-module-Aliases-module-B}\ocamlcodefragment{\ocamltag{keyword}{module} B = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-B]{\ocamlinlinecode{Foo.\allowbreak{}B}}}\\ +\label{module-Ocamlary-module-Aliases-module-C}\ocamlcodefragment{\ocamltag{keyword}{module} C = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-C]{\ocamlinlinecode{Foo.\allowbreak{}C}}}\\ +\label{module-Ocamlary-module-Aliases-module-D}\ocamlcodefragment{\ocamltag{keyword}{module} D = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-D]{\ocamlinlinecode{Foo.\allowbreak{}D}}}\\ +\label{module-Ocamlary-module-Aliases-module-E}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-E]{\ocamlinlinecode{E}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Aliases-type-testa}\ocamlcodefragment{\ocamltag{keyword}{type} testa = \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-A-type-t]{\ocamlinlinecode{A.\allowbreak{}t}}}\\ +And also, let's refer to \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-A-type-t]{\ocamlinlinecode{\ocamlinlinecode{A.\allowbreak{}t}}[p\pageref*{module-Ocamlary-module-Aliases-module-Foo-module-A-type-t}]} and \hyperref[module-Ocamlary-module-Aliases-module-Foo-module-B-val-id]{\ocamlinlinecode{\ocamlinlinecode{Foo.\allowbreak{}B.\allowbreak{}id}}[p\pageref*{module-Ocamlary-module-Aliases-module-Foo-module-B-val-id}]} + +\label{module-Ocamlary-module-Aliases-module-P1}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-P1]{\ocamlinlinecode{P1}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Aliases-module-P1-module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-P1-module-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Aliases-module-P1-module-Y-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Ocamlary-module-Aliases-module-P1-module-Y-val-id}\ocamlcodefragment{\ocamltag{keyword}{val} id : \hyperref[module-Ocamlary-module-Aliases-module-P1-module-Y-type-t]{\ocamlinlinecode{t}} \ocamltag{arrow}{$\rightarrow$} \hyperref[module-Ocamlary-module-Aliases-module-P1-module-Y-type-t]{\ocamlinlinecode{t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Aliases-module-P2}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Aliases-module-P2]{\ocamlinlinecode{P2}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Aliases-module-P2-module-Z}\ocamlcodefragment{\ocamltag{keyword}{module} Z = \hyperref[module-Ocamlary-module-Aliases-module-P1-module-Y]{\ocamlinlinecode{Z}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-Aliases-module-X1}\ocamlcodefragment{\ocamltag{keyword}{module} X1 = \hyperref[module-Ocamlary-module-Aliases-module-P1-module-Y]{\ocamlinlinecode{P2.\allowbreak{}Z}}}\\ +\label{module-Ocamlary-module-Aliases-module-X2}\ocamlcodefragment{\ocamltag{keyword}{module} X2 = \hyperref[module-Ocamlary-module-Aliases-module-P1-module-Y]{\ocamlinlinecode{P2.\allowbreak{}Z}}}\\ +\label{module-Ocamlary-module-Aliases-type-p1}\ocamlcodefragment{\ocamltag{keyword}{type} p1 = \hyperref[module-Ocamlary-module-Aliases-module-P1-module-Y-type-t]{\ocamlinlinecode{X1.\allowbreak{}t}}}\\ +\label{module-Ocamlary-module-Aliases-type-p2}\ocamlcodefragment{\ocamltag{keyword}{type} p2 = \hyperref[module-Ocamlary-module-Aliases-module-P1-module-Y-type-t]{\ocamlinlinecode{X2.\allowbreak{}t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Let's imitate jst's layout.\end{ocamlindent}% +\medbreak +\subsection{Section title splicing\label{section-title-splicing}}% +I can refer to + +\begin{itemize}\item{\ocamlinlinecode{\{!section:indexmodules\}} : \hyperref[module-Ocamlary-indexmodules]{\ocamlinlinecode{Trying the \{!modules: ...\} command.}[p\pageref*{module-Ocamlary-indexmodules}]}}% +\item{\ocamlinlinecode{\{!aliases\}} : \hyperref[module-Ocamlary-aliases]{\ocamlinlinecode{Aliases again}[p\pageref*{module-Ocamlary-aliases}]}}\end{itemize}% +But also to things in submodules: + +\begin{itemize}\item{\ocamlinlinecode{\{!section:SuperSig.\allowbreak{}SubSigA.\allowbreak{}subSig\}} : \ocamlinlinecode{SuperSig}.SubSigA.subSig}% +\item{\ocamlinlinecode{\{!Aliases.\allowbreak{}incl\}} : \hyperref[module-Ocamlary-module-Aliases-incl]{\ocamlinlinecode{\ocamlinlinecode{Aliases:incl}}[p\pageref*{module-Ocamlary-module-Aliases-incl}]}}\end{itemize}% +And just to make sure we do not mess up: + +\begin{itemize}\item{\ocamlinlinecode{\{\{!section:indexmodules\}A\}} : \hyperref[module-Ocamlary-indexmodules]{\ocamlinlinecode{A}[p\pageref*{module-Ocamlary-indexmodules}]}}% +\item{\ocamlinlinecode{\{\{!aliases\}B\}} : \hyperref[module-Ocamlary-aliases]{\ocamlinlinecode{B}[p\pageref*{module-Ocamlary-aliases}]}}% +\item{\ocamlinlinecode{\{\{!section:SuperSig.\allowbreak{}SubSigA.\allowbreak{}subSig\}C\}} : \hyperref[xref-unresolved]{\ocamlinlinecode{C}[p\pageref*{xref-unresolved}]}}% +\item{\ocamlinlinecode{\{\{!Aliases.\allowbreak{}incl\}D\}} : \hyperref[module-Ocamlary-module-Aliases-incl]{\ocamlinlinecode{D}[p\pageref*{module-Ocamlary-module-Aliases-incl}]}}\end{itemize}% +\subsection{New reference syntax\label{new-reference-syntax}}% +\label{module-Ocamlary-module-type-M}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-M-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-M-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +Here goes: + +\begin{itemize}\item{\ocamlinlinecode{\{!module-M.\allowbreak{}t\}} : \hyperref[module-Ocamlary-module-M-type-t]{\ocamlinlinecode{\ocamlinlinecode{M.\allowbreak{}t}}[p\pageref*{module-Ocamlary-module-M-type-t}]}}% +\item{\ocamlinlinecode{\{!module-type-M.\allowbreak{}t\}} : \hyperref[module-Ocamlary-module-type-M-type-t]{\ocamlinlinecode{\ocamlinlinecode{M.\allowbreak{}t}}[p\pageref*{module-Ocamlary-module-type-M-type-t}]}}\end{itemize}% +\label{module-Ocamlary-module-Only+u+a+u+module}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Ocamlary-module-Only+u+a+u+module]{\ocamlinlinecode{Only\_\allowbreak{}a\_\allowbreak{}module}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-Only+u+a+u+module-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +Some here should fail: + +\begin{itemize}\item{\ocamlinlinecode{\{!Only\_\allowbreak{}a\_\allowbreak{}module.\allowbreak{}t\}} : \hyperref[module-Ocamlary-module-Only+u+a+u+module-type-t]{\ocamlinlinecode{\ocamlinlinecode{Only\_\allowbreak{}a\_\allowbreak{}module.\allowbreak{}t}}[p\pageref*{module-Ocamlary-module-Only+u+a+u+module-type-t}]}}% +\item{\ocamlinlinecode{\{!module-Only\_\allowbreak{}a\_\allowbreak{}module.\allowbreak{}t\}} : \hyperref[module-Ocamlary-module-Only+u+a+u+module-type-t]{\ocamlinlinecode{\ocamlinlinecode{Only\_\allowbreak{}a\_\allowbreak{}module.\allowbreak{}t}}[p\pageref*{module-Ocamlary-module-Only+u+a+u+module-type-t}]}}% +\item{\ocamlinlinecode{\{!module-type-Only\_\allowbreak{}a\_\allowbreak{}module.\allowbreak{}t\}} : \ocamlinlinecode{Only\_\allowbreak{}a\_\allowbreak{}module}.t : \hyperref[xref-unresolved]{\ocamlinlinecode{test}[p\pageref*{xref-unresolved}]}}\end{itemize}% +\label{module-Ocamlary-module-type-TypeExt}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-TypeExt]{\ocamlinlinecode{TypeExt}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-TypeExt-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = .\allowbreak{}.\allowbreak{}}\\ +\label{module-Ocamlary-module-type-TypeExt-extension-decl-C}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-TypeExt-type-t]{\ocamlinlinecode{t}} += }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{C}}\label{module-Ocamlary-module-type-TypeExt-extension-C}\\ +\end{ocamltabular}% +\\ +\label{module-Ocamlary-module-type-TypeExt-val-f}\ocamlcodefragment{\ocamltag{keyword}{val} f : \hyperref[module-Ocamlary-module-type-TypeExt-type-t]{\ocamlinlinecode{t}} \ocamltag{arrow}{$\rightarrow$} unit}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Ocamlary-type-new+u+t}\ocamlcodefragment{\ocamltag{keyword}{type} new\_\allowbreak{}t = .\allowbreak{}.\allowbreak{}}\\ +\label{module-Ocamlary-extension-decl-C}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[module-Ocamlary-type-new+u+t]{\ocamlinlinecode{new\_\allowbreak{}t}} += }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{C}}\label{module-Ocamlary-extension-C}\\ +\end{ocamltabular}% +\\ +\label{module-Ocamlary-module-type-TypeExtPruned}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Ocamlary-module-type-TypeExtPruned]{\ocamlinlinecode{TypeExtPruned}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Ocamlary-module-type-TypeExtPruned-extension-decl-C}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[module-Ocamlary-type-new+u+t]{\ocamlinlinecode{new\_\allowbreak{}t}} += }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{C}}\label{module-Ocamlary-module-type-TypeExtPruned-extension-C}\\ +\end{ocamltabular}% +\\ +\label{module-Ocamlary-module-type-TypeExtPruned-val-f}\ocamlcodefragment{\ocamltag{keyword}{val} f : \hyperref[module-Ocamlary-type-new+u+t]{\ocamlinlinecode{new\_\allowbreak{}t}} \ocamltag{arrow}{$\rightarrow$} unit}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ + +\input{Ocamlary.ModuleWithSignature.tex} +\input{Ocamlary.ModuleWithSignatureAlias.tex} +\input{Ocamlary.Recollection.tex} +\input{Ocamlary.FunctorTypeOf.tex} +\input{Ocamlary.empty_class.tex} +\input{Ocamlary.one_method_class.tex} +\input{Ocamlary.two_method_class.tex} +\input{Ocamlary.param_class.tex} +\input{Ocamlary.Dep2.tex} +\input{Ocamlary.Dep5.tex} +\input{Ocamlary.Dep7.tex} +\input{Ocamlary.Dep9.tex} +\input{Ocamlary.Dep12.tex} +\input{Ocamlary.Dep13.tex} +\input{Ocamlary.With3.tex} +\input{Ocamlary.With4.tex} +\input{Ocamlary.With7.tex} diff --git a/test/generators/latex/Ocamlary.two_method_class.tex b/test/generators/latex/Ocamlary.two_method_class.tex new file mode 100644 index 0000000000..9e7eb3166e --- /dev/null +++ b/test/generators/latex/Ocamlary.two_method_class.tex @@ -0,0 +1,5 @@ +\section{Class \ocamlinlinecode{Ocamlary.\allowbreak{}two\_\allowbreak{}method\_\allowbreak{}class}}\label{module-Ocamlary-class-two+u+method+u+class}% +\label{module-Ocamlary-class-two+u+method+u+class-method-one}\ocamlcodefragment{\ocamltag{keyword}{method} one : \hyperref[module-Ocamlary-class-one+u+method+u+class]{\ocamlinlinecode{one\_\allowbreak{}method\_\allowbreak{}class}}}\\ +\label{module-Ocamlary-class-two+u+method+u+class-method-undo}\ocamlcodefragment{\ocamltag{keyword}{method} undo : unit}\\ + + diff --git a/test/generators/latex/Recent.tex b/test/generators/latex/Recent.tex new file mode 100644 index 0000000000..cf707164d4 --- /dev/null +++ b/test/generators/latex/Recent.tex @@ -0,0 +1,78 @@ +\section{Module \ocamlinlinecode{Recent}}\label{module-Recent}% +\label{module-Recent-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Recent-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Recent-module-type-S1}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Recent-module-type-S1]{\ocamlinlinecode{S1}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Parameters\label{parameters}}% +\label{module-Recent-module-type-S1-argument-1-+u+}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Recent-module-type-S1-argument-1-+u+]{\ocamlinlinecode{\_\allowbreak{}}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsubsection{Signature\label{signature}}% +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Recent-type-variant}\ocamlcodefragment{\ocamltag{keyword}{type} variant = }\begin{ocamlindent}\ocamlcodefragment{| \ocamltag{constructor}{A}}\label{module-Recent-type-variant.A}% +\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{| \ocamltag{constructor}{B} \ocamltag{keyword}{of} int}\label{module-Recent-type-variant.B}% +\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{| \ocamltag{constructor}{C}}\label{module-Recent-type-variant.C}% +\begin{ocamlindent}foo\end{ocamlindent}% +\ocamlcodefragment{| \ocamltag{constructor}{D}}\label{module-Recent-type-variant.D}% +\begin{ocamlindent}\emph{bar}\end{ocamlindent}% +\ocamlcodefragment{| \ocamltag{constructor}{E} \ocamltag{keyword}{of} \{}\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{a : int;\allowbreak{}}\label{module-Recent-type-variant.a}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{\}}\label{module-Recent-type-variant.E}% +\begin{ocamlindent}\end{ocamlindent}% +\end{ocamlindent}% +\label{module-Recent-type-gadt}\ocamlcodefragment{\ocamltag{keyword}{type} \_\allowbreak{} gadt = }\begin{ocamlindent}\ocamlcodefragment{| \ocamltag{constructor}{A} : int \hyperref[module-Recent-type-gadt]{\ocamlinlinecode{gadt}}}\label{module-Recent-type-gadt.A}% +\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{| \ocamltag{constructor}{B} : int \ocamltag{arrow}{$\rightarrow$} string \hyperref[module-Recent-type-gadt]{\ocamlinlinecode{gadt}}}\label{module-Recent-type-gadt.B}% +\begin{ocamlindent}foo\end{ocamlindent}% +\ocamlcodefragment{| \ocamltag{constructor}{C} : \{}\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{a : int;\allowbreak{}}\label{module-Recent-type-gadt.a}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{\} \ocamltag{arrow}{$\rightarrow$} unit \hyperref[module-Recent-type-gadt]{\ocamlinlinecode{gadt}}}\label{module-Recent-type-gadt.C}% +\begin{ocamlindent}\end{ocamlindent}% +\end{ocamlindent}% +\label{module-Recent-type-polymorphic+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} polymorphic\_\allowbreak{}variant = [ }\\ +\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{`A}\label{module-Recent-type-polymorphic+u+variant.A}& \\ +\ocamlinlinecode{| }\ocamlinlinecode{`B \ocamltag{keyword}{of} int}\label{module-Recent-type-polymorphic+u+variant.B}& \\ +\ocamlinlinecode{| }\ocamlinlinecode{`C}\label{module-Recent-type-polymorphic+u+variant.C}& foo\\ +\ocamlinlinecode{| }\ocamlinlinecode{`D}\label{module-Recent-type-polymorphic+u+variant.D}& bar\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{ ]}\\ +\label{module-Recent-type-empty+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} empty\_\allowbreak{}variant = |}\\ +\label{module-Recent-type-nonrec+u+}\ocamlcodefragment{\ocamltag{keyword}{type} \ocamltag{keyword}{nonrec} nonrec\_\allowbreak{} = int}\\ +\label{module-Recent-type-empty+u+conj}\ocamlcodefragment{\ocamltag{keyword}{type} empty\_\allowbreak{}conj = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{X} : [< `X of \& \ocamltag{type-var}{'a} \& int * float ] \ocamltag{arrow}{$\rightarrow$} \hyperref[module-Recent-type-empty+u+conj]{\ocamlinlinecode{empty\_\allowbreak{}conj}}}\label{module-Recent-type-empty+u+conj.X}\\ +\end{ocamltabular}% +\\ +\label{module-Recent-type-conj}\ocamlcodefragment{\ocamltag{keyword}{type} conj = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{X} : [< `X of int \& [< `B of int \& float ] ] \ocamltag{arrow}{$\rightarrow$} \hyperref[module-Recent-type-conj]{\ocamlinlinecode{conj}}}\label{module-Recent-type-conj.X}\\ +\end{ocamltabular}% +\\ +\label{module-Recent-val-empty+u+conj}\ocamlcodefragment{\ocamltag{keyword}{val} empty\_\allowbreak{}conj : [< `X of \& \ocamltag{type-var}{'a} \& int * float ]}\\ +\label{module-Recent-val-conj}\ocamlcodefragment{\ocamltag{keyword}{val} conj : [< `X of int \& [< `B of int \& float ] ]}\\ +\label{module-Recent-module-Z}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Recent-module-Z]{\ocamlinlinecode{Z}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Recent-module-Z-module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Recent-module-Z-module-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Recent-module-Z-module-Y-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Recent-module-Z-module-Y-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Recent-module-Z-module-Y-module-X-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} 'a t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Recent-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Recent-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Recent-module-X-module-L}\ocamlcodefragment{\ocamltag{keyword}{module} L := \hyperref[module-Recent-module-Z-module-Y]{\ocamlinlinecode{Z.\allowbreak{}Y}}}\\ +\label{module-Recent-module-X-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int \hyperref[module-Recent-module-Z-module-Y-module-X-type-t]{\ocamlinlinecode{Z.\allowbreak{}Y.\allowbreak{}X.\allowbreak{}t}}}\\ +\label{module-Recent-module-X-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u := int}\\ +\label{module-Recent-module-X-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} v = \hyperref[module-Recent-module-X-type-u]{\ocamlinlinecode{u}} \hyperref[module-Recent-module-Z-module-Y-module-X-type-t]{\ocamlinlinecode{Z.\allowbreak{}Y.\allowbreak{}X.\allowbreak{}t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Recent-module-type-PolyS}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Recent-module-type-PolyS]{\ocamlinlinecode{PolyS}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Recent-module-type-PolyS-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = [ }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{`A}\label{module-Recent-module-type-PolyS-type-t.A}\\ +\ocamlinlinecode{| }\ocamlinlinecode{`B}\label{module-Recent-module-type-PolyS-type-t.B}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{ ]}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ + + diff --git a/test/generators/latex/Recent_impl.B.tex b/test/generators/latex/Recent_impl.B.tex new file mode 100644 index 0000000000..5e1c87d2ca --- /dev/null +++ b/test/generators/latex/Recent_impl.B.tex @@ -0,0 +1,7 @@ +\section{Module \ocamlinlinecode{Recent\_\allowbreak{}impl.\allowbreak{}B}}\label{module-Recent+u+impl-module-B}% +\label{module-Recent+u+impl-module-B-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{B}}\label{module-Recent+u+impl-module-B-type-t.B}\\ +\end{ocamltabular}% +\\ + + diff --git a/test/generators/latex/Recent_impl.tex b/test/generators/latex/Recent_impl.tex new file mode 100644 index 0000000000..4081da4a6a --- /dev/null +++ b/test/generators/latex/Recent_impl.tex @@ -0,0 +1,32 @@ +\section{Module \ocamlinlinecode{Recent\_\allowbreak{}impl}}\label{module-Recent+u+impl}% +\label{module-Recent+u+impl-module-Foo}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Recent+u+impl-module-Foo]{\ocamlinlinecode{Foo}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Recent+u+impl-module-Foo-module-A}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Recent+u+impl-module-Foo-module-A]{\ocamlinlinecode{A}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Recent+u+impl-module-Foo-module-A-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A}}\label{module-Recent+u+impl-module-Foo-module-A-type-t.A}\\ +\end{ocamltabular}% +\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Recent+u+impl-module-Foo-module-B}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Recent+u+impl-module-Foo-module-B]{\ocamlinlinecode{B}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Recent+u+impl-module-Foo-module-B-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{B}}\label{module-Recent+u+impl-module-Foo-module-B-type-t.B}\\ +\end{ocamltabular}% +\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Recent+u+impl-module-B}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Recent+u+impl-module-B]{\ocamlinlinecode{B}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ +\label{module-Recent+u+impl-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ +\label{module-Recent+u+impl-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Recent+u+impl-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Recent+u+impl-module-type-S-module-F}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Recent+u+impl-module-type-S-module-F]{\ocamlinlinecode{F}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Parameters\label{parameters}}% +\label{module-Recent+u+impl-module-type-S-module-F-argument-1-+u+}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Recent+u+impl-module-type-S-module-F-argument-1-+u+]{\ocamlinlinecode{\_\allowbreak{}}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\subsubsection{Signature\label{signature}}% +\label{module-Recent+u+impl-module-type-S-module-F-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Recent+u+impl-module-type-S-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Recent+u+impl-module-type-S-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Recent+u+impl-module-type-S-val-f}\ocamlcodefragment{\ocamltag{keyword}{val} f : \hyperref[module-Recent+u+impl-module-type-S-module-F-type-t]{\ocamlinlinecode{F(X).\allowbreak{}t}}}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Recent+u+impl-module-B'}\ocamlcodefragment{\ocamltag{keyword}{module} B' = \hyperref[module-Recent+u+impl-module-Foo-module-B]{\ocamlinlinecode{Foo.\allowbreak{}B}}}\\ + +\input{Recent_impl.B.tex} diff --git a/test/generators/latex/Section.tex b/test/generators/latex/Section.tex new file mode 100644 index 0000000000..aec76772d5 --- /dev/null +++ b/test/generators/latex/Section.tex @@ -0,0 +1,20 @@ +\section{Module \ocamlinlinecode{Section}}\label{module-Section}% +This is the module comment. Eventually, sections won't be allowed in it. + +\subsection{Empty section\label{empty-section}}% +\subsection{Text only\label{text-only}}% +Foo bar. + +\subsection{Aside only\label{aside-only}}% +Foo bar. + +\subsection{Value only\label{value-only}}% +\label{module-Section-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\\ +\subsection{Empty section\label{empty-section}}% +\subsection{within a comment\label{within-a-comment}}% +\subsubsection{and one with a nested section\label{and-one-with-a-nested-section}}% +\subsection{\emph{This} \ocamlinlinecode{section} \bold{title} \textsubscript{has} \textsuperscript{markup}\label{this-section-title-has-markup}}% +But links are impossible thanks to the parser, so we never have trouble rendering a section title in a table of contents – no link will be nested inside another link. + + + diff --git a/test/generators/latex/Stop.tex b/test/generators/latex/Stop.tex new file mode 100644 index 0000000000..bace2cc8e6 --- /dev/null +++ b/test/generators/latex/Stop.tex @@ -0,0 +1,17 @@ +\section{Module \ocamlinlinecode{Stop}}\label{module-Stop}% +This test cases exercises stop comments. + +\label{module-Stop-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : int}\begin{ocamlindent}This is normal commented text.\end{ocamlindent}% +\medbreak +The next value is \ocamlinlinecode{bar}, and it should be missing from the documentation. There is also an entire module, \ocamlinlinecode{M}, which should also be hidden. It contains a nested stop comment, but that stop comment should not turn documentation back on in this outer module, because stop comments respect scope. + +Documentation is on again. + +Now, we have a nested module, and it has a stop comment between its two items. We want to see that the first item is displayed, but the second is missing, and the stop comment disables documenation only in that module, and not in this outer module. + +\label{module-Stop-module-N}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Stop-module-N]{\ocamlinlinecode{N}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Stop-module-N-val-quux}\ocamlcodefragment{\ocamltag{keyword}{val} quux : int}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Stop-val-lol}\ocamlcodefragment{\ocamltag{keyword}{val} lol : int}\\ + + diff --git a/test/generators/latex/Stop_dead_link_doc.tex b/test/generators/latex/Stop_dead_link_doc.tex new file mode 100644 index 0000000000..c8ff3973c6 --- /dev/null +++ b/test/generators/latex/Stop_dead_link_doc.tex @@ -0,0 +1,28 @@ +\section{Module \ocamlinlinecode{Stop\_\allowbreak{}dead\_\allowbreak{}link\_\allowbreak{}doc}}\label{module-Stop+u+dead+u+link+u+doc}% +\label{module-Stop+u+dead+u+link+u+doc-module-Foo}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Stop+u+dead+u+link+u+doc-module-Foo]{\ocamlinlinecode{Foo}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Stop+u+dead+u+link+u+doc-module-Foo-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Stop+u+dead+u+link+u+doc-type-foo}\ocamlcodefragment{\ocamltag{keyword}{type} foo = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{Bar} \ocamltag{keyword}{of} \hyperref[module-Stop+u+dead+u+link+u+doc-module-Foo-type-t]{\ocamlinlinecode{Foo.\allowbreak{}t}}}\label{module-Stop+u+dead+u+link+u+doc-type-foo.Bar}\\ +\end{ocamltabular}% +\\ +\label{module-Stop+u+dead+u+link+u+doc-type-bar}\ocamlcodefragment{\ocamltag{keyword}{type} bar = }\begin{ocamlindent}\ocamlcodefragment{| \ocamltag{constructor}{Bar} \ocamltag{keyword}{of} \{}\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{field : \hyperref[module-Stop+u+dead+u+link+u+doc-module-Foo-type-t]{\ocamlinlinecode{Foo.\allowbreak{}t}};\allowbreak{}}\label{module-Stop+u+dead+u+link+u+doc-type-bar.field}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{\}}\label{module-Stop+u+dead+u+link+u+doc-type-bar.Bar}\\ +\end{ocamlindent}% +\label{module-Stop+u+dead+u+link+u+doc-type-foo+u+}\ocamlcodefragment{\ocamltag{keyword}{type} foo\_\allowbreak{} = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{Bar\_\allowbreak{}} \ocamltag{keyword}{of} int * \hyperref[module-Stop+u+dead+u+link+u+doc-module-Foo-type-t]{\ocamlinlinecode{Foo.\allowbreak{}t}} * int}\label{module-Stop+u+dead+u+link+u+doc-type-foo+u+.Bar+u+}\\ +\end{ocamltabular}% +\\ +\label{module-Stop+u+dead+u+link+u+doc-type-bar+u+}\ocamlcodefragment{\ocamltag{keyword}{type} bar\_\allowbreak{} = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{Bar\_\allowbreak{}\_\allowbreak{}} \ocamltag{keyword}{of} \hyperref[module-Stop+u+dead+u+link+u+doc-module-Foo-type-t]{\ocamlinlinecode{Foo.\allowbreak{}t}} option}\label{module-Stop+u+dead+u+link+u+doc-type-bar+u+.Bar+u++u+}\\ +\end{ocamltabular}% +\\ +\label{module-Stop+u+dead+u+link+u+doc-type-another+u+foo}\ocamlcodefragment{\ocamltag{keyword}{type} another\_\allowbreak{}foo}\\ +\label{module-Stop+u+dead+u+link+u+doc-type-another+u+bar}\ocamlcodefragment{\ocamltag{keyword}{type} another\_\allowbreak{}bar}\\ +\label{module-Stop+u+dead+u+link+u+doc-type-another+u+foo+u+}\ocamlcodefragment{\ocamltag{keyword}{type} another\_\allowbreak{}foo\_\allowbreak{}}\\ +\label{module-Stop+u+dead+u+link+u+doc-type-another+u+bar+u+}\ocamlcodefragment{\ocamltag{keyword}{type} another\_\allowbreak{}bar\_\allowbreak{}}\\ + + diff --git a/test/generators/latex/Toplevel_comments.Alias.tex b/test/generators/latex/Toplevel_comments.Alias.tex new file mode 100644 index 0000000000..88c4172416 --- /dev/null +++ b/test/generators/latex/Toplevel_comments.Alias.tex @@ -0,0 +1,8 @@ +\section{Module \ocamlinlinecode{Toplevel\_\allowbreak{}comments.\allowbreak{}Alias}}\label{module-Toplevel+u+comments-module-Alias}% +Doc of \ocamlinlinecode{Alias}. + +Doc of \ocamlinlinecode{T}, part 2. + +\label{module-Toplevel+u+comments-module-Alias-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ + + diff --git a/test/generators/latex/Toplevel_comments.c1.tex b/test/generators/latex/Toplevel_comments.c1.tex new file mode 100644 index 0000000000..2860df0e34 --- /dev/null +++ b/test/generators/latex/Toplevel_comments.c1.tex @@ -0,0 +1,7 @@ +\section{Class \ocamlinlinecode{Toplevel\_\allowbreak{}comments.\allowbreak{}c1}}\label{module-Toplevel+u+comments-class-c1}% +Doc of \ocamlinlinecode{c1}, part 1. + +Doc of \ocamlinlinecode{c1}, part 2. + + + diff --git a/test/generators/latex/Toplevel_comments.c2.tex b/test/generators/latex/Toplevel_comments.c2.tex new file mode 100644 index 0000000000..06b06d135b --- /dev/null +++ b/test/generators/latex/Toplevel_comments.c2.tex @@ -0,0 +1,7 @@ +\section{Class \ocamlinlinecode{Toplevel\_\allowbreak{}comments.\allowbreak{}c2}}\label{module-Toplevel+u+comments-class-c2}% +Doc of \ocamlinlinecode{c2}. + +Doc of \ocamlinlinecode{ct}, part 2. + + + diff --git a/test/generators/latex/Toplevel_comments.tex b/test/generators/latex/Toplevel_comments.tex new file mode 100644 index 0000000000..6c031c7bd6 --- /dev/null +++ b/test/generators/latex/Toplevel_comments.tex @@ -0,0 +1,49 @@ +\section{Module \ocamlinlinecode{Toplevel\_\allowbreak{}comments}}\label{module-Toplevel+u+comments}% +A doc comment at the beginning of a module is considered to be that module's doc. + +\label{module-Toplevel+u+comments-module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Toplevel+u+comments-module-type-T]{\ocamlinlinecode{T}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Toplevel+u+comments-module-type-T-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Doc of \ocamlinlinecode{T}, part 1.\end{ocamlindent}% +\medbreak +\label{module-Toplevel+u+comments-module-Include+u+inline}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Toplevel+u+comments-module-Include+u+inline]{\ocamlinlinecode{Include\_\allowbreak{}inline}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \hyperref[module-Toplevel+u+comments-module-type-T]{\ocamlinlinecode{T}}\label{module-Toplevel+u+comments-module-Include+u+inline-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Doc of \ocamlinlinecode{T}, part 2.\end{ocamlindent}% +\medbreak +\label{module-Toplevel+u+comments-module-Include+u+inline'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Toplevel+u+comments-module-Include+u+inline']{\ocamlinlinecode{Include\_\allowbreak{}inline'}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}part 3\ocamltag{keyword}{include} \hyperref[module-Toplevel+u+comments-module-type-T]{\ocamlinlinecode{T}}\label{module-Toplevel+u+comments-module-Include+u+inline'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Doc of \ocamlinlinecode{Include\_\allowbreak{}inline}, part 1.\end{ocamlindent}% +\medbreak +\label{module-Toplevel+u+comments-module-type-Include+u+inline+u+T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Toplevel+u+comments-module-type-Include+u+inline+u+T]{\ocamlinlinecode{Include\_\allowbreak{}inline\_\allowbreak{}T}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \hyperref[module-Toplevel+u+comments-module-type-T]{\ocamlinlinecode{T}}\label{module-Toplevel+u+comments-module-type-Include+u+inline+u+T-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Doc of \ocamlinlinecode{T}, part 2.\end{ocamlindent}% +\medbreak +\label{module-Toplevel+u+comments-module-type-Include+u+inline+u+T'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Toplevel+u+comments-module-type-Include+u+inline+u+T']{\ocamlinlinecode{Include\_\allowbreak{}inline\_\allowbreak{}T'}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}part 3\ocamltag{keyword}{include} \hyperref[module-Toplevel+u+comments-module-type-T]{\ocamlinlinecode{T}}\label{module-Toplevel+u+comments-module-type-Include+u+inline+u+T'-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Doc of \ocamlinlinecode{Include\_\allowbreak{}inline\_\allowbreak{}T'}, part 1.\end{ocamlindent}% +\medbreak +\label{module-Toplevel+u+comments-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Toplevel+u+comments-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Doc of \ocamlinlinecode{M}\end{ocamlindent}% +\medbreak +\label{module-Toplevel+u+comments-module-M'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Toplevel+u+comments-module-M']{\ocamlinlinecode{M'}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Doc of \ocamlinlinecode{M'} from outside\end{ocamlindent}% +\medbreak +\label{module-Toplevel+u+comments-module-M''}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Toplevel+u+comments-module-M'']{\ocamlinlinecode{M''}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Doc of \ocamlinlinecode{M''}, part 1.\end{ocamlindent}% +\medbreak +\label{module-Toplevel+u+comments-module-Alias}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Toplevel+u+comments-module-Alias]{\ocamlinlinecode{Alias}}}\ocamlcodefragment{ : \hyperref[module-Toplevel+u+comments-module-type-T]{\ocamlinlinecode{T}}}\begin{ocamlindent}Doc of \ocamlinlinecode{Alias}.\end{ocamlindent}% +\medbreak +\label{module-Toplevel+u+comments-class-c1}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[module-Toplevel+u+comments-class-c1]{\ocamlinlinecode{c1}}}\ocamlcodefragment{ : int \ocamltag{arrow}{$\rightarrow$} \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\begin{ocamlindent}Doc of \ocamlinlinecode{c1}, part 1.\end{ocamlindent}% +\medbreak +\label{module-Toplevel+u+comments-class-type-ct}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{type} \hyperref[module-Toplevel+u+comments-class-type-ct]{\ocamlinlinecode{ct}}}\ocamlcodefragment{ = \ocamltag{keyword}{object}}\begin{ocamlindent}\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Doc of \ocamlinlinecode{ct}, part 1.\end{ocamlindent}% +\medbreak +\label{module-Toplevel+u+comments-class-c2}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[module-Toplevel+u+comments-class-c2]{\ocamlinlinecode{c2}}}\ocamlcodefragment{ : \hyperref[module-Toplevel+u+comments-class-type-ct]{\ocamlinlinecode{ct}}}\begin{ocamlindent}Doc of \ocamlinlinecode{c2}.\end{ocamlindent}% +\medbreak +\label{module-Toplevel+u+comments-module-Ref+u+in+u+synopsis}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[module-Toplevel+u+comments-module-Ref+u+in+u+synopsis]{\ocamlinlinecode{Ref\_\allowbreak{}in\_\allowbreak{}synopsis}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Toplevel+u+comments-module-Ref+u+in+u+synopsis-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}\hyperref[module-Toplevel+u+comments-module-Ref+u+in+u+synopsis-type-t]{\ocamlinlinecode{\ocamlinlinecode{t}}[p\pageref*{module-Toplevel+u+comments-module-Ref+u+in+u+synopsis-type-t}]}.\end{ocamlindent}% +\medbreak + +\input{Toplevel_comments.Alias.tex} +\input{Toplevel_comments.c1.tex} +\input{Toplevel_comments.c2.tex} diff --git a/test/generators/latex/Type.tex b/test/generators/latex/Type.tex new file mode 100644 index 0000000000..e763fcc93a --- /dev/null +++ b/test/generators/latex/Type.tex @@ -0,0 +1,124 @@ +\section{Module \ocamlinlinecode{Type}}\label{module-Type}% +\label{module-Type-type-abstract}\ocamlcodefragment{\ocamltag{keyword}{type} abstract}\begin{ocamlindent}Some \emph{documentation}.\end{ocamlindent}% +\medbreak +\label{module-Type-type-alias}\ocamlcodefragment{\ocamltag{keyword}{type} alias = int}\\ +\label{module-Type-type-private+u+}\ocamlcodefragment{\ocamltag{keyword}{type} private\_\allowbreak{} = \ocamltag{keyword}{private} int}\\ +\label{module-Type-type-constructor}\ocamlcodefragment{\ocamltag{keyword}{type} 'a constructor = \ocamltag{type-var}{'a}}\\ +\label{module-Type-type-arrow}\ocamlcodefragment{\ocamltag{keyword}{type} arrow = int \ocamltag{arrow}{$\rightarrow$} int}\\ +\label{module-Type-type-higher+u+order}\ocamlcodefragment{\ocamltag{keyword}{type} higher\_\allowbreak{}order = (int \ocamltag{arrow}{$\rightarrow$} int) \ocamltag{arrow}{$\rightarrow$} int}\\ +\label{module-Type-type-labeled}\ocamlcodefragment{\ocamltag{keyword}{type} labeled = l:int \ocamltag{arrow}{$\rightarrow$} int}\\ +\label{module-Type-type-optional}\ocamlcodefragment{\ocamltag{keyword}{type} optional = ?l:int \ocamltag{arrow}{$\rightarrow$} int}\\ +\label{module-Type-type-labeled+u+higher+u+order}\ocamlcodefragment{\ocamltag{keyword}{type} labeled\_\allowbreak{}higher\_\allowbreak{}order = (l:int \ocamltag{arrow}{$\rightarrow$} int) \ocamltag{arrow}{$\rightarrow$} (?l:int \ocamltag{arrow}{$\rightarrow$} int) \ocamltag{arrow}{$\rightarrow$} int}\\ +\label{module-Type-type-pair}\ocamlcodefragment{\ocamltag{keyword}{type} pair = int * int}\\ +\label{module-Type-type-parens+u+dropped}\ocamlcodefragment{\ocamltag{keyword}{type} parens\_\allowbreak{}dropped = int * int}\\ +\label{module-Type-type-triple}\ocamlcodefragment{\ocamltag{keyword}{type} triple = int * int * int}\\ +\label{module-Type-type-nested+u+pair}\ocamlcodefragment{\ocamltag{keyword}{type} nested\_\allowbreak{}pair = (int * int) * int}\\ +\label{module-Type-type-instance}\ocamlcodefragment{\ocamltag{keyword}{type} instance = int \hyperref[module-Type-type-constructor]{\ocamlinlinecode{constructor}}}\\ +\label{module-Type-type-long}\ocamlcodefragment{\ocamltag{keyword}{type} long = \hyperref[module-Type-type-labeled+u+higher+u+order]{\ocamlinlinecode{labeled\_\allowbreak{}higher\_\allowbreak{}order}} \ocamltag{arrow}{$\rightarrow$} [ `Bar | `Baz of \hyperref[module-Type-type-triple]{\ocamlinlinecode{triple}} ] \ocamltag{arrow}{$\rightarrow$} \hyperref[module-Type-type-pair]{\ocamlinlinecode{pair}} \ocamltag{arrow}{$\rightarrow$} \hyperref[module-Type-type-labeled]{\ocamlinlinecode{labeled}} \ocamltag{arrow}{$\rightarrow$} \hyperref[module-Type-type-higher+u+order]{\ocamlinlinecode{higher\_\allowbreak{}order}} \ocamltag{arrow}{$\rightarrow$} (string \ocamltag{arrow}{$\rightarrow$} int) \ocamltag{arrow}{$\rightarrow$} (int,\allowbreak{} float,\allowbreak{} char,\allowbreak{} string,\allowbreak{} char,\allowbreak{} unit) \hyperref[xref-unresolved]{\ocamlinlinecode{CamlinternalFormatBasics}}.\allowbreak{}fmtty \ocamltag{arrow}{$\rightarrow$} \hyperref[module-Type-type-nested+u+pair]{\ocamlinlinecode{nested\_\allowbreak{}pair}} \ocamltag{arrow}{$\rightarrow$} \hyperref[module-Type-type-arrow]{\ocamlinlinecode{arrow}} \ocamltag{arrow}{$\rightarrow$} string \ocamltag{arrow}{$\rightarrow$} \hyperref[module-Type-type-nested+u+pair]{\ocamlinlinecode{nested\_\allowbreak{}pair}} array}\\ +\label{module-Type-type-variant+u+e}\ocamlcodefragment{\ocamltag{keyword}{type} variant\_\allowbreak{}e = \{}\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{a : int;\allowbreak{}}\label{module-Type-type-variant+u+e.a}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{\}}\\ +\label{module-Type-type-variant}\ocamlcodefragment{\ocamltag{keyword}{type} variant = }\\ +\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A}}\label{module-Type-type-variant.A}& \\ +\ocamlcodefragment{| \ocamltag{constructor}{B} \ocamltag{keyword}{of} int}\label{module-Type-type-variant.B}& \\ +\ocamlcodefragment{| \ocamltag{constructor}{C}}\label{module-Type-type-variant.C}& foo\\ +\ocamlcodefragment{| \ocamltag{constructor}{D}}\label{module-Type-type-variant.D}& \emph{bar}\\ +\ocamlcodefragment{| \ocamltag{constructor}{E} \ocamltag{keyword}{of} \hyperref[module-Type-type-variant+u+e]{\ocamlinlinecode{variant\_\allowbreak{}e}}}\label{module-Type-type-variant.E}& \\ +\end{ocamltabular}% +\\ +\label{module-Type-type-variant+u+c}\ocamlcodefragment{\ocamltag{keyword}{type} variant\_\allowbreak{}c = \{}\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{a : int;\allowbreak{}}\label{module-Type-type-variant+u+c.a}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{\}}\\ +\label{module-Type-type-gadt}\ocamlcodefragment{\ocamltag{keyword}{type} \_\allowbreak{} gadt = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A} : int \hyperref[module-Type-type-gadt]{\ocamlinlinecode{gadt}}}\label{module-Type-type-gadt.A}\\ +\ocamlcodefragment{| \ocamltag{constructor}{B} : int \ocamltag{arrow}{$\rightarrow$} string \hyperref[module-Type-type-gadt]{\ocamlinlinecode{gadt}}}\label{module-Type-type-gadt.B}\\ +\ocamlcodefragment{| \ocamltag{constructor}{C} : \hyperref[module-Type-type-variant+u+c]{\ocamlinlinecode{variant\_\allowbreak{}c}} \ocamltag{arrow}{$\rightarrow$} unit \hyperref[module-Type-type-gadt]{\ocamlinlinecode{gadt}}}\label{module-Type-type-gadt.C}\\ +\end{ocamltabular}% +\\ +\label{module-Type-type-degenerate+u+gadt}\ocamlcodefragment{\ocamltag{keyword}{type} degenerate\_\allowbreak{}gadt = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A} : \hyperref[module-Type-type-degenerate+u+gadt]{\ocamlinlinecode{degenerate\_\allowbreak{}gadt}}}\label{module-Type-type-degenerate+u+gadt.A}\\ +\end{ocamltabular}% +\\ +\label{module-Type-type-private+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} private\_\allowbreak{}variant = \ocamltag{keyword}{private} }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A}}\label{module-Type-type-private+u+variant.A}\\ +\end{ocamltabular}% +\\ +\label{module-Type-type-record}\ocamlcodefragment{\ocamltag{keyword}{type} record = \{}\\ +\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlinlinecode{a : int;\allowbreak{}}\label{module-Type-type-record.a}& \\ +\ocamlinlinecode{\ocamltag{keyword}{mutable} b : int;\allowbreak{}}\label{module-Type-type-record.b}& \\ +\ocamlinlinecode{c : int;\allowbreak{}}\label{module-Type-type-record.c}& foo\\ +\ocamlinlinecode{d : int;\allowbreak{}}\label{module-Type-type-record.d}& \emph{bar}\\ +\ocamlinlinecode{e : a.\allowbreak{} \ocamltag{type-var}{'a};\allowbreak{}}\label{module-Type-type-record.e}& \\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{\}}\\ +\label{module-Type-type-polymorphic+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} polymorphic\_\allowbreak{}variant = [ }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{`A}\label{module-Type-type-polymorphic+u+variant.A}\\ +\ocamlinlinecode{| }\ocamlinlinecode{`B \ocamltag{keyword}{of} int}\label{module-Type-type-polymorphic+u+variant.B}\\ +\ocamlinlinecode{| }\ocamlinlinecode{`C \ocamltag{keyword}{of} int * unit}\label{module-Type-type-polymorphic+u+variant.C}\\ +\ocamlinlinecode{| }\ocamlinlinecode{`D}\label{module-Type-type-polymorphic+u+variant.D}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{ ]}\\ +\label{module-Type-type-polymorphic+u+variant+u+extension}\ocamlcodefragment{\ocamltag{keyword}{type} polymorphic\_\allowbreak{}variant\_\allowbreak{}extension = [ }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{\hyperref[module-Type-type-polymorphic+u+variant]{\ocamlinlinecode{polymorphic\_\allowbreak{}variant}}}\label{module-Type-type-polymorphic+u+variant+u+extension.polymorphic+u+variant}\\ +\ocamlinlinecode{| }\ocamlinlinecode{`E}\label{module-Type-type-polymorphic+u+variant+u+extension.E}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{ ]}\\ +\label{module-Type-type-nested+u+polymorphic+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} nested\_\allowbreak{}polymorphic\_\allowbreak{}variant = [ }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{`A \ocamltag{keyword}{of} [ `B | `C ]}\label{module-Type-type-nested+u+polymorphic+u+variant.A}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{ ]}\\ +\label{module-Type-type-private+u+extenion#row}\ocamlcodefragment{\ocamltag{keyword}{type} private\_\allowbreak{}extenion\#row}\\ +\label{module-Type-type-private+u+extenion}\ocamlcodefragment{\ocamltag{keyword}{and} private\_\allowbreak{}extenion = \ocamltag{keyword}{private} [> }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{\hyperref[module-Type-type-polymorphic+u+variant]{\ocamlinlinecode{polymorphic\_\allowbreak{}variant}}}\label{module-Type-type-private+u+extenion.polymorphic+u+variant}\\ +\end{ocamltabular}% +\\ +\ocamlcodefragment{ ]}\\ +\label{module-Type-type-object+u+}\ocamlcodefragment{\ocamltag{keyword}{type} object\_\allowbreak{} = < a : int;\allowbreak{} b : int;\allowbreak{} c : int;\allowbreak{} >}\\ +\label{module-Type-module-type-X}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[module-Type-module-type-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{module-Type-module-type-X-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ +\label{module-Type-module-type-X-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ +\end{ocamlindent}% +\ocamlcodefragment{\ocamltag{keyword}{end}}\\ +\label{module-Type-type-module+u+}\ocamlcodefragment{\ocamltag{keyword}{type} module\_\allowbreak{} = (\ocamltag{keyword}{module} \hyperref[module-Type-module-type-X]{\ocamlinlinecode{X}})}\\ +\label{module-Type-type-module+u+substitution}\ocamlcodefragment{\ocamltag{keyword}{type} module\_\allowbreak{}substitution = (\ocamltag{keyword}{module} \hyperref[module-Type-module-type-X]{\ocamlinlinecode{X}} \ocamltag{keyword}{with} \ocamltag{keyword}{type} \hyperref[module-Type-module-type-X-type-t]{\ocamlinlinecode{t}} = int \ocamltag{keyword}{and} \ocamltag{keyword}{type} \hyperref[module-Type-module-type-X-type-u]{\ocamlinlinecode{u}} = unit)}\\ +\label{module-Type-type-covariant}\ocamlcodefragment{\ocamltag{keyword}{type} +'a covariant}\\ +\label{module-Type-type-contravariant}\ocamlcodefragment{\ocamltag{keyword}{type} -'a contravariant}\\ +\label{module-Type-type-bivariant}\ocamlcodefragment{\ocamltag{keyword}{type} \_\allowbreak{} bivariant = int}\\ +\label{module-Type-type-binary}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) binary}\\ +\label{module-Type-type-using+u+binary}\ocamlcodefragment{\ocamltag{keyword}{type} using\_\allowbreak{}binary = (int,\allowbreak{} int) \hyperref[module-Type-type-binary]{\ocamlinlinecode{binary}}}\\ +\label{module-Type-type-name}\ocamlcodefragment{\ocamltag{keyword}{type} 'custom name}\\ +\label{module-Type-type-constrained}\ocamlcodefragment{\ocamltag{keyword}{type} 'a constrained = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = int}\\ +\label{module-Type-type-exact+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a exact\_\allowbreak{}variant = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = [ `A | `B of int ]}\\ +\label{module-Type-type-lower+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a lower\_\allowbreak{}variant = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = [> `A | `B of int ]}\\ +\label{module-Type-type-any+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a any\_\allowbreak{}variant = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = [> ]}\\ +\label{module-Type-type-upper+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a upper\_\allowbreak{}variant = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = [< `A | `B of int ]}\\ +\label{module-Type-type-named+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a named\_\allowbreak{}variant = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = [< \hyperref[module-Type-type-polymorphic+u+variant]{\ocamlinlinecode{polymorphic\_\allowbreak{}variant}} ]}\\ +\label{module-Type-type-exact+u+object}\ocamlcodefragment{\ocamltag{keyword}{type} 'a exact\_\allowbreak{}object = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = < a : int;\allowbreak{} b : int;\allowbreak{} >}\\ +\label{module-Type-type-lower+u+object}\ocamlcodefragment{\ocamltag{keyword}{type} 'a lower\_\allowbreak{}object = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = < a : int;\allowbreak{} b : int;\allowbreak{} .\allowbreak{}.\allowbreak{} >}\\ +\label{module-Type-type-poly+u+object}\ocamlcodefragment{\ocamltag{keyword}{type} 'a poly\_\allowbreak{}object = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = < a : a.\allowbreak{} \ocamltag{type-var}{'a};\allowbreak{} >}\\ +\label{module-Type-type-double+u+constrained}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) double\_\allowbreak{}constrained = \ocamltag{type-var}{'a} * \ocamltag{type-var}{'b} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = int \ocamltag{keyword}{constraint} \ocamltag{type-var}{'b} = unit}\\ +\label{module-Type-type-as+u+}\ocamlcodefragment{\ocamltag{keyword}{type} as\_\allowbreak{} = int \ocamltag{keyword}{as} 'a * \ocamltag{type-var}{'a}}\\ +\label{module-Type-type-extensible}\ocamlcodefragment{\ocamltag{keyword}{type} extensible = .\allowbreak{}.\allowbreak{}}\\ +\label{module-Type-extension-decl-Extension}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[module-Type-type-extensible]{\ocamlinlinecode{extensible}} += }\\ +\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{Extension}}\label{module-Type-extension-Extension}& Documentation for \hyperref[module-Type-extension-Extension]{\ocamlinlinecode{\ocamlinlinecode{Extension}}[p\pageref*{module-Type-extension-Extension}]}.\\ +\ocamlcodefragment{| \ocamltag{extension}{Another\_\allowbreak{}extension}}\label{module-Type-extension-Another+u+extension}& Documentation for \hyperref[module-Type-extension-Another+u+extension]{\ocamlinlinecode{\ocamlinlinecode{Another\_\allowbreak{}extension}}[p\pageref*{module-Type-extension-Another+u+extension}]}.\\ +\end{ocamltabular}% +\\ +\label{module-Type-type-mutually}\ocamlcodefragment{\ocamltag{keyword}{type} mutually = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A} \ocamltag{keyword}{of} \hyperref[module-Type-type-recursive]{\ocamlinlinecode{recursive}}}\label{module-Type-type-mutually.A}\\ +\end{ocamltabular}% +\\ +\label{module-Type-type-recursive}\ocamlcodefragment{\ocamltag{keyword}{and} recursive = }\\ +\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{B} \ocamltag{keyword}{of} \hyperref[module-Type-type-mutually]{\ocamlinlinecode{mutually}}}\label{module-Type-type-recursive.B}\\ +\end{ocamltabular}% +\\ +\label{module-Type-exception-Foo}\ocamlcodefragment{\ocamltag{keyword}{exception} \ocamltag{exception}{Foo} \ocamltag{keyword}{of} int * int}\\ + + diff --git a/test/generators/latex/Val.tex b/test/generators/latex/Val.tex new file mode 100644 index 0000000000..bbde36bcf7 --- /dev/null +++ b/test/generators/latex/Val.tex @@ -0,0 +1,8 @@ +\section{Module \ocamlinlinecode{Val}}\label{module-Val}% +\label{module-Val-val-documented}\ocamlcodefragment{\ocamltag{keyword}{val} documented : unit}\begin{ocamlindent}Foo.\end{ocamlindent}% +\medbreak +\label{module-Val-val-undocumented}\ocamlcodefragment{\ocamltag{keyword}{val} undocumented : unit}\\ +\label{module-Val-val-documented+u+above}\ocamlcodefragment{\ocamltag{keyword}{val} documented\_\allowbreak{}above : unit}\begin{ocamlindent}Bar.\end{ocamlindent}% +\medbreak + + diff --git a/test/generators/latex/alias.targets b/test/generators/latex/alias.targets new file mode 100644 index 0000000000..c60d207606 --- /dev/null +++ b/test/generators/latex/alias.targets @@ -0,0 +1,2 @@ +Alias.tex +Alias.X.tex diff --git a/test/generators/latex/bugs.targets b/test/generators/latex/bugs.targets new file mode 100644 index 0000000000..9a5452eef7 --- /dev/null +++ b/test/generators/latex/bugs.targets @@ -0,0 +1 @@ +Bugs.tex diff --git a/test/generators/latex/bugs_post_406.targets b/test/generators/latex/bugs_post_406.targets new file mode 100644 index 0000000000..d757cbdb5e --- /dev/null +++ b/test/generators/latex/bugs_post_406.targets @@ -0,0 +1,2 @@ +Bugs_post_406.tex +Bugs_post_406.let_open'.tex diff --git a/test/generators/latex/bugs_pre_410.targets b/test/generators/latex/bugs_pre_410.targets new file mode 100644 index 0000000000..362fd400da --- /dev/null +++ b/test/generators/latex/bugs_pre_410.targets @@ -0,0 +1 @@ +Bugs_pre_410.tex diff --git a/test/generators/latex/class.targets b/test/generators/latex/class.targets new file mode 100644 index 0000000000..cd063dc2ae --- /dev/null +++ b/test/generators/latex/class.targets @@ -0,0 +1,5 @@ +Class.tex +Class.mutually'.tex +Class.recursive'.tex +Class.empty_virtual'.tex +Class.polymorphic'.tex diff --git a/test/generators/latex/external.targets b/test/generators/latex/external.targets new file mode 100644 index 0000000000..3b3eefd59d --- /dev/null +++ b/test/generators/latex/external.targets @@ -0,0 +1 @@ +External.tex diff --git a/test/generators/latex/functor.targets b/test/generators/latex/functor.targets new file mode 100644 index 0000000000..a800d17216 --- /dev/null +++ b/test/generators/latex/functor.targets @@ -0,0 +1,6 @@ +Functor.tex +Functor.F1.tex +Functor.F2.tex +Functor.F3.tex +Functor.F4.tex +Functor.F5.tex diff --git a/test/generators/latex/functor2.targets b/test/generators/latex/functor2.targets new file mode 100644 index 0000000000..0445ff437c --- /dev/null +++ b/test/generators/latex/functor2.targets @@ -0,0 +1,2 @@ +Functor2.tex +Functor2.X.tex diff --git a/test/generators/latex/include.targets b/test/generators/latex/include.targets new file mode 100644 index 0000000000..f108c3e09d --- /dev/null +++ b/test/generators/latex/include.targets @@ -0,0 +1 @@ +Include.tex diff --git a/test/generators/latex/include2.targets b/test/generators/latex/include2.targets new file mode 100644 index 0000000000..53308ce6af --- /dev/null +++ b/test/generators/latex/include2.targets @@ -0,0 +1 @@ +Include2.tex diff --git a/test/generators/latex/include_sections.targets b/test/generators/latex/include_sections.targets new file mode 100644 index 0000000000..7fd7e53af2 --- /dev/null +++ b/test/generators/latex/include_sections.targets @@ -0,0 +1 @@ +Include_sections.tex diff --git a/test/generators/latex/interlude.targets b/test/generators/latex/interlude.targets new file mode 100644 index 0000000000..9f801e8f48 --- /dev/null +++ b/test/generators/latex/interlude.targets @@ -0,0 +1 @@ +Interlude.tex diff --git a/test/generators/latex/labels.targets b/test/generators/latex/labels.targets new file mode 100644 index 0000000000..42e00f78cf --- /dev/null +++ b/test/generators/latex/labels.targets @@ -0,0 +1,2 @@ +Labels.tex +Labels.c.tex diff --git a/test/generators/latex/markup.targets b/test/generators/latex/markup.targets new file mode 100644 index 0000000000..d26c0c3abd --- /dev/null +++ b/test/generators/latex/markup.targets @@ -0,0 +1 @@ +Markup.tex diff --git a/test/generators/latex/mld.tex b/test/generators/latex/mld.tex new file mode 100644 index 0000000000..20180bde0d --- /dev/null +++ b/test/generators/latex/mld.tex @@ -0,0 +1,31 @@ +\section{Mld Page\label{mld-page}}\label{leaf-page-mld}% +This is an \ocamlinlinecode{.\allowbreak{}mld} file. It doesn't have an auto-generated title, like modules and other pages generated fully by odoc do. + +It will have a TOC generated from section headings. + +\subsection{Section\label{section}}% +This is a section. + +Another paragraph in section. + +\subsection{Another section\label{another-section}}% +This is another section. + +Another paragraph in section 2. + +\subsubsection{Subsection\label{subsection}}% +This is a subsection. + +Another paragraph in subsection. + +Yet another paragraph in subsection. + +\subsubsection{Another Subsection\label{another-subsection}}% +This is another subsection. + +Another paragraph in subsection 2. + +Yet another paragraph in subsection 2. + + + diff --git a/test/generators/latex/module.targets b/test/generators/latex/module.targets new file mode 100644 index 0000000000..1b9db8dab7 --- /dev/null +++ b/test/generators/latex/module.targets @@ -0,0 +1 @@ +Module.tex diff --git a/test/generators/latex/nested.targets b/test/generators/latex/nested.targets new file mode 100644 index 0000000000..968317ad67 --- /dev/null +++ b/test/generators/latex/nested.targets @@ -0,0 +1,4 @@ +Nested.tex +Nested.F.tex +Nested.z.tex +Nested.inherits.tex diff --git a/test/generators/latex/ocamlary.targets b/test/generators/latex/ocamlary.targets new file mode 100644 index 0000000000..f7204525d8 --- /dev/null +++ b/test/generators/latex/ocamlary.targets @@ -0,0 +1,23 @@ +Ocamlary.tex +Ocamlary.ModuleWithSignature.tex +Ocamlary.ModuleWithSignatureAlias.tex +Ocamlary.Recollection.tex +Ocamlary.FunctorTypeOf.tex +Ocamlary.empty_class.tex +Ocamlary.one_method_class.tex +Ocamlary.two_method_class.tex +Ocamlary.param_class.tex +Ocamlary.Dep2.tex +Ocamlary.Dep5.tex +Ocamlary.Dep5.Z.tex +Ocamlary.Dep7.tex +Ocamlary.Dep7.M.tex +Ocamlary.Dep9.tex +Ocamlary.Dep12.tex +Ocamlary.Dep13.tex +Ocamlary.Dep13.c.tex +Ocamlary.With3.tex +Ocamlary.With3.N.tex +Ocamlary.With4.tex +Ocamlary.With4.N.tex +Ocamlary.With7.tex diff --git a/test/generators/latex/page-mld.targets b/test/generators/latex/page-mld.targets new file mode 100644 index 0000000000..7389ca962c --- /dev/null +++ b/test/generators/latex/page-mld.targets @@ -0,0 +1 @@ +mld.tex diff --git a/test/generators/latex/recent.targets b/test/generators/latex/recent.targets new file mode 100644 index 0000000000..39a1ebe60c --- /dev/null +++ b/test/generators/latex/recent.targets @@ -0,0 +1 @@ +Recent.tex diff --git a/test/generators/latex/recent_impl.targets b/test/generators/latex/recent_impl.targets new file mode 100644 index 0000000000..87bd03eedb --- /dev/null +++ b/test/generators/latex/recent_impl.targets @@ -0,0 +1,2 @@ +Recent_impl.tex +Recent_impl.B.tex diff --git a/test/generators/latex/section.targets b/test/generators/latex/section.targets new file mode 100644 index 0000000000..2e7f3fdd3f --- /dev/null +++ b/test/generators/latex/section.targets @@ -0,0 +1 @@ +Section.tex diff --git a/test/generators/latex/stop.targets b/test/generators/latex/stop.targets new file mode 100644 index 0000000000..6f4fddee7c --- /dev/null +++ b/test/generators/latex/stop.targets @@ -0,0 +1 @@ +Stop.tex diff --git a/test/generators/latex/stop_dead_link_doc.targets b/test/generators/latex/stop_dead_link_doc.targets new file mode 100644 index 0000000000..ad1c094add --- /dev/null +++ b/test/generators/latex/stop_dead_link_doc.targets @@ -0,0 +1 @@ +Stop_dead_link_doc.tex diff --git a/test/generators/latex/toplevel_comments.targets b/test/generators/latex/toplevel_comments.targets new file mode 100644 index 0000000000..0f2a9a6fbd --- /dev/null +++ b/test/generators/latex/toplevel_comments.targets @@ -0,0 +1,4 @@ +Toplevel_comments.tex +Toplevel_comments.Alias.tex +Toplevel_comments.c1.tex +Toplevel_comments.c2.tex diff --git a/test/generators/latex/type.targets b/test/generators/latex/type.targets new file mode 100644 index 0000000000..5e4c7c8617 --- /dev/null +++ b/test/generators/latex/type.targets @@ -0,0 +1 @@ +Type.tex diff --git a/test/generators/latex/val.targets b/test/generators/latex/val.targets new file mode 100644 index 0000000000..d53db5f8fb --- /dev/null +++ b/test/generators/latex/val.targets @@ -0,0 +1 @@ +Val.tex From 0345235cf8d31d439fcd43b2d82d6bdcf25852b8 Mon Sep 17 00:00:00 2001 From: lubegasimon Date: Tue, 6 Jul 2021 19:19:43 +0300 Subject: [PATCH 6/8] add man dir and promote man files Signed-off-by: lubegasimon --- test/generators/man/Alias.3o | 16 + test/generators/man/Alias.Foo__X.3o | 20 + test/generators/man/Alias.X.3o | 20 + test/generators/man/Bugs.3o | 26 + test/generators/man/Bugs_post_406.3o | 19 + .../generators/man/Bugs_post_406.let_open'.3o | 14 + test/generators/man/Bugs_pre_410.3o | 26 + test/generators/man/Class.3o | 30 + test/generators/man/Class.empty_virtual'.3o | 14 + test/generators/man/Class.mutually'.3o | 14 + test/generators/man/Class.polymorphic'.3o | 14 + test/generators/man/Class.recursive'.3o | 14 + test/generators/man/External.3o | 20 + test/generators/man/Functor.3o | 53 + test/generators/man/Functor.F1.3o | 30 + test/generators/man/Functor.F2.3o | 30 + test/generators/man/Functor.F3.3o | 30 + test/generators/man/Functor.F4.3o | 30 + test/generators/man/Functor.F5.3o | 23 + test/generators/man/Functor2.3o | 60 + test/generators/man/Functor2.X.3o | 41 + test/generators/man/Include.3o | 71 + test/generators/man/Include2.3o | 41 + test/generators/man/Include2.X.3o | 17 + test/generators/man/Include2.Y.3o | 17 + test/generators/man/Include2.Y_include_doc.3o | 14 + .../man/Include2.Y_include_synopsis.3o | 17 + test/generators/man/Include_sections.3o | 204 ++ test/generators/man/Interlude.3o | 54 + test/generators/man/Labels.3o | 154 ++ test/generators/man/Labels.A.3o | 19 + test/generators/man/Labels.c.3o | 19 + test/generators/man/Markup.3o | 279 +++ test/generators/man/Module.3o | 178 ++ test/generators/man/Module.M'.3o | 14 + test/generators/man/Module.Mutually.3o | 14 + test/generators/man/Module.Recursive.3o | 14 + test/generators/man/Nested.3o | 89 + test/generators/man/Nested.F.3o | 87 + test/generators/man/Nested.X.3o | 43 + test/generators/man/Nested.inherits.3o | 14 + test/generators/man/Nested.z.3o | 41 + test/generators/man/Ocamlary.3o | 1971 +++++++++++++++++ test/generators/man/Ocamlary.Aliases.3o | 81 + test/generators/man/Ocamlary.Aliases.E.3o | 16 + test/generators/man/Ocamlary.Aliases.Foo.3o | 22 + test/generators/man/Ocamlary.Aliases.Foo.A.3o | 16 + test/generators/man/Ocamlary.Aliases.Foo.B.3o | 16 + test/generators/man/Ocamlary.Aliases.Foo.C.3o | 16 + test/generators/man/Ocamlary.Aliases.Foo.D.3o | 16 + test/generators/man/Ocamlary.Aliases.Foo.E.3o | 16 + test/generators/man/Ocamlary.Aliases.Foo__.3o | 22 + .../generators/man/Ocamlary.Aliases.Foo__A.3o | 16 + .../generators/man/Ocamlary.Aliases.Foo__B.3o | 16 + .../generators/man/Ocamlary.Aliases.Foo__C.3o | 16 + .../generators/man/Ocamlary.Aliases.Foo__D.3o | 16 + .../generators/man/Ocamlary.Aliases.Foo__E.3o | 16 + test/generators/man/Ocamlary.Aliases.P1.3o | 14 + test/generators/man/Ocamlary.Aliases.P1.Y.3o | 16 + test/generators/man/Ocamlary.Aliases.P2.3o | 14 + test/generators/man/Ocamlary.Aliases.Std.3o | 22 + test/generators/man/Ocamlary.Buffer.3o | 17 + test/generators/man/Ocamlary.CanonicalTest.3o | 22 + .../man/Ocamlary.CanonicalTest.Base.3o | 14 + .../man/Ocamlary.CanonicalTest.Base.List.3o | 16 + .../man/Ocamlary.CanonicalTest.Base__.3o | 14 + .../man/Ocamlary.CanonicalTest.Base__List.3o | 16 + .../man/Ocamlary.CanonicalTest.Base__Tests.3o | 33 + .../Ocamlary.CanonicalTest.Base__Tests.C.3o | 16 + .../man/Ocamlary.CanonicalTest.List_modif.3o | 16 + .../man/Ocamlary.CollectionModule.3o | 50 + .../Ocamlary.CollectionModule.InnerModuleA.3o | 48 + ...ectionModule.InnerModuleA.InnerModuleA'.3o | 23 + test/generators/man/Ocamlary.Dep1.3o | 27 + test/generators/man/Ocamlary.Dep1.X.3o | 14 + test/generators/man/Ocamlary.Dep1.X.Y.3o | 14 + test/generators/man/Ocamlary.Dep1.X.Y.c.3o | 14 + test/generators/man/Ocamlary.Dep11.3o | 25 + test/generators/man/Ocamlary.Dep12.3o | 30 + test/generators/man/Ocamlary.Dep13.3o | 14 + test/generators/man/Ocamlary.Dep13.c.3o | 14 + test/generators/man/Ocamlary.Dep2.3o | 41 + test/generators/man/Ocamlary.Dep2.A.3o | 14 + test/generators/man/Ocamlary.Dep3.3o | 14 + test/generators/man/Ocamlary.Dep4.3o | 37 + test/generators/man/Ocamlary.Dep4.X.3o | 14 + test/generators/man/Ocamlary.Dep5.3o | 45 + test/generators/man/Ocamlary.Dep5.Z.3o | 16 + test/generators/man/Ocamlary.Dep6.3o | 43 + test/generators/man/Ocamlary.Dep6.X.3o | 21 + test/generators/man/Ocamlary.Dep6.X.Y.3o | 14 + test/generators/man/Ocamlary.Dep7.3o | 54 + test/generators/man/Ocamlary.Dep7.M.3o | 16 + test/generators/man/Ocamlary.Dep8.3o | 19 + test/generators/man/Ocamlary.Dep9.3o | 30 + .../generators/man/Ocamlary.DoubleInclude1.3o | 14 + .../Ocamlary.DoubleInclude1.DoubleInclude2.3o | 14 + .../generators/man/Ocamlary.DoubleInclude3.3o | 14 + .../Ocamlary.DoubleInclude3.DoubleInclude2.3o | 14 + test/generators/man/Ocamlary.Empty.3o | 21 + test/generators/man/Ocamlary.ExtMod.3o | 21 + test/generators/man/Ocamlary.FunctorTypeOf.3o | 133 ++ .../man/Ocamlary.IncludeInclude1.3o | 19 + test/generators/man/Ocamlary.IncludedA.3o | 14 + test/generators/man/Ocamlary.M.3o | 14 + .../man/Ocamlary.ModuleWithSignature.3o | 17 + .../man/Ocamlary.ModuleWithSignatureAlias.3o | 21 + test/generators/man/Ocamlary.One.3o | 14 + test/generators/man/Ocamlary.Only_a_module.3o | 14 + test/generators/man/Ocamlary.Recollection.3o | 161 ++ .../man/Ocamlary.Recollection.InnerModuleA.3o | 48 + ...Recollection.InnerModuleA.InnerModuleA'.3o | 23 + test/generators/man/Ocamlary.With10.3o | 34 + test/generators/man/Ocamlary.With2.3o | 19 + test/generators/man/Ocamlary.With3.3o | 16 + test/generators/man/Ocamlary.With3.N.3o | 14 + test/generators/man/Ocamlary.With4.3o | 14 + test/generators/man/Ocamlary.With4.N.3o | 14 + test/generators/man/Ocamlary.With5.3o | 21 + test/generators/man/Ocamlary.With5.N.3o | 14 + test/generators/man/Ocamlary.With6.3o | 28 + test/generators/man/Ocamlary.With7.3o | 30 + test/generators/man/Ocamlary.With9.3o | 19 + test/generators/man/Ocamlary.empty_class.3o | 14 + .../man/Ocamlary.one_method_class.3o | 14 + test/generators/man/Ocamlary.param_class.3o | 14 + .../man/Ocamlary.two_method_class.3o | 16 + test/generators/man/Recent.3o | 145 ++ test/generators/man/Recent.X.3o | 20 + test/generators/man/Recent.Z.3o | 14 + test/generators/man/Recent.Z.Y.3o | 14 + test/generators/man/Recent.Z.Y.X.3o | 14 + test/generators/man/Recent_impl.3o | 50 + test/generators/man/Recent_impl.B.3o | 19 + test/generators/man/Recent_impl.Foo.3o | 16 + test/generators/man/Recent_impl.Foo.A.3o | 19 + test/generators/man/Recent_impl.Foo.B.3o | 19 + test/generators/man/Section.3o | 63 + test/generators/man/Stop.3o | 36 + test/generators/man/Stop.N.3o | 14 + test/generators/man/Stop_dead_link_doc.3o | 52 + test/generators/man/Stop_dead_link_doc.Foo.3o | 14 + test/generators/man/Toplevel_comments.3o | 122 + .../generators/man/Toplevel_comments.Alias.3o | 21 + .../man/Toplevel_comments.Include_inline'.3o | 21 + .../man/Toplevel_comments.Include_inline.3o | 17 + test/generators/man/Toplevel_comments.M''.3o | 21 + test/generators/man/Toplevel_comments.M'.3o | 17 + test/generators/man/Toplevel_comments.M.3o | 17 + .../man/Toplevel_comments.Ref_in_synopsis.3o | 21 + test/generators/man/Toplevel_comments.c1.3o | 21 + test/generators/man/Toplevel_comments.c2.3o | 21 + test/generators/man/Type.3o | 257 +++ test/generators/man/Val.3o | 29 + test/generators/man/alias.targets | 3 + test/generators/man/bugs.targets | 1 + test/generators/man/bugs_post_406.targets | 2 + test/generators/man/bugs_pre_410.targets | 1 + test/generators/man/class.targets | 5 + test/generators/man/external.targets | 1 + test/generators/man/functor.targets | 6 + test/generators/man/functor2.targets | 2 + test/generators/man/include.targets | 1 + test/generators/man/include2.targets | 5 + test/generators/man/include_sections.targets | 1 + test/generators/man/interlude.targets | 1 + test/generators/man/labels.targets | 3 + test/generators/man/markup.targets | 1 + test/generators/man/mld.3o | 63 + test/generators/man/module.targets | 4 + test/generators/man/nested.targets | 5 + test/generators/man/ocamlary.targets | 85 + test/generators/man/page-mld.targets | 1 + test/generators/man/recent.targets | 5 + test/generators/man/recent_impl.targets | 5 + test/generators/man/section.targets | 1 + test/generators/man/stop.targets | 2 + .../generators/man/stop_dead_link_doc.targets | 2 + test/generators/man/toplevel_comments.targets | 10 + test/generators/man/type.targets | 1 + test/generators/man/val.targets | 1 + 181 files changed, 7266 insertions(+) create mode 100644 test/generators/man/Alias.3o create mode 100644 test/generators/man/Alias.Foo__X.3o create mode 100644 test/generators/man/Alias.X.3o create mode 100644 test/generators/man/Bugs.3o create mode 100644 test/generators/man/Bugs_post_406.3o create mode 100644 test/generators/man/Bugs_post_406.let_open'.3o create mode 100644 test/generators/man/Bugs_pre_410.3o create mode 100644 test/generators/man/Class.3o create mode 100644 test/generators/man/Class.empty_virtual'.3o create mode 100644 test/generators/man/Class.mutually'.3o create mode 100644 test/generators/man/Class.polymorphic'.3o create mode 100644 test/generators/man/Class.recursive'.3o create mode 100644 test/generators/man/External.3o create mode 100644 test/generators/man/Functor.3o create mode 100644 test/generators/man/Functor.F1.3o create mode 100644 test/generators/man/Functor.F2.3o create mode 100644 test/generators/man/Functor.F3.3o create mode 100644 test/generators/man/Functor.F4.3o create mode 100644 test/generators/man/Functor.F5.3o create mode 100644 test/generators/man/Functor2.3o create mode 100644 test/generators/man/Functor2.X.3o create mode 100644 test/generators/man/Include.3o create mode 100644 test/generators/man/Include2.3o create mode 100644 test/generators/man/Include2.X.3o create mode 100644 test/generators/man/Include2.Y.3o create mode 100644 test/generators/man/Include2.Y_include_doc.3o create mode 100644 test/generators/man/Include2.Y_include_synopsis.3o create mode 100644 test/generators/man/Include_sections.3o create mode 100644 test/generators/man/Interlude.3o create mode 100644 test/generators/man/Labels.3o create mode 100644 test/generators/man/Labels.A.3o create mode 100644 test/generators/man/Labels.c.3o create mode 100644 test/generators/man/Markup.3o create mode 100644 test/generators/man/Module.3o create mode 100644 test/generators/man/Module.M'.3o create mode 100644 test/generators/man/Module.Mutually.3o create mode 100644 test/generators/man/Module.Recursive.3o create mode 100644 test/generators/man/Nested.3o create mode 100644 test/generators/man/Nested.F.3o create mode 100644 test/generators/man/Nested.X.3o create mode 100644 test/generators/man/Nested.inherits.3o create mode 100644 test/generators/man/Nested.z.3o create mode 100644 test/generators/man/Ocamlary.3o create mode 100644 test/generators/man/Ocamlary.Aliases.3o create mode 100644 test/generators/man/Ocamlary.Aliases.E.3o create mode 100644 test/generators/man/Ocamlary.Aliases.Foo.3o create mode 100644 test/generators/man/Ocamlary.Aliases.Foo.A.3o create mode 100644 test/generators/man/Ocamlary.Aliases.Foo.B.3o create mode 100644 test/generators/man/Ocamlary.Aliases.Foo.C.3o create mode 100644 test/generators/man/Ocamlary.Aliases.Foo.D.3o create mode 100644 test/generators/man/Ocamlary.Aliases.Foo.E.3o create mode 100644 test/generators/man/Ocamlary.Aliases.Foo__.3o create mode 100644 test/generators/man/Ocamlary.Aliases.Foo__A.3o create mode 100644 test/generators/man/Ocamlary.Aliases.Foo__B.3o create mode 100644 test/generators/man/Ocamlary.Aliases.Foo__C.3o create mode 100644 test/generators/man/Ocamlary.Aliases.Foo__D.3o create mode 100644 test/generators/man/Ocamlary.Aliases.Foo__E.3o create mode 100644 test/generators/man/Ocamlary.Aliases.P1.3o create mode 100644 test/generators/man/Ocamlary.Aliases.P1.Y.3o create mode 100644 test/generators/man/Ocamlary.Aliases.P2.3o create mode 100644 test/generators/man/Ocamlary.Aliases.Std.3o create mode 100644 test/generators/man/Ocamlary.Buffer.3o create mode 100644 test/generators/man/Ocamlary.CanonicalTest.3o create mode 100644 test/generators/man/Ocamlary.CanonicalTest.Base.3o create mode 100644 test/generators/man/Ocamlary.CanonicalTest.Base.List.3o create mode 100644 test/generators/man/Ocamlary.CanonicalTest.Base__.3o create mode 100644 test/generators/man/Ocamlary.CanonicalTest.Base__List.3o create mode 100644 test/generators/man/Ocamlary.CanonicalTest.Base__Tests.3o create mode 100644 test/generators/man/Ocamlary.CanonicalTest.Base__Tests.C.3o create mode 100644 test/generators/man/Ocamlary.CanonicalTest.List_modif.3o create mode 100644 test/generators/man/Ocamlary.CollectionModule.3o create mode 100644 test/generators/man/Ocamlary.CollectionModule.InnerModuleA.3o create mode 100644 test/generators/man/Ocamlary.CollectionModule.InnerModuleA.InnerModuleA'.3o create mode 100644 test/generators/man/Ocamlary.Dep1.3o create mode 100644 test/generators/man/Ocamlary.Dep1.X.3o create mode 100644 test/generators/man/Ocamlary.Dep1.X.Y.3o create mode 100644 test/generators/man/Ocamlary.Dep1.X.Y.c.3o create mode 100644 test/generators/man/Ocamlary.Dep11.3o create mode 100644 test/generators/man/Ocamlary.Dep12.3o create mode 100644 test/generators/man/Ocamlary.Dep13.3o create mode 100644 test/generators/man/Ocamlary.Dep13.c.3o create mode 100644 test/generators/man/Ocamlary.Dep2.3o create mode 100644 test/generators/man/Ocamlary.Dep2.A.3o create mode 100644 test/generators/man/Ocamlary.Dep3.3o create mode 100644 test/generators/man/Ocamlary.Dep4.3o create mode 100644 test/generators/man/Ocamlary.Dep4.X.3o create mode 100644 test/generators/man/Ocamlary.Dep5.3o create mode 100644 test/generators/man/Ocamlary.Dep5.Z.3o create mode 100644 test/generators/man/Ocamlary.Dep6.3o create mode 100644 test/generators/man/Ocamlary.Dep6.X.3o create mode 100644 test/generators/man/Ocamlary.Dep6.X.Y.3o create mode 100644 test/generators/man/Ocamlary.Dep7.3o create mode 100644 test/generators/man/Ocamlary.Dep7.M.3o create mode 100644 test/generators/man/Ocamlary.Dep8.3o create mode 100644 test/generators/man/Ocamlary.Dep9.3o create mode 100644 test/generators/man/Ocamlary.DoubleInclude1.3o create mode 100644 test/generators/man/Ocamlary.DoubleInclude1.DoubleInclude2.3o create mode 100644 test/generators/man/Ocamlary.DoubleInclude3.3o create mode 100644 test/generators/man/Ocamlary.DoubleInclude3.DoubleInclude2.3o create mode 100644 test/generators/man/Ocamlary.Empty.3o create mode 100644 test/generators/man/Ocamlary.ExtMod.3o create mode 100644 test/generators/man/Ocamlary.FunctorTypeOf.3o create mode 100644 test/generators/man/Ocamlary.IncludeInclude1.3o create mode 100644 test/generators/man/Ocamlary.IncludedA.3o create mode 100644 test/generators/man/Ocamlary.M.3o create mode 100644 test/generators/man/Ocamlary.ModuleWithSignature.3o create mode 100644 test/generators/man/Ocamlary.ModuleWithSignatureAlias.3o create mode 100644 test/generators/man/Ocamlary.One.3o create mode 100644 test/generators/man/Ocamlary.Only_a_module.3o create mode 100644 test/generators/man/Ocamlary.Recollection.3o create mode 100644 test/generators/man/Ocamlary.Recollection.InnerModuleA.3o create mode 100644 test/generators/man/Ocamlary.Recollection.InnerModuleA.InnerModuleA'.3o create mode 100644 test/generators/man/Ocamlary.With10.3o create mode 100644 test/generators/man/Ocamlary.With2.3o create mode 100644 test/generators/man/Ocamlary.With3.3o create mode 100644 test/generators/man/Ocamlary.With3.N.3o create mode 100644 test/generators/man/Ocamlary.With4.3o create mode 100644 test/generators/man/Ocamlary.With4.N.3o create mode 100644 test/generators/man/Ocamlary.With5.3o create mode 100644 test/generators/man/Ocamlary.With5.N.3o create mode 100644 test/generators/man/Ocamlary.With6.3o create mode 100644 test/generators/man/Ocamlary.With7.3o create mode 100644 test/generators/man/Ocamlary.With9.3o create mode 100644 test/generators/man/Ocamlary.empty_class.3o create mode 100644 test/generators/man/Ocamlary.one_method_class.3o create mode 100644 test/generators/man/Ocamlary.param_class.3o create mode 100644 test/generators/man/Ocamlary.two_method_class.3o create mode 100644 test/generators/man/Recent.3o create mode 100644 test/generators/man/Recent.X.3o create mode 100644 test/generators/man/Recent.Z.3o create mode 100644 test/generators/man/Recent.Z.Y.3o create mode 100644 test/generators/man/Recent.Z.Y.X.3o create mode 100644 test/generators/man/Recent_impl.3o create mode 100644 test/generators/man/Recent_impl.B.3o create mode 100644 test/generators/man/Recent_impl.Foo.3o create mode 100644 test/generators/man/Recent_impl.Foo.A.3o create mode 100644 test/generators/man/Recent_impl.Foo.B.3o create mode 100644 test/generators/man/Section.3o create mode 100644 test/generators/man/Stop.3o create mode 100644 test/generators/man/Stop.N.3o create mode 100644 test/generators/man/Stop_dead_link_doc.3o create mode 100644 test/generators/man/Stop_dead_link_doc.Foo.3o create mode 100644 test/generators/man/Toplevel_comments.3o create mode 100644 test/generators/man/Toplevel_comments.Alias.3o create mode 100644 test/generators/man/Toplevel_comments.Include_inline'.3o create mode 100644 test/generators/man/Toplevel_comments.Include_inline.3o create mode 100644 test/generators/man/Toplevel_comments.M''.3o create mode 100644 test/generators/man/Toplevel_comments.M'.3o create mode 100644 test/generators/man/Toplevel_comments.M.3o create mode 100644 test/generators/man/Toplevel_comments.Ref_in_synopsis.3o create mode 100644 test/generators/man/Toplevel_comments.c1.3o create mode 100644 test/generators/man/Toplevel_comments.c2.3o create mode 100644 test/generators/man/Type.3o create mode 100644 test/generators/man/Val.3o create mode 100644 test/generators/man/alias.targets create mode 100644 test/generators/man/bugs.targets create mode 100644 test/generators/man/bugs_post_406.targets create mode 100644 test/generators/man/bugs_pre_410.targets create mode 100644 test/generators/man/class.targets create mode 100644 test/generators/man/external.targets create mode 100644 test/generators/man/functor.targets create mode 100644 test/generators/man/functor2.targets create mode 100644 test/generators/man/include.targets create mode 100644 test/generators/man/include2.targets create mode 100644 test/generators/man/include_sections.targets create mode 100644 test/generators/man/interlude.targets create mode 100644 test/generators/man/labels.targets create mode 100644 test/generators/man/markup.targets create mode 100644 test/generators/man/mld.3o create mode 100644 test/generators/man/module.targets create mode 100644 test/generators/man/nested.targets create mode 100644 test/generators/man/ocamlary.targets create mode 100644 test/generators/man/page-mld.targets create mode 100644 test/generators/man/recent.targets create mode 100644 test/generators/man/recent_impl.targets create mode 100644 test/generators/man/section.targets create mode 100644 test/generators/man/stop.targets create mode 100644 test/generators/man/stop_dead_link_doc.targets create mode 100644 test/generators/man/toplevel_comments.targets create mode 100644 test/generators/man/type.targets create mode 100644 test/generators/man/val.targets diff --git a/test/generators/man/Alias.3o b/test/generators/man/Alias.3o new file mode 100644 index 0000000000..8bb222cbd1 --- /dev/null +++ b/test/generators/man/Alias.3o @@ -0,0 +1,16 @@ + +.TH Alias 3 "" "Odoc" "OCaml Library" +.SH Name +Alias +.SH Synopsis +.sp +.in 2 +\fBModule Alias\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR Foo__X : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR X : \f[CB]sig\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Alias.Foo__X.3o b/test/generators/man/Alias.Foo__X.3o new file mode 100644 index 0000000000..a57076f999 --- /dev/null +++ b/test/generators/man/Alias.Foo__X.3o @@ -0,0 +1,20 @@ + +.TH Foo__X 3 "" "Odoc" "OCaml Library" +.SH Name +Alias\.Foo__X +.SH Synopsis +.sp +.in 2 +\fBModule Alias\.Foo__X\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t = int +.fi +.br +.ti +2 +Module Foo__X documentation\. This should appear in the documentation for the alias to this module 'X' +.nf + diff --git a/test/generators/man/Alias.X.3o b/test/generators/man/Alias.X.3o new file mode 100644 index 0000000000..946f97784e --- /dev/null +++ b/test/generators/man/Alias.X.3o @@ -0,0 +1,20 @@ + +.TH X 3 "" "Odoc" "OCaml Library" +.SH Name +Alias\.X +.SH Synopsis +.sp +.in 2 +\fBModule Alias\.X\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t = int +.fi +.br +.ti +2 +Module Foo__X documentation\. This should appear in the documentation for the alias to this module 'X' +.nf + diff --git a/test/generators/man/Bugs.3o b/test/generators/man/Bugs.3o new file mode 100644 index 0000000000..d2ab4c2662 --- /dev/null +++ b/test/generators/man/Bugs.3o @@ -0,0 +1,26 @@ + +.TH Bugs 3 "" "Odoc" "OCaml Library" +.SH Name +Bugs +.SH Synopsis +.sp +.in 2 +\fBModule Bugs\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR 'a opt = \f[CB]'a\fR option +.sp +\f[CB]val\fR foo : ?bar:\f[CB]'a\fR \f[CB]\->\fR unit \f[CB]\->\fR unit +.fi +.br +.ti +2 +Triggers an assertion failure when +.UR https://github.com/ocaml/odoc/issues/101 +https://github\.com/ocaml/odoc/issues/101 +.UE + is not fixed\. +.nf + diff --git a/test/generators/man/Bugs_post_406.3o b/test/generators/man/Bugs_post_406.3o new file mode 100644 index 0000000000..4f2dd8ad96 --- /dev/null +++ b/test/generators/man/Bugs_post_406.3o @@ -0,0 +1,19 @@ + +.TH Bugs_post_406 3 "" "Odoc" "OCaml Library" +.SH Name +Bugs_post_406 +.SH Synopsis +.sp +.in 2 +\fBModule Bugs_post_406\fR +.in +.sp +.fi +Let-open in class types, https://github\.com/ocaml/odoc/issues/543 This was added to the language in 4\.06 +.nf +.SH Documentation +.sp +.nf +\f[CB]class\fR \f[CB]type\fR let_open = \f[CB]object\fR \f[CB]end\fR +.sp +\f[CB]class\fR let_open' : \f[CB]object\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Bugs_post_406.let_open'.3o b/test/generators/man/Bugs_post_406.let_open'.3o new file mode 100644 index 0000000000..4076c082b2 --- /dev/null +++ b/test/generators/man/Bugs_post_406.let_open'.3o @@ -0,0 +1,14 @@ + +.TH let_open' 3 "" "Odoc" "OCaml Library" +.SH Name +Bugs_post_406\.let_open' +.SH Synopsis +.sp +.in 2 +\fBClass Bugs_post_406\.let_open'\fR +.in +.sp +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Bugs_pre_410.3o b/test/generators/man/Bugs_pre_410.3o new file mode 100644 index 0000000000..5178ac1437 --- /dev/null +++ b/test/generators/man/Bugs_pre_410.3o @@ -0,0 +1,26 @@ + +.TH Bugs_pre_410 3 "" "Odoc" "OCaml Library" +.SH Name +Bugs_pre_410 +.SH Synopsis +.sp +.in 2 +\fBModule Bugs_pre_410\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR 'a opt' = int option +.sp +\f[CB]val\fR foo' : ?bar:\f[CB]'a\fR \f[CB]\->\fR unit \f[CB]\->\fR unit +.fi +.br +.ti +2 +Similar to Bugs, but the printed type of ~bar should be int, not 'a\. This probably requires fixing in the compiler\. See +.UR https://github.com/ocaml/odoc/pull/230#issuecomment-433226807 +https://github\.com/ocaml/odoc/pull/230#issuecomment-433226807 +.UE +\. +.nf + diff --git a/test/generators/man/Class.3o b/test/generators/man/Class.3o new file mode 100644 index 0000000000..ecf092eda9 --- /dev/null +++ b/test/generators/man/Class.3o @@ -0,0 +1,30 @@ + +.TH Class 3 "" "Odoc" "OCaml Library" +.SH Name +Class +.SH Synopsis +.sp +.in 2 +\fBModule Class\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]class\fR \f[CB]type\fR empty = \f[CB]object\fR \f[CB]end\fR +.sp +\f[CB]class\fR \f[CB]type\fR mutually = \f[CB]object\fR \f[CB]end\fR +.sp +\f[CB]class\fR \f[CB]type\fR recursive = \f[CB]object\fR \f[CB]end\fR +.sp +\f[CB]class\fR mutually' : mutually +.sp +\f[CB]class\fR recursive' : recursive +.sp +\f[CB]class\fR \f[CB]type\fR \f[CB]virtual\fR empty_virtual = \f[CB]object\fR \f[CB]end\fR +.sp +\f[CB]class\fR \f[CB]virtual\fR empty_virtual' : empty +.sp +\f[CB]class\fR \f[CB]type\fR 'a polymorphic = \f[CB]object\fR \f[CB]end\fR +.sp +\f[CB]class\fR 'a polymorphic' : \f[CB]'a\fR polymorphic diff --git a/test/generators/man/Class.empty_virtual'.3o b/test/generators/man/Class.empty_virtual'.3o new file mode 100644 index 0000000000..7ac768aebc --- /dev/null +++ b/test/generators/man/Class.empty_virtual'.3o @@ -0,0 +1,14 @@ + +.TH empty_virtual' 3 "" "Odoc" "OCaml Library" +.SH Name +Class\.empty_virtual' +.SH Synopsis +.sp +.in 2 +\fBClass Class\.empty_virtual'\fR +.in +.sp +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Class.mutually'.3o b/test/generators/man/Class.mutually'.3o new file mode 100644 index 0000000000..73bb61fef0 --- /dev/null +++ b/test/generators/man/Class.mutually'.3o @@ -0,0 +1,14 @@ + +.TH mutually' 3 "" "Odoc" "OCaml Library" +.SH Name +Class\.mutually' +.SH Synopsis +.sp +.in 2 +\fBClass Class\.mutually'\fR +.in +.sp +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Class.polymorphic'.3o b/test/generators/man/Class.polymorphic'.3o new file mode 100644 index 0000000000..2920d35c0e --- /dev/null +++ b/test/generators/man/Class.polymorphic'.3o @@ -0,0 +1,14 @@ + +.TH polymorphic' 3 "" "Odoc" "OCaml Library" +.SH Name +Class\.polymorphic' +.SH Synopsis +.sp +.in 2 +\fBClass Class\.polymorphic'\fR +.in +.sp +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Class.recursive'.3o b/test/generators/man/Class.recursive'.3o new file mode 100644 index 0000000000..13c8d15819 --- /dev/null +++ b/test/generators/man/Class.recursive'.3o @@ -0,0 +1,14 @@ + +.TH recursive' 3 "" "Odoc" "OCaml Library" +.SH Name +Class\.recursive' +.SH Synopsis +.sp +.in 2 +\fBClass Class\.recursive'\fR +.in +.sp +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/External.3o b/test/generators/man/External.3o new file mode 100644 index 0000000000..c5c66224a7 --- /dev/null +++ b/test/generators/man/External.3o @@ -0,0 +1,20 @@ + +.TH External 3 "" "Odoc" "OCaml Library" +.SH Name +External +.SH Synopsis +.sp +.in 2 +\fBModule External\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]val\fR foo : unit \f[CB]\->\fR unit +.fi +.br +.ti +2 +Foo bar\. +.nf + diff --git a/test/generators/man/Functor.3o b/test/generators/man/Functor.3o new file mode 100644 index 0000000000..6770412e3c --- /dev/null +++ b/test/generators/man/Functor.3o @@ -0,0 +1,53 @@ + +.TH Functor 3 "" "Odoc" "OCaml Library" +.SH Name +Functor +.SH Synopsis +.sp +.in 2 +\fBModule Functor\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR S1 = \f[CB]sig\fR +.br +.ti +2 +.sp +.ti +2 +\fB1\.1 Parameters\fR +.sp +.ti +2 +\f[CB]module\fR _ : \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR t +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 +\fB1\.2 Signature\fR +.sp +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.sp +\f[CB]module\fR F1 (Arg : S) : S +.sp +\f[CB]module\fR F2 (Arg : S) : S \f[CB]with\fR \f[CB]type\fR t = Arg\.t +.sp +\f[CB]module\fR F3 (Arg : S) : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR F4 (Arg : S) : S +.sp +\f[CB]module\fR F5 () : S diff --git a/test/generators/man/Functor.F1.3o b/test/generators/man/Functor.F1.3o new file mode 100644 index 0000000000..0444d4e749 --- /dev/null +++ b/test/generators/man/Functor.F1.3o @@ -0,0 +1,30 @@ + +.TH F1 3 "" "Odoc" "OCaml Library" +.SH Name +Functor\.F1 +.SH Synopsis +.sp +.in 2 +\fBModule Functor\.F1\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Parameters\fR +.in +.sp +\f[CB]module\fR Arg : \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.sp +.in 3 +\fB2 Signature\fR +.in +.sp +\f[CB]type\fR t diff --git a/test/generators/man/Functor.F2.3o b/test/generators/man/Functor.F2.3o new file mode 100644 index 0000000000..2d36a90b66 --- /dev/null +++ b/test/generators/man/Functor.F2.3o @@ -0,0 +1,30 @@ + +.TH F2 3 "" "Odoc" "OCaml Library" +.SH Name +Functor\.F2 +.SH Synopsis +.sp +.in 2 +\fBModule Functor\.F2\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Parameters\fR +.in +.sp +\f[CB]module\fR Arg : \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.sp +.in 3 +\fB2 Signature\fR +.in +.sp +\f[CB]type\fR t = Arg\.t diff --git a/test/generators/man/Functor.F3.3o b/test/generators/man/Functor.F3.3o new file mode 100644 index 0000000000..b8b29a46f0 --- /dev/null +++ b/test/generators/man/Functor.F3.3o @@ -0,0 +1,30 @@ + +.TH F3 3 "" "Odoc" "OCaml Library" +.SH Name +Functor\.F3 +.SH Synopsis +.sp +.in 2 +\fBModule Functor\.F3\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Parameters\fR +.in +.sp +\f[CB]module\fR Arg : \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.sp +.in 3 +\fB2 Signature\fR +.in +.sp +\f[CB]type\fR t = Arg\.t diff --git a/test/generators/man/Functor.F4.3o b/test/generators/man/Functor.F4.3o new file mode 100644 index 0000000000..f4206a3e53 --- /dev/null +++ b/test/generators/man/Functor.F4.3o @@ -0,0 +1,30 @@ + +.TH F4 3 "" "Odoc" "OCaml Library" +.SH Name +Functor\.F4 +.SH Synopsis +.sp +.in 2 +\fBModule Functor\.F4\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Parameters\fR +.in +.sp +\f[CB]module\fR Arg : \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.sp +.in 3 +\fB2 Signature\fR +.in +.sp +\f[CB]type\fR t diff --git a/test/generators/man/Functor.F5.3o b/test/generators/man/Functor.F5.3o new file mode 100644 index 0000000000..669cc50074 --- /dev/null +++ b/test/generators/man/Functor.F5.3o @@ -0,0 +1,23 @@ + +.TH F5 3 "" "Odoc" "OCaml Library" +.SH Name +Functor\.F5 +.SH Synopsis +.sp +.in 2 +\fBModule Functor\.F5\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Parameters\fR +.in +.sp +.in 3 +\fB2 Signature\fR +.in +.sp +\f[CB]type\fR t diff --git a/test/generators/man/Functor2.3o b/test/generators/man/Functor2.3o new file mode 100644 index 0000000000..ba626bd8bc --- /dev/null +++ b/test/generators/man/Functor2.3o @@ -0,0 +1,60 @@ + +.TH Functor2 3 "" "Odoc" "OCaml Library" +.SH Name +Functor2 +.SH Synopsis +.sp +.in 2 +\fBModule Functor2\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.sp +\f[CB]module\fR X (Y : S) (Z : S) : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR XF = \f[CB]sig\fR +.br +.ti +2 +.sp +.ti +2 +\fB1\.1 Parameters\fR +.sp +.ti +2 +\f[CB]module\fR Y : \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR t +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 +\f[CB]module\fR Z : \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR t +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 +\fB1\.2 Signature\fR +.sp +.ti +2 +\f[CB]type\fR y_t = Y\.t +.sp +.ti +2 +\f[CB]type\fR z_t = Z\.t +.sp +.ti +2 +\f[CB]type\fR x_t = y_t +.br +\f[CB]end\fR diff --git a/test/generators/man/Functor2.X.3o b/test/generators/man/Functor2.X.3o new file mode 100644 index 0000000000..dcc00560b3 --- /dev/null +++ b/test/generators/man/Functor2.X.3o @@ -0,0 +1,41 @@ + +.TH X 3 "" "Odoc" "OCaml Library" +.SH Name +Functor2\.X +.SH Synopsis +.sp +.in 2 +\fBModule Functor2\.X\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Parameters\fR +.in +.sp +\f[CB]module\fR Y : \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.sp +\f[CB]module\fR Z : \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.sp +.in 3 +\fB2 Signature\fR +.in +.sp +\f[CB]type\fR y_t = Y\.t +.sp +\f[CB]type\fR z_t = Z\.t +.sp +\f[CB]type\fR x_t = y_t diff --git a/test/generators/man/Include.3o b/test/generators/man/Include.3o new file mode 100644 index 0000000000..36eb8ac9d7 --- /dev/null +++ b/test/generators/man/Include.3o @@ -0,0 +1,71 @@ + +.TH Include 3 "" "Odoc" "OCaml Library" +.SH Name +Include +.SH Synopsis +.sp +.in 2 +\fBModule Include\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR Not_inlined = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.sp +\f[CB]type\fR t +.sp +\f[CB]module\fR \f[CB]type\fR Inlined = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR u +.br +\f[CB]end\fR +.sp +\f[CB]type\fR u +.sp +\f[CB]module\fR \f[CB]type\fR Not_inlined_and_closed = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR v +.br +\f[CB]end\fR +.sp +\f[CB]include\fR Not_inlined_and_closed +.sp +\f[CB]module\fR \f[CB]type\fR Not_inlined_and_opened = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR w +.br +\f[CB]end\fR +.sp +\f[CB]type\fR w +.sp +\f[CB]module\fR \f[CB]type\fR Inherent_Module = \f[CB]sig\fR +.br +.ti +2 +\f[CB]val\fR a : t +.br +\f[CB]end\fR +.sp +\f[CB]val\fR a : t +.sp +\f[CB]module\fR \f[CB]type\fR Dorminant_Module = \f[CB]sig\fR +.br +.ti +2 +\f[CB]val\fR a : t +.sp +.ti +2 +\f[CB]val\fR a : u +.br +\f[CB]end\fR +.sp +\f[CB]val\fR a : t +.sp +\f[CB]val\fR a : u diff --git a/test/generators/man/Include2.3o b/test/generators/man/Include2.3o new file mode 100644 index 0000000000..061e07b196 --- /dev/null +++ b/test/generators/man/Include2.3o @@ -0,0 +1,41 @@ + +.TH Include2 3 "" "Odoc" "OCaml Library" +.SH Name +Include2 +.SH Synopsis +.sp +.in 2 +\fBModule Include2\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR X : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +Comment about X that should not appear when including X below\. +.nf +.sp +.fi +Comment about X that should not appear when including X below\. +.nf +.sp +\f[CB]type\fR t = int +.sp +\f[CB]module\fR Y : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +Top-comment of Y\. +.nf +.sp +\f[CB]module\fR Y_include_synopsis : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +The include Y below should have the synopsis from Y's top-comment attached to it\. +.nf +.sp +\f[CB]module\fR Y_include_doc : \f[CB]sig\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Include2.X.3o b/test/generators/man/Include2.X.3o new file mode 100644 index 0000000000..9fc3ca3b9a --- /dev/null +++ b/test/generators/man/Include2.X.3o @@ -0,0 +1,17 @@ + +.TH X 3 "" "Odoc" "OCaml Library" +.SH Name +Include2\.X +.SH Synopsis +.sp +.in 2 +\fBModule Include2\.X\fR +.in +.sp +.fi +Comment about X that should not appear when including X below\. +.nf +.SH Documentation +.sp +.nf +\f[CB]type\fR t = int diff --git a/test/generators/man/Include2.Y.3o b/test/generators/man/Include2.Y.3o new file mode 100644 index 0000000000..fd003da4d4 --- /dev/null +++ b/test/generators/man/Include2.Y.3o @@ -0,0 +1,17 @@ + +.TH Y 3 "" "Odoc" "OCaml Library" +.SH Name +Include2\.Y +.SH Synopsis +.sp +.in 2 +\fBModule Include2\.Y\fR +.in +.sp +.fi +Top-comment of Y\. +.nf +.SH Documentation +.sp +.nf +\f[CB]type\fR t diff --git a/test/generators/man/Include2.Y_include_doc.3o b/test/generators/man/Include2.Y_include_doc.3o new file mode 100644 index 0000000000..0b63f106a7 --- /dev/null +++ b/test/generators/man/Include2.Y_include_doc.3o @@ -0,0 +1,14 @@ + +.TH Y_include_doc 3 "" "Odoc" "OCaml Library" +.SH Name +Include2\.Y_include_doc +.SH Synopsis +.sp +.in 2 +\fBModule Include2\.Y_include_doc\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t = Y\.t diff --git a/test/generators/man/Include2.Y_include_synopsis.3o b/test/generators/man/Include2.Y_include_synopsis.3o new file mode 100644 index 0000000000..637f41f508 --- /dev/null +++ b/test/generators/man/Include2.Y_include_synopsis.3o @@ -0,0 +1,17 @@ + +.TH Y_include_synopsis 3 "" "Odoc" "OCaml Library" +.SH Name +Include2\.Y_include_synopsis +.SH Synopsis +.sp +.in 2 +\fBModule Include2\.Y_include_synopsis\fR +.in +.sp +.fi +The include Y below should have the synopsis from Y's top-comment attached to it\. +.nf +.SH Documentation +.sp +.nf +\f[CB]type\fR t = Y\.t diff --git a/test/generators/man/Include_sections.3o b/test/generators/man/Include_sections.3o new file mode 100644 index 0000000000..4ddfa90e4f --- /dev/null +++ b/test/generators/man/Include_sections.3o @@ -0,0 +1,204 @@ + +.TH Include_sections 3 "" "Odoc" "OCaml Library" +.SH Name +Include_sections +.SH Synopsis +.sp +.in 2 +\fBModule Include_sections\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR Something = \f[CB]sig\fR +.br +.ti +2 +\f[CB]val\fR something : unit +.sp +.ti +2 +\fB1\.1 Something 1\fR +.sp +.ti +2 +.fi +foo +.nf +.sp +.ti +2 +\f[CB]val\fR foo : unit +.sp +.ti +2 +\fB1\.1\.1 Something 2\fR +.sp +.ti +2 +\f[CB]val\fR bar : unit +.fi +.br +.ti +4 +foo bar +.nf +.sp +.ti +2 +\fB1\.2 Something 1-bis\fR +.sp +.ti +2 +.fi +Some text\. +.nf + +.br +\f[CB]end\fR +.fi +.br +.ti +2 +A module type\. +.nf +.sp +.fi +Let's include \f[CI]Something\fR once +.nf +.sp +\f[CB]val\fR something : unit +.sp +.in 3 +\fB2 Something 1\fR +.in +.sp +.fi +foo +.nf +.sp +\f[CB]val\fR foo : unit +.sp +.in 4 +\fB2\.1 Something 2\fR +.in +.sp +\f[CB]val\fR bar : unit +.fi +.br +.ti +2 +foo bar +.nf +.sp +.in 3 +\fB3 Something 1-bis\fR +.in +.sp +.fi +Some text\. +.nf +.sp +.in 3 +\fB4 Second include\fR +.in +.sp +.fi +Let's include \f[CI]Something\fR a second time: the heading level should be shift here\. +.nf +.sp +\f[CB]val\fR something : unit +.sp +.in 4 +\fB4\.1 Something 1\fR +.in +.sp +.fi +foo +.nf +.sp +\f[CB]val\fR foo : unit +.sp +.in 5 +\fB4\.1\.1 Something 2\fR +.in +.sp +\f[CB]val\fR bar : unit +.fi +.br +.ti +2 +foo bar +.nf +.sp +.in 4 +\fB4\.2 Something 1-bis\fR +.in +.sp +.fi +Some text\. +.nf +.sp +.in 4 +\fB4\.3 Third include\fR +.in +.sp +.fi +Shifted some more\. +.nf +.sp +\f[CB]val\fR something : unit +.sp +.in 5 +\fB4\.3\.1 Something 1\fR +.in +.sp +.fi +foo +.nf +.sp +\f[CB]val\fR foo : unit +.sp +.in 6 +\fBSomething 2\fR +.in +.sp +\f[CB]val\fR bar : unit +.fi +.br +.ti +2 +foo bar +.nf +.sp +.in 5 +\fB4\.3\.2 Something 1-bis\fR +.in +.sp +.fi +Some text\. +.nf +.sp +.fi +And let's include it again, but without inlining it this time: the ToC shouldn't grow\. +.nf +.sp +\f[CB]val\fR something : unit +.sp +.in 5 +\fB4\.3\.3 Something 1\fR +.in +.sp +.fi +foo +.nf +.sp +\f[CB]val\fR foo : unit +.sp +.in 6 +\fBSomething 2\fR +.in +.sp +\f[CB]val\fR bar : unit +.fi +.br +.ti +2 +foo bar +.nf +.sp +.in 5 +\fB4\.3\.4 Something 1-bis\fR +.in +.sp +.fi +Some text\. +.nf + diff --git a/test/generators/man/Interlude.3o b/test/generators/man/Interlude.3o new file mode 100644 index 0000000000..e71da5a0a0 --- /dev/null +++ b/test/generators/man/Interlude.3o @@ -0,0 +1,54 @@ + +.TH Interlude 3 "" "Odoc" "OCaml Library" +.SH Name +Interlude +.SH Synopsis +.sp +.in 2 +\fBModule Interlude\fR +.in +.sp +.fi +This is the comment associated to the module\. +.nf +.SH Documentation +.sp +.nf +.fi +Some separate stray text at the top of the module\. +.nf +.sp +\f[CB]val\fR foo : unit +.fi +.br +.ti +2 +Foo\. +.nf +.sp +.fi +Some stray text that is not associated with any signature item\. +.sp +It has multiple paragraphs\. +.nf +.sp +.fi +A separate block of stray text, adjacent to the preceding one\. +.nf +.sp +\f[CB]val\fR bar : unit +.fi +.br +.ti +2 +Bar\. +.nf +.sp +\f[CB]val\fR multiple : unit +.sp +\f[CB]val\fR signature : unit +.sp +\f[CB]val\fR items : unit +.sp +.fi +Stray text at the bottom of the module\. +.nf + diff --git a/test/generators/man/Labels.3o b/test/generators/man/Labels.3o new file mode 100644 index 0000000000..8b5f3fc756 --- /dev/null +++ b/test/generators/man/Labels.3o @@ -0,0 +1,154 @@ + +.TH Labels 3 "" "Odoc" "OCaml Library" +.SH Name +Labels +.SH Synopsis +.sp +.in 2 +\fBModule Labels\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Attached to unit\fR +.in +.sp +.in 3 +\fB2 Attached to nothing\fR +.in +.sp +\f[CB]module\fR A : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]type\fR t +.fi +.br +.ti +2 +Attached to type +.nf +.sp +\f[CB]val\fR f : t +.fi +.br +.ti +2 +Attached to value +.nf +.sp +\f[CB]val\fR e : unit \f[CB]\->\fR t +.fi +.br +.ti +2 +Attached to external +.nf +.sp +\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR +.br +.ti +2 +.sp +.ti +2 +\fB2\.1\.1 Attached to module type\fR +.sp +.ti +2 + +.br +\f[CB]end\fR +.sp +\f[CB]class\fR c : \f[CB]object\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]class\fR \f[CB]type\fR cs = \f[CB]object\fR +.br +.ti +2 +.sp +.ti +2 +\fB2\.1\.2 Attached to class type\fR +.sp +.ti +2 + +.br +\f[CB]end\fR +.sp +\f[CB]exception\fR \f[CB]E\fR +.fi +.br +.ti +2 +Attached to exception +.nf +.sp +\f[CB]type\fR x = \.\. +.sp +\f[CB]type\fR x += +.br +.ti +2 +| \f[CB]X\fR +.br +.fi +.br +.ti +2 +Attached to extension +.nf +.sp +\f[CB]module\fR S := A +.fi +.br +.ti +2 +Attached to module subst +.nf +.sp +\f[CB]type\fR s := t +.fi +.br +.ti +2 +Attached to type subst +.nf +.sp +\f[CB]type\fR u = +.br +.ti +2 +| \f[CB]A'\fR +.br +.ti +4 +(* Attached to constructor *) +.br +.sp +\f[CB]type\fR v = { +.br +.ti +2 +f : t; +.br +.ti +4 +(* Attached to field *) +.br +} +.sp +.fi +Testing that labels can be referenced +.sp +\(bu \f[CI]Attached to unit\fR +.br +\(bu \f[CI]Attached to nothing\fR +.br +\(bu \f[CI]Attached to module\fR +.br +\(bu \f[CI]Attached to type\fR +.br +\(bu \f[CI]Attached to value\fR +.br +\(bu \f[CI]Attached to class\fR +.br +\(bu \f[CI]Attached to class type\fR +.br +\(bu \f[CI]Attached to exception\fR +.br +\(bu \f[CI]Attached to extension\fR +.br +\(bu \f[CI]Attached to module subst\fR +.br +\(bu \f[CI]Attached to type subst\fR +.br +\(bu \f[CI]Attached to constructor\fR +.br +\(bu \f[CI]Attached to field\fR +.nf + diff --git a/test/generators/man/Labels.A.3o b/test/generators/man/Labels.A.3o new file mode 100644 index 0000000000..732c835de2 --- /dev/null +++ b/test/generators/man/Labels.A.3o @@ -0,0 +1,19 @@ + +.TH A 3 "" "Odoc" "OCaml Library" +.SH Name +Labels\.A +.SH Synopsis +.sp +.in 2 +\fBModule Labels\.A\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Attached to module\fR +.in +.sp + diff --git a/test/generators/man/Labels.c.3o b/test/generators/man/Labels.c.3o new file mode 100644 index 0000000000..ce5297a550 --- /dev/null +++ b/test/generators/man/Labels.c.3o @@ -0,0 +1,19 @@ + +.TH c 3 "" "Odoc" "OCaml Library" +.SH Name +Labels\.c +.SH Synopsis +.sp +.in 2 +\fBClass Labels\.c\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Attached to class\fR +.in +.sp + diff --git a/test/generators/man/Markup.3o b/test/generators/man/Markup.3o new file mode 100644 index 0000000000..73a6455563 --- /dev/null +++ b/test/generators/man/Markup.3o @@ -0,0 +1,279 @@ + +.TH Markup 3 "" "Odoc" "OCaml Library" +.SH Name +Markup +.SH Synopsis +.sp +.in 2 +\fBModule Markup\fR +.in +.sp +.fi +Here, we test the rendering of comment markup\. +.nf +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Sections\fR +.in +.sp +.fi +Let's get these done first, because sections will be used to break up the rest of this test\. +.sp +Besides the section heading above, there are also +.nf +.sp +.in 4 +\fB1\.1 Subsection headings\fR +.in +.sp +.fi +and +.nf +.sp +.in 5 +\fB1\.1\.1 Sub-subsection headings\fR +.in +.sp +.fi +but odoc has banned deeper headings\. There are also title headings, but they are only allowed in mld files\. +.nf +.sp +.in 5 +\fB1\.1\.2 Anchors\fR +.in +.sp +.fi +Sections can have attached \f[CI]Anchors\fR, and it is possible to \f[CI]link\fR to them\. Links to section headers should not be set in source code style\. +.nf +.sp +.in 6 +\fBParagraph\fR +.in +.sp +.fi +Individual paragraphs can have a heading\. +.nf +.sp +.in 7 +\fBSubparagraph\fR +.in +.sp +.fi +Parts of a longer paragraph that can be considered alone can also have headings\. +.nf +.sp +.in 3 +\fB2 Styling\fR +.in +.sp +.fi +This paragraph has some styled elements: \fBbold\fR and \fIitalic\fR, \fB\fIbold italic\fB\fR, emphasis, emphasis within emphasis, \fB\fIbold italic\fB\fR, superscript, subscript\. The line spacing should be enough for superscripts and subscripts not to look odd\. +.sp +Note: \fIIn italics emphasis is rendered as normal text while emphasis in emphasis is rendered in italics\.\fR \fIIt also work the same in +.UR # +links in italics with emphasis in emphasis\. +.UE +\fR +.sp +code is a different kind of markup that doesn't allow nested markup\. +.sp +It's possible for two markup elements to appear \fBnext\fR \fIto\fR each other and have a space, and appear \fBnext\fR\fIto\fR each other with no space\. It doesn't matter \fBhow\fR \fImuch\fR space it was in the source: in this sentence, it was two space characters\. And in this one, there is \fBa\fR \fInewline\fR\. +.sp +This is also true between non-code markup and code\. +.sp +Code can appear \fBinside other markup\fR\. Its display shouldn't be affected\. +.nf +.sp +.in 3 +\fB3 Links and references\fR +.in +.sp +.fi +This is a +.UR # +link +.UE +\. It sends you to the top of this page\. Links can have markup inside them: +.UR # +\fBbold\fR +.UE +, +.UR # +\fIitalics\fR +.UE +, +.UR # +emphasis +.UE +, +.UR # +superscript +.UE +, +.UR # +subscript +.UE +, and +.UR # +code +.UE +\. Links can also be nested +.UR # +inside +.UE + markup\. Links cannot be nested inside each other\. This link has no replacement text: +.UR # +# +.UE +\. The text is filled in by odoc\. This is a shorthand link: +.UR # +# +.UE +\. The text is also filled in by odoc in this case\. +.sp +This is a reference to \f[CI]foo\fR\. References can have replacement text: \f[CI]the value foo\fR\. Except for the special lookup support, references are pretty much just like links\. The replacement text can have nested styles: \f[CI]\fBbold\f[CI]\fR, \f[CI]\fIitalic\f[CI]\fR, \f[CI]emphasis\fR, \f[CI]superscript\fR, \f[CI]subscript\fR, and \f[CI]code\fR\. It's also possible to surround a reference in a style: \fB\f[CI]foo\fB\fR\. References can't be nested inside references, and links and references can't be nested inside each other\. +.nf +.sp +.in 3 +\fB4 Preformatted text\fR +.in +.sp +.fi +This is a code block: +.sp +.EX +let foo = () +(** There are some nested comments in here, but an unpaired comment + terminator would terminate the whole doc surrounding comment\. It's + best to keep code blocks no wider than 72 characters\. *) + +let bar = + ignore foo +.EE +.sp +There are also verbatim blocks: +.sp +.EX +The main difference is these don't get syntax highlighting\. +.EE +.nf +.sp +.in 3 +\fB5 Lists\fR +.in +.sp +.fi +\(bu This is a +.br +\(bu shorthand bulleted list, +.br +\(bu and the paragraphs in each list item support styling\. +.sp +1) This is a +.br +2) shorthand numbered list\. +.sp +\(bu Shorthand list items can span multiple lines, however trying to put two paragraphs into a shorthand list item using a double line break +.sp +just creates a paragraph outside the list\. +.sp +\(bu Similarly, inserting a blank line between two list items +.sp +\(bu creates two separate lists\. +.sp +\(bu To get around this limitation, one +.sp +.ti +2 +can use explicitly-delimited lists\. +.br +\(bu This one is bulleted, +.sp +1) but there is also the numbered variant\. +.sp +\(bu \(bu lists +.br +.ti +2 +\(bu can be nested +.br +.ti +2 +\(bu and can include references +.br +.ti +2 +\(bu \f[CI]foo\fR +.nf +.sp +.in 3 +\fB6 Unicode\fR +.in +.sp +.fi +The parser supports any ASCII-compatible encoding, in particuλar UTF-8\. +.nf +.sp +.in 3 +\fB7 Raw HTML\fR +.in +.sp +.fi +Raw HTML can be as inline elements into sentences\. +.sp +.nf +.sp +.in 3 +\fB8 Modules\fR +.in +.sp +.fi +@X: +.br +@X: +.br +@Y: +.br +@Z: +.nf +.sp +.in 3 +\fB9 Tags\fR +.in +.sp +.fi +Each comment can end with zero or more tags\. Here are some examples: +.sp +@author: antron +.br +@deprecated: a long time ago +.br +@parameter foo: unused +.br +@raises Failure: always +.br +@returns: never +.br +@see +.UR # +# +.UE +: this url +.br +@see foo\.ml: this file +.br +@see Foo: this document +.br +@since: 0 +.br +@before 1\.0: it was in beta +.br +@version: -1 +.nf +.sp +\f[CB]val\fR foo : unit +.fi +.br +.ti +2 +Comments in structure items \fBsupport\fR markup, too\. +.nf + diff --git a/test/generators/man/Module.3o b/test/generators/man/Module.3o new file mode 100644 index 0000000000..8fc9cd5c35 --- /dev/null +++ b/test/generators/man/Module.3o @@ -0,0 +1,178 @@ + +.TH Module 3 "" "Odoc" "OCaml Library" +.SH Name +Module +.SH Synopsis +.sp +.in 2 +\fBModule Module\fR +.in +.sp +.fi +Foo\. +.nf +.SH Documentation +.sp +.nf +\f[CB]val\fR foo : unit +.fi +.br +.ti +2 +The module needs at least one signature item, otherwise a bug causes the compiler to drop the module comment (above)\. See +.UR https://caml.inria.fr/mantis/view.php?id=7701 +https://caml\.inria\.fr/mantis/view\.php?id=7701 +.UE +\. +.nf +.sp +\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.sp +.ti +2 +\f[CB]type\fR u +.sp +.ti +2 +\f[CB]type\fR 'a v +.sp +.ti +2 +\f[CB]type\fR ('a, 'b) w +.sp +.ti +2 +\f[CB]module\fR M : \f[CB]sig\fR \f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR S1 +.sp +\f[CB]module\fR \f[CB]type\fR S2 = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.sp +.ti +2 +\f[CB]type\fR u +.sp +.ti +2 +\f[CB]type\fR 'a v +.sp +.ti +2 +\f[CB]type\fR ('a, 'b) w +.sp +.ti +2 +\f[CB]module\fR M : \f[CB]sig\fR \f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR S3 = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t = int +.sp +.ti +2 +\f[CB]type\fR u = string +.sp +.ti +2 +\f[CB]type\fR 'a v +.sp +.ti +2 +\f[CB]type\fR ('a, 'b) w +.sp +.ti +2 +\f[CB]module\fR M : \f[CB]sig\fR \f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR S4 = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR u +.sp +.ti +2 +\f[CB]type\fR 'a v +.sp +.ti +2 +\f[CB]type\fR ('a, 'b) w +.sp +.ti +2 +\f[CB]module\fR M : \f[CB]sig\fR \f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR S5 = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.sp +.ti +2 +\f[CB]type\fR u +.sp +.ti +2 +\f[CB]type\fR ('a, 'b) w +.sp +.ti +2 +\f[CB]module\fR M : \f[CB]sig\fR \f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]type\fR ('a, 'b) result +.sp +\f[CB]module\fR \f[CB]type\fR S6 = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.sp +.ti +2 +\f[CB]type\fR u +.sp +.ti +2 +\f[CB]type\fR 'a v +.sp +.ti +2 +\f[CB]module\fR M : \f[CB]sig\fR \f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]module\fR M' : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR S7 = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.sp +.ti +2 +\f[CB]type\fR u +.sp +.ti +2 +\f[CB]type\fR 'a v +.sp +.ti +2 +\f[CB]type\fR ('a, 'b) w +.sp +.ti +2 +\f[CB]module\fR M = M' +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR S8 = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.sp +.ti +2 +\f[CB]type\fR u +.sp +.ti +2 +\f[CB]type\fR 'a v +.sp +.ti +2 +\f[CB]type\fR ('a, 'b) w +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR S9 = \f[CB]sig\fR \f[CB]end\fR +.sp +\f[CB]module\fR Mutually : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Recursive : \f[CB]sig\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Module.M'.3o b/test/generators/man/Module.M'.3o new file mode 100644 index 0000000000..e250e06d31 --- /dev/null +++ b/test/generators/man/Module.M'.3o @@ -0,0 +1,14 @@ + +.TH M' 3 "" "Odoc" "OCaml Library" +.SH Name +Module\.M' +.SH Synopsis +.sp +.in 2 +\fBModule Module\.M'\fR +.in +.sp +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Module.Mutually.3o b/test/generators/man/Module.Mutually.3o new file mode 100644 index 0000000000..87b53a2a76 --- /dev/null +++ b/test/generators/man/Module.Mutually.3o @@ -0,0 +1,14 @@ + +.TH Mutually 3 "" "Odoc" "OCaml Library" +.SH Name +Module\.Mutually +.SH Synopsis +.sp +.in 2 +\fBModule Module\.Mutually\fR +.in +.sp +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Module.Recursive.3o b/test/generators/man/Module.Recursive.3o new file mode 100644 index 0000000000..dba9a086f5 --- /dev/null +++ b/test/generators/man/Module.Recursive.3o @@ -0,0 +1,14 @@ + +.TH Recursive 3 "" "Odoc" "OCaml Library" +.SH Name +Module\.Recursive +.SH Synopsis +.sp +.in 2 +\fBModule Module\.Recursive\fR +.in +.sp +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Nested.3o b/test/generators/man/Nested.3o new file mode 100644 index 0000000000..244545e49f --- /dev/null +++ b/test/generators/man/Nested.3o @@ -0,0 +1,89 @@ + +.TH Nested 3 "" "Odoc" "OCaml Library" +.SH Name +Nested +.SH Synopsis +.sp +.in 2 +\fBModule Nested\fR +.in +.sp +.fi +This comment needs to be here before #235 is fixed\. +.nf +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Module\fR +.in +.sp +\f[CB]module\fR X : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +This is module X\. +.nf +.sp +.in 3 +\fB2 Module type\fR +.in +.sp +\f[CB]module\fR \f[CB]type\fR Y = \f[CB]sig\fR +.br +.ti +2 +.sp +.ti +2 +\fB2\.1\.1 Type\fR +.sp +.ti +2 +\f[CB]type\fR t +.fi +.br +.ti +4 +Some type\. +.nf +.sp +.ti +2 +\fB2\.1\.2 Values\fR +.sp +.ti +2 +\f[CB]val\fR y : t +.fi +.br +.ti +4 +The value of y\. +.nf + +.br +\f[CB]end\fR +.fi +.br +.ti +2 +This is module type Y\. +.nf +.sp +.in 3 +\fB3 Functor\fR +.in +.sp +\f[CB]module\fR F (Arg1 : Y) (Arg2 : \f[CB]sig\fR \.\.\. \f[CB]end\fR) : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +This is a functor F\. +.nf +.sp +.in 3 +\fB4 Class\fR +.in +.sp +\f[CB]class\fR \f[CB]virtual\fR z : \f[CB]object\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +This is class z\. +.nf +.sp +\f[CB]class\fR \f[CB]virtual\fR inherits : \f[CB]object\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Nested.F.3o b/test/generators/man/Nested.F.3o new file mode 100644 index 0000000000..89ee60f967 --- /dev/null +++ b/test/generators/man/Nested.F.3o @@ -0,0 +1,87 @@ + +.TH F 3 "" "Odoc" "OCaml Library" +.SH Name +Nested\.F +.SH Synopsis +.sp +.in 2 +\fBModule Nested\.F\fR +.in +.sp +.fi +This is a functor F\. +.nf +.sp +.fi +Some additional comments\. +.nf +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Type\fR +.in +.sp +.in 3 +\fB2 Parameters\fR +.in +.sp +\f[CB]module\fR Arg1 : \f[CB]sig\fR +.br +.ti +2 +.sp +.ti +2 +\fB2\.1\.1 Type\fR +.sp +.ti +2 +\f[CB]type\fR t +.fi +.br +.ti +4 +Some type\. +.nf +.sp +.ti +2 +\fB2\.1\.2 Values\fR +.sp +.ti +2 +\f[CB]val\fR y : t +.fi +.br +.ti +4 +The value of y\. +.nf + +.br +\f[CB]end\fR +.sp +\f[CB]module\fR Arg2 : \f[CB]sig\fR +.br +.ti +2 +.sp +.ti +2 +\fB2\.1\.3 Type\fR +.sp +.ti +2 +\f[CB]type\fR t +.fi +.br +.ti +4 +Some type\. +.nf + +.br +\f[CB]end\fR +.sp +.in 3 +\fB3 Signature\fR +.in +.sp +\f[CB]type\fR t = Arg1\.t * Arg2\.t +.fi +.br +.ti +2 +Some type\. +.nf + diff --git a/test/generators/man/Nested.X.3o b/test/generators/man/Nested.X.3o new file mode 100644 index 0000000000..9a7f25a49a --- /dev/null +++ b/test/generators/man/Nested.X.3o @@ -0,0 +1,43 @@ + +.TH X 3 "" "Odoc" "OCaml Library" +.SH Name +Nested\.X +.SH Synopsis +.sp +.in 2 +\fBModule Nested\.X\fR +.in +.sp +.fi +This is module X\. +.nf +.sp +.fi +Some additional comments\. +.nf +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Type\fR +.in +.sp +\f[CB]type\fR t +.fi +.br +.ti +2 +Some type\. +.nf +.sp +.in 3 +\fB2 Values\fR +.in +.sp +\f[CB]val\fR x : t +.fi +.br +.ti +2 +The value of x\. +.nf + diff --git a/test/generators/man/Nested.inherits.3o b/test/generators/man/Nested.inherits.3o new file mode 100644 index 0000000000..1243b067c4 --- /dev/null +++ b/test/generators/man/Nested.inherits.3o @@ -0,0 +1,14 @@ + +.TH inherits 3 "" "Odoc" "OCaml Library" +.SH Name +Nested\.inherits +.SH Synopsis +.sp +.in 2 +\fBClass Nested\.inherits\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]inherit\fR z diff --git a/test/generators/man/Nested.z.3o b/test/generators/man/Nested.z.3o new file mode 100644 index 0000000000..83a7863702 --- /dev/null +++ b/test/generators/man/Nested.z.3o @@ -0,0 +1,41 @@ + +.TH z 3 "" "Odoc" "OCaml Library" +.SH Name +Nested\.z +.SH Synopsis +.sp +.in 2 +\fBClass Nested\.z\fR +.in +.sp +.fi +This is class z\. +.nf +.sp +.fi +Some additional comments\. +.nf +.SH Documentation +.sp +.nf +\f[CB]val\fR y : int +.fi +.br +.ti +2 +Some value\. +.nf +.sp +\f[CB]val\fR \f[CB]mutable\fR \f[CB]virtual\fR y' : int +.sp +.in 3 +\fB1 Methods\fR +.in +.sp +\f[CB]method\fR z : int +.fi +.br +.ti +2 +Some method\. +.nf +.sp +\f[CB]method\fR \f[CB]private\fR \f[CB]virtual\fR z' : int diff --git a/test/generators/man/Ocamlary.3o b/test/generators/man/Ocamlary.3o new file mode 100644 index 0000000000..e1055d64a7 --- /dev/null +++ b/test/generators/man/Ocamlary.3o @@ -0,0 +1,1971 @@ + +.TH Ocamlary 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\fR +.in +.sp +.fi +This is an \fIinterface\fR with \fBall\fR of the module system features\. This documentation demonstrates: +.nf +.sp +.fi +\(bu comment formatting +.br +\(bu unassociated comments +.br +\(bu documentation sections +.br +\(bu module system documentation including +.sp +.ti +2 +1) submodules +.br +.ti +2 +2) module aliases +.br +.ti +2 +3) module types +.br +.ti +2 +4) module type aliases +.br +.ti +2 +5) modules with signatures +.br +.ti +2 +6) modules with aliased signatures +.nf +.sp +.fi +A numbered list: +.nf +.sp +.fi +1) 3 +.br +2) 2 +.br +3) 1 +.nf +.sp +.fi +David Sheets is the author\. +.nf +.sp +.fi +@author: David Sheets +.nf +.SH Documentation +.sp +.nf +.fi +You may find more information about this HTML documentation renderer at +.UR https://github.com/dsheets/ocamlary +github\.com/dsheets/ocamlary +.UE +\. +.nf +.sp +.fi +This is some verbatim text: +.sp +.EX +verbatim +.EE +.nf +.sp +.fi +This is some verbatim text: +.sp +.EX +[][df[]]}} +.EE +.nf +.sp +.fi +Here is some raw LaTeX: +.nf +.sp +.fi +Here is an index table of Empty modules: +.sp +@\f[CI]Empty\fR: A plain, empty module +.br +@\f[CI]EmptyAlias\fR: A plain module alias of Empty +.nf +.sp +.fi +Here is a table of links to indexes: indexlist +.nf +.sp +.fi +Here is some superscript: x2 +.nf +.sp +.fi +Here is some subscript: x0 +.nf +.sp +.fi +Here are some escaped brackets: { [ @ ] } +.nf +.sp +.fi +Here is some emphasis followed by code\. +.nf +.sp +.fi +An unassociated comment +.nf +.sp +.in 3 +\fB1 Level 1\fR +.in +.sp +.in 4 +\fB1\.1 Level 2\fR +.in +.sp +.in 5 +\fB1\.1\.1 Level 3\fR +.in +.sp +.in 6 +\fBLevel 4\fR +.in +.sp +.in 5 +\fB1\.1\.2 Basic module stuff\fR +.in +.sp +\f[CB]module\fR Empty : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +A plain, empty module +.nf +.sp +\f[CB]module\fR \f[CB]type\fR Empty = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.fi +.br +.ti +2 +An ambiguous, misnamed module type +.nf +.sp +\f[CB]module\fR \f[CB]type\fR MissingComment = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.fi +.br +.ti +2 +An ambiguous, misnamed module type +.nf +.sp +.in 3 +\fB2 Section 9000\fR +.in +.sp +\f[CB]module\fR EmptyAlias = Empty +.fi +.br +.ti +2 +A plain module alias of Empty +.nf +.sp +.in 5 +\fB2\.1\.1 EmptySig\fR +.in +.sp +\f[CB]module\fR \f[CB]type\fR EmptySig = \f[CB]sig\fR \f[CB]end\fR +.fi +.br +.ti +2 +A plain, empty module signature +.nf +.sp +\f[CB]module\fR \f[CB]type\fR EmptySigAlias = \f[CB]sig\fR \f[CB]end\fR +.fi +.br +.ti +2 +A plain, empty module signature alias of +.nf +.sp +\f[CB]module\fR ModuleWithSignature : EmptySig +.fi +.br +.ti +2 +A plain module of a signature of \f[CI]EmptySig\fR (reference) +.nf +.sp +\f[CB]module\fR ModuleWithSignatureAlias : EmptySigAlias +.fi +.br +.ti +2 +A plain module with an alias signature +.nf +.sp +\f[CB]module\fR One : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR SigForMod = \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR Inner : \f[CB]sig\fR +.br +.ti +4 +\f[CB]module\fR \f[CB]type\fR Empty = \f[CB]sig\fR \f[CB]end\fR +.br +.ti +2 +\f[CB]end\fR +.br +\f[CB]end\fR +.fi +.br +.ti +2 +There's a signature in a module in this signature\. +.nf +.sp +\f[CB]module\fR \f[CB]type\fR SuperSig = \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR \f[CB]type\fR SubSigA = \f[CB]sig\fR +.br +.ti +4 +.sp +.ti +4 +\fBA Labeled Section Header Inside of a Signature\fR +.sp +.ti +4 +\f[CB]type\fR t +.sp +.ti +4 +\f[CB]module\fR SubSigAMod : \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR sub_sig_a_mod +.br +.ti +4 +\f[CB]end\fR +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 +\f[CB]module\fR \f[CB]type\fR SubSigB = \f[CB]sig\fR +.br +.ti +4 +.sp +.ti +4 +\fBAnother Labeled Section Header Inside of a Signature\fR +.sp +.ti +4 +\f[CB]type\fR t +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 +\f[CB]module\fR \f[CB]type\fR EmptySig = \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR not_actually_empty +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 +\f[CB]module\fR \f[CB]type\fR One = \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR two +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 +\f[CB]module\fR \f[CB]type\fR SuperSig = \f[CB]sig\fR \f[CB]end\fR +.br +\f[CB]end\fR +.sp +.fi +For a good time, see SuperSig\.SubSigA\.subSig or SuperSig\.SubSigB\.subSig or \f[CI]SuperSig\.EmptySig\fR\. Section \f[CI]Section 9000\fR is also interesting\. \f[CI]EmptySig\fR is the section and \f[CI]EmptySig\fR is the module signature\. +.nf +.sp +\f[CB]module\fR Buffer : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +Buffer\.t +.nf +.sp +.fi +Some text before exception title\. +.nf +.sp +.in 5 +\fB2\.1\.2 Basic exception stuff\fR +.in +.sp +.fi +After exception title\. +.nf +.sp +\f[CB]exception\fR \f[CB]Kaboom\fR \f[CB]of\fR unit +.fi +.br +.ti +2 +Unary exception constructor +.nf +.sp +\f[CB]exception\fR \f[CB]Kablam\fR \f[CB]of\fR unit * unit +.fi +.br +.ti +2 +Binary exception constructor +.nf +.sp +\f[CB]exception\fR \f[CB]Kapow\fR \f[CB]of\fR unit * unit +.fi +.br +.ti +2 +Unary exception constructor over binary tuple +.nf +.sp +\f[CB]exception\fR \f[CB]EmptySig\fR +.fi +.br +.ti +2 +\f[CI]EmptySig\fR is a module and \f[CI]EmptySig\fR is this exception\. +.nf +.sp +\f[CB]exception\fR \f[CB]EmptySigAlias\fR +.fi +.br +.ti +2 +\f[CI]EmptySigAlias\fR is this exception\. +.nf +.sp +.in 5 +\fB2\.1\.3 Basic type and value stuff with advanced doc comments\fR +.in +.sp +\f[CB]type\fR ('a, 'b) a_function = \f[CB]'a\fR \f[CB]\->\fR \f[CB]'b\fR +.fi +.br +.ti +2 +\f[CI]a_function\fR is this type and \f[CI]a_function\fR is the value below\. +.nf +.sp +\f[CB]val\fR a_function : x:int \f[CB]\->\fR int +.fi +.br +.ti +2 +This is a_function with param and return type\. +.sp +.ti +2 +@parameter x: the x coordinate +.br +.ti +2 +@returns: the y coordinate +.nf +.sp +\f[CB]val\fR fun_fun_fun : ((int, int) a_function, (unit, unit) a_function) a_function +.sp +\f[CB]val\fR fun_maybe : ?yes:unit \f[CB]\->\fR unit \f[CB]\->\fR int +.sp +\f[CB]val\fR not_found : unit \f[CB]\->\fR unit +.fi +.br +.ti +2 +@raises Not_found: That's all it does +.nf +.sp +\f[CB]val\fR ocaml_org : string +.fi +.br +.ti +2 +@see +.UR http://ocaml.org/ +http://ocaml\.org/ +.UE +: The OCaml Web site +.nf +.sp +\f[CB]val\fR some_file : string +.fi +.br +.ti +2 +@see some_file: The file called some_file +.nf +.sp +\f[CB]val\fR some_doc : string +.fi +.br +.ti +2 +@see some_doc: The document called some_doc +.nf +.sp +\f[CB]val\fR since_mesozoic : unit +.fi +.br +.ti +2 +This value was introduced in the Mesozoic era\. +.sp +.ti +2 +@since: mesozoic +.nf +.sp +\f[CB]val\fR changing : unit +.fi +.br +.ti +2 +This value has had changes in 1\.0\.0, 1\.1\.0, and 1\.2\.0\. +.sp +.ti +2 +@before 1\.0\.0: before 1\.0\.0 +.br +.ti +2 +@before 1\.1\.0: before 1\.1\.0 +.br +.ti +2 +@version: 1\.2\.0 +.nf +.sp +.in 5 +\fB2\.1\.4 Some Operators\fR +.in +.sp +\f[CB]val\fR (~-) : unit +.sp +\f[CB]val\fR (!) : unit +.sp +\f[CB]val\fR (@) : unit +.sp +\f[CB]val\fR ($) : unit +.sp +\f[CB]val\fR (%) : unit +.sp +\f[CB]val\fR (&) : unit +.sp +\f[CB]val\fR (*) : unit +.sp +\f[CB]val\fR (-) : unit +.sp +\f[CB]val\fR (+) : unit +.sp +\f[CB]val\fR (-?) : unit +.sp +\f[CB]val\fR (/) : unit +.sp +\f[CB]val\fR (:=) : unit +.sp +\f[CB]val\fR (=) : unit +.sp +\f[CB]val\fR (land) : unit +.sp +.in 5 +\fB2\.1\.5 Advanced Module Stuff\fR +.in +.sp +\f[CB]module\fR CollectionModule : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +This comment is for CollectionModule\. +.nf +.sp +\f[CB]module\fR \f[CB]type\fR COLLECTION = \f[CB]sig\fR +.br +.ti +2 +.fi +This comment is for CollectionModule\. +.nf +.sp +.ti +2 +\f[CB]type\fR collection +.fi +.br +.ti +4 +This comment is for collection\. +.nf +.sp +.ti +2 +\f[CB]type\fR element +.sp +.ti +2 +\f[CB]module\fR InnerModuleA : \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR t = collection +.fi +.br +.ti +6 +This comment is for t\. +.nf +.sp +.ti +4 +\f[CB]module\fR InnerModuleA' : \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = (unit, unit) a_function +.fi +.br +.ti +8 +This comment is for t\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleA'\. +.nf +.sp +.ti +4 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA' = \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = InnerModuleA'\.t +.fi +.br +.ti +8 +This comment is for t\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleTypeA'\. +.nf + +.br +.ti +2 +\f[CB]end\fR +.fi +.br +.ti +4 +This comment is for InnerModuleA\. +.nf +.sp +.ti +2 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA = \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR t = InnerModuleA\.InnerModuleA'\.t +.fi +.br +.ti +6 +This comment is for t\. +.nf + +.br +.ti +2 +\f[CB]end\fR +.fi +.br +.ti +4 +This comment is for InnerModuleTypeA\. +.nf + +.br +\f[CB]end\fR +.fi +.br +.ti +2 +module type of +.nf +.sp +\f[CB]module\fR Recollection (C : COLLECTION) : COLLECTION \f[CB]with\fR \f[CB]type\fR collection = C\.element list \f[CB]and\fR \f[CB]type\fR element = C\.collection +.sp +\f[CB]module\fR \f[CB]type\fR MMM = \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR C : \f[CB]sig\fR +.br +.ti +4 +.fi +This comment is for CollectionModule\. +.nf +.sp +.ti +4 +\f[CB]type\fR collection +.fi +.br +.ti +6 +This comment is for collection\. +.nf +.sp +.ti +4 +\f[CB]type\fR element +.sp +.ti +4 +\f[CB]module\fR InnerModuleA : \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = collection +.fi +.br +.ti +8 +This comment is for t\. +.nf +.sp +.ti +6 +\f[CB]module\fR InnerModuleA' : \f[CB]sig\fR +.br +.ti +8 +\f[CB]type\fR t = (unit, unit) a_function +.fi +.br +.ti +10 +This comment is for t\. +.nf + +.br +.ti +6 +\f[CB]end\fR +.fi +.br +.ti +8 +This comment is for InnerModuleA'\. +.nf +.sp +.ti +6 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA' = \f[CB]sig\fR +.br +.ti +8 +\f[CB]type\fR t = InnerModuleA'\.t +.fi +.br +.ti +10 +This comment is for t\. +.nf + +.br +.ti +6 +\f[CB]end\fR +.fi +.br +.ti +8 +This comment is for InnerModuleTypeA'\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleA\. +.nf +.sp +.ti +4 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA = \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = InnerModuleA\.InnerModuleA'\.t +.fi +.br +.ti +8 +This comment is for t\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleTypeA\. +.nf + +.br +.ti +2 +\f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR RECOLLECTION = \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR C = Recollection(CollectionModule) +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR RecollectionModule = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR collection = CollectionModule\.element list +.sp +.ti +2 +\f[CB]type\fR element = CollectionModule\.collection +.sp +.ti +2 +\f[CB]module\fR InnerModuleA : \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR t = collection +.fi +.br +.ti +6 +This comment is for t\. +.nf +.sp +.ti +4 +\f[CB]module\fR InnerModuleA' : \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = (unit, unit) a_function +.fi +.br +.ti +8 +This comment is for t\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleA'\. +.nf +.sp +.ti +4 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA' = \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = InnerModuleA'\.t +.fi +.br +.ti +8 +This comment is for t\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleTypeA'\. +.nf + +.br +.ti +2 +\f[CB]end\fR +.fi +.br +.ti +4 +This comment is for InnerModuleA\. +.nf +.sp +.ti +2 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA = \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR t = InnerModuleA\.InnerModuleA'\.t +.fi +.br +.ti +6 +This comment is for t\. +.nf + +.br +.ti +2 +\f[CB]end\fR +.fi +.br +.ti +4 +This comment is for InnerModuleTypeA\. +.nf + +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR A = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.sp +.ti +2 +\f[CB]module\fR Q : \f[CB]sig\fR +.br +.ti +4 +.fi +This comment is for CollectionModule\. +.nf +.sp +.ti +4 +\f[CB]type\fR collection +.fi +.br +.ti +6 +This comment is for collection\. +.nf +.sp +.ti +4 +\f[CB]type\fR element +.sp +.ti +4 +\f[CB]module\fR InnerModuleA : \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = collection +.fi +.br +.ti +8 +This comment is for t\. +.nf +.sp +.ti +6 +\f[CB]module\fR InnerModuleA' : \f[CB]sig\fR +.br +.ti +8 +\f[CB]type\fR t = (unit, unit) a_function +.fi +.br +.ti +10 +This comment is for t\. +.nf + +.br +.ti +6 +\f[CB]end\fR +.fi +.br +.ti +8 +This comment is for InnerModuleA'\. +.nf +.sp +.ti +6 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA' = \f[CB]sig\fR +.br +.ti +8 +\f[CB]type\fR t = InnerModuleA'\.t +.fi +.br +.ti +10 +This comment is for t\. +.nf + +.br +.ti +6 +\f[CB]end\fR +.fi +.br +.ti +8 +This comment is for InnerModuleTypeA'\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleA\. +.nf +.sp +.ti +4 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA = \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = InnerModuleA\.InnerModuleA'\.t +.fi +.br +.ti +8 +This comment is for t\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleTypeA\. +.nf + +.br +.ti +2 +\f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR B = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.sp +.ti +2 +\f[CB]module\fR Q : \f[CB]sig\fR +.br +.ti +4 +.fi +This comment is for CollectionModule\. +.nf +.sp +.ti +4 +\f[CB]type\fR collection +.fi +.br +.ti +6 +This comment is for collection\. +.nf +.sp +.ti +4 +\f[CB]type\fR element +.sp +.ti +4 +\f[CB]module\fR InnerModuleA : \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = collection +.fi +.br +.ti +8 +This comment is for t\. +.nf +.sp +.ti +6 +\f[CB]module\fR InnerModuleA' : \f[CB]sig\fR +.br +.ti +8 +\f[CB]type\fR t = (unit, unit) a_function +.fi +.br +.ti +10 +This comment is for t\. +.nf + +.br +.ti +6 +\f[CB]end\fR +.fi +.br +.ti +8 +This comment is for InnerModuleA'\. +.nf +.sp +.ti +6 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA' = \f[CB]sig\fR +.br +.ti +8 +\f[CB]type\fR t = InnerModuleA'\.t +.fi +.br +.ti +10 +This comment is for t\. +.nf + +.br +.ti +6 +\f[CB]end\fR +.fi +.br +.ti +8 +This comment is for InnerModuleTypeA'\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleA\. +.nf +.sp +.ti +4 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA = \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = InnerModuleA\.InnerModuleA'\.t +.fi +.br +.ti +8 +This comment is for t\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleTypeA\. +.nf + +.br +.ti +2 +\f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR C = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.sp +.ti +2 +\f[CB]module\fR Q : \f[CB]sig\fR +.br +.ti +4 +.fi +This comment is for CollectionModule\. +.nf +.sp +.ti +4 +\f[CB]type\fR collection +.fi +.br +.ti +6 +This comment is for collection\. +.nf +.sp +.ti +4 +\f[CB]type\fR element +.sp +.ti +4 +\f[CB]module\fR InnerModuleA : \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = collection +.fi +.br +.ti +8 +This comment is for t\. +.nf +.sp +.ti +6 +\f[CB]module\fR InnerModuleA' : \f[CB]sig\fR +.br +.ti +8 +\f[CB]type\fR t = (unit, unit) a_function +.fi +.br +.ti +10 +This comment is for t\. +.nf + +.br +.ti +6 +\f[CB]end\fR +.fi +.br +.ti +8 +This comment is for InnerModuleA'\. +.nf +.sp +.ti +6 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA' = \f[CB]sig\fR +.br +.ti +8 +\f[CB]type\fR t = InnerModuleA'\.t +.fi +.br +.ti +10 +This comment is for t\. +.nf + +.br +.ti +6 +\f[CB]end\fR +.fi +.br +.ti +8 +This comment is for InnerModuleTypeA'\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleA\. +.nf +.sp +.ti +4 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA = \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = InnerModuleA\.InnerModuleA'\.t +.fi +.br +.ti +8 +This comment is for t\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleTypeA\. +.nf + +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 + +.br +\f[CB]end\fR +.fi +.br +.ti +2 +This module type includes two signatures\. +.nf +.sp +\f[CB]module\fR FunctorTypeOf (Collection : \f[CB]module\fR \f[CB]type\fR \f[CB]of\fR CollectionModule) : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +This comment is for FunctorTypeOf\. +.nf +.sp +\f[CB]module\fR \f[CB]type\fR IncludeModuleType = \f[CB]sig\fR +.br +.ti +2 + +.br +\f[CB]end\fR +.fi +.br +.ti +2 +This comment is for IncludeModuleType\. +.nf +.sp +\f[CB]module\fR \f[CB]type\fR ToInclude = \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR IncludedA : \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR t +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 +\f[CB]module\fR \f[CB]type\fR IncludedB = \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR s +.br +.ti +2 +\f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]module\fR IncludedA : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR IncludedB = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR s +.br +\f[CB]end\fR +.sp +.in 5 +\fB2\.1\.6 Advanced Type Stuff\fR +.in +.sp +\f[CB]type\fR record = { +.br +.ti +2 +field1 : int; +.br +.ti +4 +(* This comment is for field1\. *) +.br +.ti +2 +field2 : int; +.br +.ti +4 +(* This comment is for field2\. *) +.br +} +.fi +.br +.ti +2 +This comment is for record\. +.sp +.ti +2 +This comment is also for record\. +.nf +.sp +\f[CB]type\fR mutable_record = { +.br +.ti +2 +\f[CB]mutable\fR a : int; +.br +.ti +4 +(* a is first and mutable *) +.br +.ti +2 +b : unit; +.br +.ti +4 +(* b is second and immutable *) +.br +.ti +2 +\f[CB]mutable\fR c : int; +.br +.ti +4 +(* c is third and mutable *) +.br +} +.sp +\f[CB]type\fR universe_record = { +.br +.ti +2 +nihilate : a\. \f[CB]'a\fR \f[CB]\->\fR unit; +.br +} +.sp +\f[CB]type\fR variant = +.br +.ti +2 +| \f[CB]TagA\fR +.br +.ti +4 +(* This comment is for TagA\. *) +.br +.ti +2 +| \f[CB]ConstrB\fR \f[CB]of\fR int +.br +.ti +4 +(* This comment is for ConstrB\. *) +.br +.ti +2 +| \f[CB]ConstrC\fR \f[CB]of\fR int * int +.br +.ti +4 +(* This comment is for binary ConstrC\. *) +.br +.ti +2 +| \f[CB]ConstrD\fR \f[CB]of\fR int * int +.br +.ti +4 +(* This comment is for unary ConstrD of binary tuple\. *) +.br +.fi +.br +.ti +2 +This comment is for variant\. +.sp +.ti +2 +This comment is also for variant\. +.nf +.sp +\f[CB]type\fR poly_variant = [ +.br +.ti +2 +| `TagA +.br +.ti +2 +| `ConstrB \f[CB]of\fR int +.br + ] +.fi +.br +.ti +2 +This comment is for poly_variant\. +.sp +.ti +2 +Wow! It was a polymorphic variant! +.nf +.sp +\f[CB]type\fR (_, _) full_gadt = +.br +.ti +2 +| \f[CB]Tag\fR : (unit, unit) full_gadt +.br +.ti +2 +| \f[CB]First\fR : \f[CB]'a\fR \f[CB]\->\fR (\f[CB]'a\fR, unit) full_gadt +.br +.ti +2 +| \f[CB]Second\fR : \f[CB]'a\fR \f[CB]\->\fR (unit, \f[CB]'a\fR) full_gadt +.br +.ti +2 +| \f[CB]Exist\fR : \f[CB]'a\fR * \f[CB]'b\fR \f[CB]\->\fR (\f[CB]'b\fR, unit) full_gadt +.br +.fi +.br +.ti +2 +This comment is for full_gadt\. +.sp +.ti +2 +Wow! It was a GADT! +.nf +.sp +\f[CB]type\fR 'a partial_gadt = +.br +.ti +2 +| \f[CB]AscribeTag\fR : \f[CB]'a\fR partial_gadt +.br +.ti +2 +| \f[CB]OfTag\fR \f[CB]of\fR \f[CB]'a\fR partial_gadt +.br +.ti +2 +| \f[CB]ExistGadtTag\fR : (\f[CB]'a\fR \f[CB]\->\fR \f[CB]'b\fR) \f[CB]\->\fR \f[CB]'a\fR partial_gadt +.br +.fi +.br +.ti +2 +This comment is for partial_gadt\. +.sp +.ti +2 +Wow! It was a mixed GADT! +.nf +.sp +\f[CB]type\fR alias = variant +.fi +.br +.ti +2 +This comment is for alias\. +.nf +.sp +\f[CB]type\fR tuple = (alias * alias) * alias * (alias * alias) +.fi +.br +.ti +2 +This comment is for tuple\. +.nf +.sp +\f[CB]type\fR variant_alias = variant = +.br +.ti +2 +| \f[CB]TagA\fR +.br +.ti +2 +| \f[CB]ConstrB\fR \f[CB]of\fR int +.br +.ti +2 +| \f[CB]ConstrC\fR \f[CB]of\fR int * int +.br +.ti +2 +| \f[CB]ConstrD\fR \f[CB]of\fR int * int +.br +.fi +.br +.ti +2 +This comment is for variant_alias\. +.nf +.sp +\f[CB]type\fR record_alias = record = { +.br +.ti +2 +field1 : int; +.br +.ti +2 +field2 : int; +.br +} +.fi +.br +.ti +2 +This comment is for record_alias\. +.nf +.sp +\f[CB]type\fR poly_variant_union = [ +.br +.ti +2 +| poly_variant +.br +.ti +2 +| `TagC +.br + ] +.fi +.br +.ti +2 +This comment is for poly_variant_union\. +.nf +.sp +\f[CB]type\fR 'a poly_poly_variant = [ +.br +.ti +2 +| `TagA \f[CB]of\fR \f[CB]'a\fR +.br + ] +.sp +\f[CB]type\fR ('a, 'b) bin_poly_poly_variant = [ +.br +.ti +2 +| `TagA \f[CB]of\fR \f[CB]'a\fR +.br +.ti +2 +| `ConstrB \f[CB]of\fR \f[CB]'b\fR +.br + ] +.sp +\f[CB]type\fR 'a open_poly_variant = [> `TagA ] \f[CB]as\fR 'a +.sp +\f[CB]type\fR 'a open_poly_variant2 = [> `ConstrB of int ] \f[CB]as\fR 'a +.sp +\f[CB]type\fR 'a open_poly_variant_alias = \f[CB]'a\fR open_poly_variant open_poly_variant2 +.sp +\f[CB]type\fR 'a poly_fun = [> `ConstrB of int ] \f[CB]as\fR 'a \f[CB]\->\fR \f[CB]'a\fR +.sp +\f[CB]type\fR 'a poly_fun_constraint = \f[CB]'a\fR \f[CB]\->\fR \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = [> `TagA ] +.sp +\f[CB]type\fR 'a closed_poly_variant = [< `One | `Two ] \f[CB]as\fR 'a +.sp +\f[CB]type\fR 'a clopen_poly_variant = [< `One | `Two of int | `Three Two Three ] \f[CB]as\fR 'a +.sp +\f[CB]type\fR nested_poly_variant = [ +.br +.ti +2 +| `A +.br +.ti +2 +| `B \f[CB]of\fR [ `B1 | `B2 ] +.br +.ti +2 +| `C +.br +.ti +2 +| `D \f[CB]of\fR [ `D1 of [ `D1a ] ] +.br + ] +.sp +\f[CB]type\fR ('a, 'b) full_gadt_alias = (\f[CB]'a\fR, \f[CB]'b\fR) full_gadt = +.br +.ti +2 +| \f[CB]Tag\fR : (unit, unit) full_gadt_alias +.br +.ti +2 +| \f[CB]First\fR : \f[CB]'a\fR \f[CB]\->\fR (\f[CB]'a\fR, unit) full_gadt_alias +.br +.ti +2 +| \f[CB]Second\fR : \f[CB]'a\fR \f[CB]\->\fR (unit, \f[CB]'a\fR) full_gadt_alias +.br +.ti +2 +| \f[CB]Exist\fR : \f[CB]'a\fR * \f[CB]'b\fR \f[CB]\->\fR (\f[CB]'b\fR, unit) full_gadt_alias +.br +.fi +.br +.ti +2 +This comment is for full_gadt_alias\. +.nf +.sp +\f[CB]type\fR 'a partial_gadt_alias = \f[CB]'a\fR partial_gadt = +.br +.ti +2 +| \f[CB]AscribeTag\fR : \f[CB]'a\fR partial_gadt_alias +.br +.ti +2 +| \f[CB]OfTag\fR \f[CB]of\fR \f[CB]'a\fR partial_gadt_alias +.br +.ti +2 +| \f[CB]ExistGadtTag\fR : (\f[CB]'a\fR \f[CB]\->\fR \f[CB]'b\fR) \f[CB]\->\fR \f[CB]'a\fR partial_gadt_alias +.br +.fi +.br +.ti +2 +This comment is for partial_gadt_alias\. +.nf +.sp +\f[CB]exception\fR \f[CB]Exn_arrow\fR : unit \f[CB]\->\fR exn +.fi +.br +.ti +2 +This comment is for \f[CI]Exn_arrow\fR\. +.nf +.sp +\f[CB]type\fR mutual_constr_a = +.br +.ti +2 +| \f[CB]A\fR +.br +.ti +2 +| \f[CB]B_ish\fR \f[CB]of\fR mutual_constr_b +.br +.ti +4 +(* This comment is between \f[CI]mutual_constr_a\fR and \f[CI]mutual_constr_b\fR\. *) +.br +.fi +.br +.ti +2 +This comment is for \f[CI]mutual_constr_a\fR then \f[CI]mutual_constr_b\fR\. +.nf +.sp +\f[CB]and\fR mutual_constr_b = +.br +.ti +2 +| \f[CB]B\fR +.br +.ti +2 +| \f[CB]A_ish\fR \f[CB]of\fR mutual_constr_a +.br +.ti +4 +(* This comment must be here for the next to associate correctly\. *) +.br +.fi +.br +.ti +2 +This comment is for \f[CI]mutual_constr_b\fR then \f[CI]mutual_constr_a\fR\. +.nf +.sp +\f[CB]type\fR rec_obj = < f : int; g : unit \f[CB]\->\fR unit; h : rec_obj; > +.sp +\f[CB]type\fR 'a open_obj = < f : int; g : unit \f[CB]\->\fR unit; \.\. > \f[CB]as\fR 'a +.sp +\f[CB]type\fR 'a oof = < a : unit; \.\. > \f[CB]as\fR 'a \f[CB]\->\fR \f[CB]'a\fR +.sp +\f[CB]type\fR 'a any_obj = < \.\. > \f[CB]as\fR 'a +.sp +\f[CB]type\fR empty_obj = < > +.sp +\f[CB]type\fR one_meth = < meth : unit; > +.sp +\f[CB]type\fR ext = \.\. +.fi +.br +.ti +2 +A mystery wrapped in an ellipsis +.nf +.sp +\f[CB]type\fR ext += +.br +.ti +2 +| \f[CB]ExtA\fR +.br +.sp +\f[CB]type\fR ext += +.br +.ti +2 +| \f[CB]ExtB\fR +.br +.sp +\f[CB]type\fR ext += +.br +.ti +2 +| \f[CB]ExtC\fR \f[CB]of\fR unit +.br +.ti +2 +| \f[CB]ExtD\fR \f[CB]of\fR ext +.br +.sp +\f[CB]type\fR ext += +.br +.ti +2 +| \f[CB]ExtE\fR +.br +.sp +\f[CB]type\fR ext += +.br +.ti +2 +| \f[CB]ExtF\fR +.br +.sp +\f[CB]type\fR 'a poly_ext = \.\. +.fi +.br +.ti +2 +'a poly_ext +.nf +.sp +\f[CB]type\fR poly_ext += +.br +.ti +2 +| \f[CB]Foo\fR \f[CB]of\fR \f[CB]'b\fR +.br +.ti +2 +| \f[CB]Bar\fR \f[CB]of\fR \f[CB]'b\fR * \f[CB]'b\fR +.br +.ti +4 +(* 'b poly_ext *) +.br +.sp +\f[CB]type\fR poly_ext += +.br +.ti +2 +| \f[CB]Quux\fR \f[CB]of\fR \f[CB]'c\fR +.br +.ti +4 +(* 'c poly_ext *) +.br +.sp +\f[CB]module\fR ExtMod : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]type\fR ExtMod\.t += +.br +.ti +2 +| \f[CB]ZzzTop0\fR +.br +.ti +4 +(* It's got the rock *) +.br +.sp +\f[CB]type\fR ExtMod\.t += +.br +.ti +2 +| \f[CB]ZzzTop\fR \f[CB]of\fR unit +.br +.ti +4 +(* and it packs a unit\. *) +.br +.sp +\f[CB]val\fR launch_missiles : unit \f[CB]\->\fR unit +.fi +.br +.ti +2 +Rotate keys on my mark\.\.\. +.nf +.sp +\f[CB]type\fR my_mod = (\f[CB]module\fR COLLECTION) +.fi +.br +.ti +2 +A brown paper package tied up with string +.nf +.sp +\f[CB]class\fR empty_class : \f[CB]object\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]class\fR one_method_class : \f[CB]object\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]class\fR two_method_class : \f[CB]object\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]class\fR 'a param_class : \f[CB]'a\fR \f[CB]\->\fR \f[CB]object\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]type\fR my_unit_object = unit param_class +.sp +\f[CB]type\fR 'a my_unit_class = unit param_class \f[CB]as\fR 'a +.sp +\f[CB]module\fR Dep1 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Dep2 (Arg : \f[CB]sig\fR \.\.\. \f[CB]end\fR) : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]type\fR dep1 = Dep2(Dep1)\.B\.c +.sp +\f[CB]module\fR Dep3 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Dep4 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Dep5 (Arg : \f[CB]sig\fR \.\.\. \f[CB]end\fR) : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]type\fR dep2 = Dep5(Dep4)\.Z\.X\.b +.sp +\f[CB]type\fR dep3 = Dep5(Dep4)\.Z\.Y\.a +.sp +\f[CB]module\fR Dep6 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Dep7 (Arg : \f[CB]sig\fR \.\.\. \f[CB]end\fR) : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]type\fR dep4 = Dep7(Dep6)\.M\.Y\.d +.sp +\f[CB]module\fR Dep8 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Dep9 (X : \f[CB]sig\fR \.\.\. \f[CB]end\fR) : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR Dep10 = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t = int +.br +\f[CB]end\fR +.sp +\f[CB]module\fR Dep11 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Dep12 (Arg : \f[CB]sig\fR \.\.\. \f[CB]end\fR) : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Dep13 : Dep12(Dep11)\.T +.sp +\f[CB]type\fR dep5 = Dep13\.c +.sp +\f[CB]module\fR \f[CB]type\fR With1 = \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR M : \f[CB]sig\fR +.br +.ti +4 +\f[CB]module\fR \f[CB]type\fR S +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 +\f[CB]module\fR N : M\.S +.br +\f[CB]end\fR +.sp +\f[CB]module\fR With2 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR With3 : With1 \f[CB]with\fR \f[CB]module\fR M = With2 +.sp +\f[CB]type\fR with1 = With3\.N\.t +.sp +\f[CB]module\fR With4 : With1 \f[CB]with\fR \f[CB]module\fR M := With2 +.sp +\f[CB]type\fR with2 = With4\.N\.t +.sp +\f[CB]module\fR With5 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR With6 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR With7 (X : \f[CB]sig\fR \.\.\. \f[CB]end\fR) : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR With8 = \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR M : \f[CB]sig\fR +.br +.ti +4 +\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t +.br +.ti +4 +\f[CB]end\fR +.sp +.ti +4 +\f[CB]module\fR N : \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = With5\.N\.t +.br +.ti +4 +\f[CB]end\fR +.br +.ti +2 +\f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]module\fR With9 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR With10 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR With11 = \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR M = With9 +.sp +.ti +2 +\f[CB]module\fR N : \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR t = int +.br +.ti +2 +\f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR NestedInclude1 = \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR \f[CB]type\fR NestedInclude2 = \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR nested_include +.br +.ti +2 +\f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR NestedInclude2 = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR nested_include +.br +\f[CB]end\fR +.sp +\f[CB]type\fR nested_include = int +.sp +\f[CB]module\fR DoubleInclude1 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR DoubleInclude3 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]type\fR double_include +.sp +\f[CB]module\fR IncludeInclude1 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR IncludeInclude2 = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR include_include +.br +\f[CB]end\fR +.sp +\f[CB]type\fR include_include +.sp +.in 3 +\fB3 Trying the {!modules: \.\.\.} command\.\fR +.in +.sp +.fi +With ocamldoc, toplevel units will be linked and documented, while submodules will behave as simple references\. +.sp +With odoc, everything should be resolved (and linked) but only toplevel units will be documented\. +.sp +@\f[CI]Dep1\.X\fR: +.br +@DocOckTypes: +.br +@\f[CI]Ocamlary\.IncludeInclude1\fR: +.br +@\f[CI]Ocamlary\fR: This is an \fIinterface\fR with \fBall\fR of the module system features\. This documentation demonstrates: +.nf +.sp +.in 5 +\fB3\.1\.1 Weirder usages involving module types\fR +.in +.sp +.fi +@IncludeInclude1\.IncludeInclude2: +.br +@Dep4\.T: +.br +@\f[CI]A\.Q\fR: +.nf +.sp +.in 3 +\fB4 Playing with @canonical paths\fR +.in +.sp +\f[CB]module\fR CanonicalTest : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]val\fR test : \f[CB]'a\fR CanonicalTest\.Base\.List\.t \f[CB]\->\fR unit +.fi +.br +.ti +2 +Some ref to \f[CI]CanonicalTest\.Base__Tests\.C\.t\fR and \f[CI]CanonicalTest\.Base__Tests\.L\.id\fR\. But also to \f[CI]CanonicalTest\.Base__\.List\fR and \f[CI]CanonicalTest\.Base__\.List\.t\fR +.nf +.sp +.in 3 +\fB5 Aliases again\fR +.in +.sp +\f[CB]module\fR Aliases : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +Let's imitate jst's layout\. +.nf +.sp +.in 3 +\fB6 Section title splicing\fR +.in +.sp +.fi +I can refer to +.sp +\(bu {!section:indexmodules} : \f[CI]Trying the {!modules: \.\.\.} command\.\fR +.br +\(bu {!aliases} : \f[CI]Aliases again\fR +.sp +But also to things in submodules: +.sp +\(bu {!section:SuperSig\.SubSigA\.subSig} : SuperSig\.SubSigA\.subSig +.br +\(bu {!Aliases\.incl} : \f[CI]Aliases:incl\fR +.sp +And just to make sure we do not mess up: +.sp +\(bu {{!section:indexmodules}A} : \f[CI]A\fR +.br +\(bu {{!aliases}B} : \f[CI]B\fR +.br +\(bu {{!section:SuperSig\.SubSigA\.subSig}C} : \f[CI]C\fR +.br +\(bu {{!Aliases\.incl}D} : \f[CI]D\fR +.nf +.sp +.in 3 +\fB7 New reference syntax\fR +.in +.sp +\f[CB]module\fR \f[CB]type\fR M = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.sp +\f[CB]module\fR M : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +.fi +Here goes: +.sp +\(bu {!module-M\.t} : \f[CI]M\.t\fR +.br +\(bu {!module-type-M\.t} : \f[CI]M\.t\fR +.nf +.sp +\f[CB]module\fR Only_a_module : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +.fi +Some here should fail: +.sp +\(bu {!Only_a_module\.t} : \f[CI]Only_a_module\.t\fR +.br +\(bu {!module-Only_a_module\.t} : \f[CI]Only_a_module\.t\fR +.br +\(bu {!module-type-Only_a_module\.t} : Only_a_module\.t : \f[CI]test\fR +.nf +.sp +\f[CB]module\fR \f[CB]type\fR TypeExt = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t = \.\. +.sp +.ti +2 +\f[CB]type\fR t += +.br +.ti +4 +| \f[CB]C\fR +.br +.ti +2 +.sp +.ti +2 +\f[CB]val\fR f : t \f[CB]\->\fR unit +.br +\f[CB]end\fR +.sp +\f[CB]type\fR new_t = \.\. +.sp +\f[CB]type\fR new_t += +.br +.ti +2 +| \f[CB]C\fR +.br +.sp +\f[CB]module\fR \f[CB]type\fR TypeExtPruned = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR new_t += +.br +.ti +4 +| \f[CB]C\fR +.br +.ti +2 +.sp +.ti +2 +\f[CB]val\fR f : new_t \f[CB]\->\fR unit +.br +\f[CB]end\fR diff --git a/test/generators/man/Ocamlary.Aliases.3o b/test/generators/man/Ocamlary.Aliases.3o new file mode 100644 index 0000000000..1225fa6c56 --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.3o @@ -0,0 +1,81 @@ + +.TH Aliases 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Aliases\fR +.in +.sp +.fi +Let's imitate jst's layout\. +.nf +.SH Documentation +.sp +.nf +\f[CB]module\fR Foo__A : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Foo__B : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Foo__C : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Foo__D : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Foo__E : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Foo__ : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Foo : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR A' = Foo\.A +.sp +\f[CB]type\fR tata = Foo\.A\.t +.sp +\f[CB]type\fR tbtb = Foo\.B\.t +.sp +\f[CB]type\fR tete +.sp +\f[CB]type\fR tata' = A'\.t +.sp +\f[CB]type\fR tete2 = Foo\.E\.t +.sp +\f[CB]module\fR Std : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]type\fR stde = Std\.E\.t +.sp +.in 5 +\fB1\.1\.1 include of Foo\fR +.in +.sp +.fi +Just for giggle, let's see what happens when we include \f[CI]Foo\fR\. +.nf +.sp +\f[CB]module\fR A = Foo\.A +.sp +\f[CB]module\fR B = Foo\.B +.sp +\f[CB]module\fR C = Foo\.C +.sp +\f[CB]module\fR D = Foo\.D +.sp +\f[CB]module\fR E : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]type\fR testa = A\.t +.sp +.fi +And also, let's refer to \f[CI]A\.t\fR and \f[CI]Foo\.B\.id\fR +.nf +.sp +\f[CB]module\fR P1 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR P2 : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR X1 = P2\.Z +.sp +\f[CB]module\fR X2 = P2\.Z +.sp +\f[CB]type\fR p1 = X1\.t +.sp +\f[CB]type\fR p2 = X2\.t diff --git a/test/generators/man/Ocamlary.Aliases.E.3o b/test/generators/man/Ocamlary.Aliases.E.3o new file mode 100644 index 0000000000..a11cc25979 --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.E.3o @@ -0,0 +1,16 @@ + +.TH E 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.E +.SH Synopsis +.sp +.in 2 +\fBModule Aliases\.E\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t +.sp +\f[CB]val\fR id : t \f[CB]\->\fR t diff --git a/test/generators/man/Ocamlary.Aliases.Foo.3o b/test/generators/man/Ocamlary.Aliases.Foo.3o new file mode 100644 index 0000000000..b2fcfd7e08 --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.Foo.3o @@ -0,0 +1,22 @@ + +.TH Foo 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.Foo +.SH Synopsis +.sp +.in 2 +\fBModule Aliases\.Foo\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR A : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR B : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR C : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR D : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR E : \f[CB]sig\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Ocamlary.Aliases.Foo.A.3o b/test/generators/man/Ocamlary.Aliases.Foo.A.3o new file mode 100644 index 0000000000..0d01acc15b --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.Foo.A.3o @@ -0,0 +1,16 @@ + +.TH A 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.Foo\.A +.SH Synopsis +.sp +.in 2 +\fBModule Foo\.A\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t +.sp +\f[CB]val\fR id : t \f[CB]\->\fR t diff --git a/test/generators/man/Ocamlary.Aliases.Foo.B.3o b/test/generators/man/Ocamlary.Aliases.Foo.B.3o new file mode 100644 index 0000000000..c7f5a14bc7 --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.Foo.B.3o @@ -0,0 +1,16 @@ + +.TH B 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.Foo\.B +.SH Synopsis +.sp +.in 2 +\fBModule Foo\.B\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t +.sp +\f[CB]val\fR id : t \f[CB]\->\fR t diff --git a/test/generators/man/Ocamlary.Aliases.Foo.C.3o b/test/generators/man/Ocamlary.Aliases.Foo.C.3o new file mode 100644 index 0000000000..1909fe4794 --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.Foo.C.3o @@ -0,0 +1,16 @@ + +.TH C 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.Foo\.C +.SH Synopsis +.sp +.in 2 +\fBModule Foo\.C\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t +.sp +\f[CB]val\fR id : t \f[CB]\->\fR t diff --git a/test/generators/man/Ocamlary.Aliases.Foo.D.3o b/test/generators/man/Ocamlary.Aliases.Foo.D.3o new file mode 100644 index 0000000000..2897dcb00e --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.Foo.D.3o @@ -0,0 +1,16 @@ + +.TH D 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.Foo\.D +.SH Synopsis +.sp +.in 2 +\fBModule Foo\.D\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t +.sp +\f[CB]val\fR id : t \f[CB]\->\fR t diff --git a/test/generators/man/Ocamlary.Aliases.Foo.E.3o b/test/generators/man/Ocamlary.Aliases.Foo.E.3o new file mode 100644 index 0000000000..a0bd6211cc --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.Foo.E.3o @@ -0,0 +1,16 @@ + +.TH E 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.Foo\.E +.SH Synopsis +.sp +.in 2 +\fBModule Foo\.E\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t +.sp +\f[CB]val\fR id : t \f[CB]\->\fR t diff --git a/test/generators/man/Ocamlary.Aliases.Foo__.3o b/test/generators/man/Ocamlary.Aliases.Foo__.3o new file mode 100644 index 0000000000..805c96cb92 --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.Foo__.3o @@ -0,0 +1,22 @@ + +.TH Foo__ 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.Foo__ +.SH Synopsis +.sp +.in 2 +\fBModule Aliases\.Foo__\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR A = Foo__A +.sp +\f[CB]module\fR B = Foo__B +.sp +\f[CB]module\fR C = Foo__C +.sp +\f[CB]module\fR D = Foo__D +.sp +\f[CB]module\fR E = Foo__E diff --git a/test/generators/man/Ocamlary.Aliases.Foo__A.3o b/test/generators/man/Ocamlary.Aliases.Foo__A.3o new file mode 100644 index 0000000000..1bcf68dde1 --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.Foo__A.3o @@ -0,0 +1,16 @@ + +.TH Foo__A 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.Foo__A +.SH Synopsis +.sp +.in 2 +\fBModule Aliases\.Foo__A\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t +.sp +\f[CB]val\fR id : t \f[CB]\->\fR t diff --git a/test/generators/man/Ocamlary.Aliases.Foo__B.3o b/test/generators/man/Ocamlary.Aliases.Foo__B.3o new file mode 100644 index 0000000000..d7357e938c --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.Foo__B.3o @@ -0,0 +1,16 @@ + +.TH Foo__B 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.Foo__B +.SH Synopsis +.sp +.in 2 +\fBModule Aliases\.Foo__B\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t +.sp +\f[CB]val\fR id : t \f[CB]\->\fR t diff --git a/test/generators/man/Ocamlary.Aliases.Foo__C.3o b/test/generators/man/Ocamlary.Aliases.Foo__C.3o new file mode 100644 index 0000000000..7fd61a6591 --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.Foo__C.3o @@ -0,0 +1,16 @@ + +.TH Foo__C 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.Foo__C +.SH Synopsis +.sp +.in 2 +\fBModule Aliases\.Foo__C\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t +.sp +\f[CB]val\fR id : t \f[CB]\->\fR t diff --git a/test/generators/man/Ocamlary.Aliases.Foo__D.3o b/test/generators/man/Ocamlary.Aliases.Foo__D.3o new file mode 100644 index 0000000000..e16716ac1a --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.Foo__D.3o @@ -0,0 +1,16 @@ + +.TH Foo__D 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.Foo__D +.SH Synopsis +.sp +.in 2 +\fBModule Aliases\.Foo__D\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t +.sp +\f[CB]val\fR id : t \f[CB]\->\fR t diff --git a/test/generators/man/Ocamlary.Aliases.Foo__E.3o b/test/generators/man/Ocamlary.Aliases.Foo__E.3o new file mode 100644 index 0000000000..462c35409a --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.Foo__E.3o @@ -0,0 +1,16 @@ + +.TH Foo__E 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.Foo__E +.SH Synopsis +.sp +.in 2 +\fBModule Aliases\.Foo__E\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t +.sp +\f[CB]val\fR id : t \f[CB]\->\fR t diff --git a/test/generators/man/Ocamlary.Aliases.P1.3o b/test/generators/man/Ocamlary.Aliases.P1.3o new file mode 100644 index 0000000000..8e2e466051 --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.P1.3o @@ -0,0 +1,14 @@ + +.TH P1 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.P1 +.SH Synopsis +.sp +.in 2 +\fBModule Aliases\.P1\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR Y : \f[CB]sig\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Ocamlary.Aliases.P1.Y.3o b/test/generators/man/Ocamlary.Aliases.P1.Y.3o new file mode 100644 index 0000000000..3ef572d24e --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.P1.Y.3o @@ -0,0 +1,16 @@ + +.TH Y 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.P1\.Y +.SH Synopsis +.sp +.in 2 +\fBModule P1\.Y\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t +.sp +\f[CB]val\fR id : t \f[CB]\->\fR t diff --git a/test/generators/man/Ocamlary.Aliases.P2.3o b/test/generators/man/Ocamlary.Aliases.P2.3o new file mode 100644 index 0000000000..86cdfb23fc --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.P2.3o @@ -0,0 +1,14 @@ + +.TH P2 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.P2 +.SH Synopsis +.sp +.in 2 +\fBModule Aliases\.P2\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR Z = Z diff --git a/test/generators/man/Ocamlary.Aliases.Std.3o b/test/generators/man/Ocamlary.Aliases.Std.3o new file mode 100644 index 0000000000..ab49c37679 --- /dev/null +++ b/test/generators/man/Ocamlary.Aliases.Std.3o @@ -0,0 +1,22 @@ + +.TH Std 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Aliases\.Std +.SH Synopsis +.sp +.in 2 +\fBModule Aliases\.Std\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR A = Foo\.A +.sp +\f[CB]module\fR B = Foo\.B +.sp +\f[CB]module\fR C = Foo\.C +.sp +\f[CB]module\fR D = Foo\.D +.sp +\f[CB]module\fR E = Foo\.E diff --git a/test/generators/man/Ocamlary.Buffer.3o b/test/generators/man/Ocamlary.Buffer.3o new file mode 100644 index 0000000000..c985d225a3 --- /dev/null +++ b/test/generators/man/Ocamlary.Buffer.3o @@ -0,0 +1,17 @@ + +.TH Buffer 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Buffer +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Buffer\fR +.in +.sp +.fi +Buffer\.t +.nf +.SH Documentation +.sp +.nf +\f[CB]val\fR f : Stdlib\.Buffer\.t \f[CB]\->\fR unit diff --git a/test/generators/man/Ocamlary.CanonicalTest.3o b/test/generators/man/Ocamlary.CanonicalTest.3o new file mode 100644 index 0000000000..636ca7179e --- /dev/null +++ b/test/generators/man/Ocamlary.CanonicalTest.3o @@ -0,0 +1,22 @@ + +.TH CanonicalTest 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.CanonicalTest +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.CanonicalTest\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR Base__List : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Base__ : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Base : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR Base__Tests : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR List_modif : \f[CB]module\fR \f[CB]type\fR \f[CB]of\fR Base\.List \f[CB]with\fR \f[CB]type\fR 'c t = \f[CB]'c\fR Base\.List\.t diff --git a/test/generators/man/Ocamlary.CanonicalTest.Base.3o b/test/generators/man/Ocamlary.CanonicalTest.Base.3o new file mode 100644 index 0000000000..222390acda --- /dev/null +++ b/test/generators/man/Ocamlary.CanonicalTest.Base.3o @@ -0,0 +1,14 @@ + +.TH Base 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.CanonicalTest\.Base +.SH Synopsis +.sp +.in 2 +\fBModule CanonicalTest\.Base\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR List : \f[CB]sig\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Ocamlary.CanonicalTest.Base.List.3o b/test/generators/man/Ocamlary.CanonicalTest.Base.List.3o new file mode 100644 index 0000000000..6e5c4af4e6 --- /dev/null +++ b/test/generators/man/Ocamlary.CanonicalTest.Base.List.3o @@ -0,0 +1,16 @@ + +.TH List 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.CanonicalTest\.Base\.List +.SH Synopsis +.sp +.in 2 +\fBModule Base\.List\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR 'a t +.sp +\f[CB]val\fR id : \f[CB]'a\fR t \f[CB]\->\fR \f[CB]'a\fR t diff --git a/test/generators/man/Ocamlary.CanonicalTest.Base__.3o b/test/generators/man/Ocamlary.CanonicalTest.Base__.3o new file mode 100644 index 0000000000..704be91b0d --- /dev/null +++ b/test/generators/man/Ocamlary.CanonicalTest.Base__.3o @@ -0,0 +1,14 @@ + +.TH Base__ 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.CanonicalTest\.Base__ +.SH Synopsis +.sp +.in 2 +\fBModule CanonicalTest\.Base__\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR List = Base__List diff --git a/test/generators/man/Ocamlary.CanonicalTest.Base__List.3o b/test/generators/man/Ocamlary.CanonicalTest.Base__List.3o new file mode 100644 index 0000000000..7e7ceccaa0 --- /dev/null +++ b/test/generators/man/Ocamlary.CanonicalTest.Base__List.3o @@ -0,0 +1,16 @@ + +.TH Base__List 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.CanonicalTest\.Base__List +.SH Synopsis +.sp +.in 2 +\fBModule CanonicalTest\.Base__List\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR 'a t +.sp +\f[CB]val\fR id : \f[CB]'a\fR t \f[CB]\->\fR \f[CB]'a\fR t diff --git a/test/generators/man/Ocamlary.CanonicalTest.Base__Tests.3o b/test/generators/man/Ocamlary.CanonicalTest.Base__Tests.3o new file mode 100644 index 0000000000..edee0500fb --- /dev/null +++ b/test/generators/man/Ocamlary.CanonicalTest.Base__Tests.3o @@ -0,0 +1,33 @@ + +.TH Base__Tests 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.CanonicalTest\.Base__Tests +.SH Synopsis +.sp +.in 2 +\fBModule CanonicalTest\.Base__Tests\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR C : \f[CB]module\fR \f[CB]type\fR \f[CB]of\fR Base__\.List +.sp +\f[CB]module\fR L = Base__\.List +.sp +\f[CB]val\fR foo : int L\.t \f[CB]\->\fR float L\.t +.sp +\f[CB]val\fR bar : \f[CB]'a\fR Base__\.List\.t \f[CB]\->\fR \f[CB]'a\fR Base__\.List\.t +.fi +.br +.ti +2 +This is just List\.id, or rather L\.id +.nf +.sp +\f[CB]val\fR baz : \f[CB]'a\fR Base__\.List\.t \f[CB]\->\fR unit +.fi +.br +.ti +2 +Just seeing if Base__\.List\.t (Base__\.List\.t) gets rewriten to Base\.List\.t (Base\.List\.t) +.nf + diff --git a/test/generators/man/Ocamlary.CanonicalTest.Base__Tests.C.3o b/test/generators/man/Ocamlary.CanonicalTest.Base__Tests.C.3o new file mode 100644 index 0000000000..418eed843b --- /dev/null +++ b/test/generators/man/Ocamlary.CanonicalTest.Base__Tests.C.3o @@ -0,0 +1,16 @@ + +.TH C 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.CanonicalTest\.Base__Tests\.C +.SH Synopsis +.sp +.in 2 +\fBModule Base__Tests\.C\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR 'a t +.sp +\f[CB]val\fR id : \f[CB]'a\fR t \f[CB]\->\fR \f[CB]'a\fR t diff --git a/test/generators/man/Ocamlary.CanonicalTest.List_modif.3o b/test/generators/man/Ocamlary.CanonicalTest.List_modif.3o new file mode 100644 index 0000000000..20a6383ff2 --- /dev/null +++ b/test/generators/man/Ocamlary.CanonicalTest.List_modif.3o @@ -0,0 +1,16 @@ + +.TH List_modif 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.CanonicalTest\.List_modif +.SH Synopsis +.sp +.in 2 +\fBModule CanonicalTest\.List_modif\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR 'c t = \f[CB]'c\fR Base\.List\.t +.sp +\f[CB]val\fR id : \f[CB]'a\fR t \f[CB]\->\fR \f[CB]'a\fR t diff --git a/test/generators/man/Ocamlary.CollectionModule.3o b/test/generators/man/Ocamlary.CollectionModule.3o new file mode 100644 index 0000000000..1995f80ce5 --- /dev/null +++ b/test/generators/man/Ocamlary.CollectionModule.3o @@ -0,0 +1,50 @@ + +.TH CollectionModule 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.CollectionModule +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.CollectionModule\fR +.in +.sp +.fi +This comment is for CollectionModule\. +.nf +.SH Documentation +.sp +.nf +\f[CB]type\fR collection +.fi +.br +.ti +2 +This comment is for collection\. +.nf +.sp +\f[CB]type\fR element +.sp +\f[CB]module\fR InnerModuleA : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +This comment is for InnerModuleA\. +.nf +.sp +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t = InnerModuleA\.InnerModuleA'\.t +.fi +.br +.ti +4 +This comment is for t\. +.nf + +.br +\f[CB]end\fR +.fi +.br +.ti +2 +This comment is for InnerModuleTypeA\. +.nf + diff --git a/test/generators/man/Ocamlary.CollectionModule.InnerModuleA.3o b/test/generators/man/Ocamlary.CollectionModule.InnerModuleA.3o new file mode 100644 index 0000000000..76d612127d --- /dev/null +++ b/test/generators/man/Ocamlary.CollectionModule.InnerModuleA.3o @@ -0,0 +1,48 @@ + +.TH InnerModuleA 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.CollectionModule\.InnerModuleA +.SH Synopsis +.sp +.in 2 +\fBModule CollectionModule\.InnerModuleA\fR +.in +.sp +.fi +This comment is for InnerModuleA\. +.nf +.SH Documentation +.sp +.nf +\f[CB]type\fR t = collection +.fi +.br +.ti +2 +This comment is for t\. +.nf +.sp +\f[CB]module\fR InnerModuleA' : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +This comment is for InnerModuleA'\. +.nf +.sp +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA' = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t = InnerModuleA'\.t +.fi +.br +.ti +4 +This comment is for t\. +.nf + +.br +\f[CB]end\fR +.fi +.br +.ti +2 +This comment is for InnerModuleTypeA'\. +.nf + diff --git a/test/generators/man/Ocamlary.CollectionModule.InnerModuleA.InnerModuleA'.3o b/test/generators/man/Ocamlary.CollectionModule.InnerModuleA.InnerModuleA'.3o new file mode 100644 index 0000000000..e6f284b4a8 --- /dev/null +++ b/test/generators/man/Ocamlary.CollectionModule.InnerModuleA.InnerModuleA'.3o @@ -0,0 +1,23 @@ + +.TH InnerModuleA' 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.CollectionModule\.InnerModuleA\.InnerModuleA' +.SH Synopsis +.sp +.in 2 +\fBModule InnerModuleA\.InnerModuleA'\fR +.in +.sp +.fi +This comment is for InnerModuleA'\. +.nf +.SH Documentation +.sp +.nf +\f[CB]type\fR t = (unit, unit) a_function +.fi +.br +.ti +2 +This comment is for t\. +.nf + diff --git a/test/generators/man/Ocamlary.Dep1.3o b/test/generators/man/Ocamlary.Dep1.3o new file mode 100644 index 0000000000..4a2879ef32 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep1.3o @@ -0,0 +1,27 @@ + +.TH Dep1 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep1 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Dep1\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR +.br +.ti +2 +\f[CB]class\fR c : \f[CB]object\fR +.br +.ti +4 +\f[CB]method\fR m : int +.br +.ti +2 +\f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]module\fR X : \f[CB]sig\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Ocamlary.Dep1.X.3o b/test/generators/man/Ocamlary.Dep1.X.3o new file mode 100644 index 0000000000..16e8db107f --- /dev/null +++ b/test/generators/man/Ocamlary.Dep1.X.3o @@ -0,0 +1,14 @@ + +.TH X 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep1\.X +.SH Synopsis +.sp +.in 2 +\fBModule Dep1\.X\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR Y : S diff --git a/test/generators/man/Ocamlary.Dep1.X.Y.3o b/test/generators/man/Ocamlary.Dep1.X.Y.3o new file mode 100644 index 0000000000..5956cfd984 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep1.X.Y.3o @@ -0,0 +1,14 @@ + +.TH Y 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep1\.X\.Y +.SH Synopsis +.sp +.in 2 +\fBModule X\.Y\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]class\fR c : \f[CB]object\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Ocamlary.Dep1.X.Y.c.3o b/test/generators/man/Ocamlary.Dep1.X.Y.c.3o new file mode 100644 index 0000000000..f527e970bf --- /dev/null +++ b/test/generators/man/Ocamlary.Dep1.X.Y.c.3o @@ -0,0 +1,14 @@ + +.TH c 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep1\.X\.Y\.c +.SH Synopsis +.sp +.in 2 +\fBClass Y\.c\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]method\fR m : int diff --git a/test/generators/man/Ocamlary.Dep11.3o b/test/generators/man/Ocamlary.Dep11.3o new file mode 100644 index 0000000000..98c7cd0633 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep11.3o @@ -0,0 +1,25 @@ + +.TH Dep11 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep11 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Dep11\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR +.br +.ti +2 +\f[CB]class\fR c : \f[CB]object\fR +.br +.ti +4 +\f[CB]method\fR m : int +.br +.ti +2 +\f[CB]end\fR +.br +\f[CB]end\fR diff --git a/test/generators/man/Ocamlary.Dep12.3o b/test/generators/man/Ocamlary.Dep12.3o new file mode 100644 index 0000000000..4a98effeec --- /dev/null +++ b/test/generators/man/Ocamlary.Dep12.3o @@ -0,0 +1,30 @@ + +.TH Dep12 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep12 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Dep12\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Parameters\fR +.in +.sp +\f[CB]module\fR Arg : \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR \f[CB]type\fR S +.br +\f[CB]end\fR +.sp +.in 3 +\fB2 Signature\fR +.in +.sp +\f[CB]module\fR \f[CB]type\fR T = Arg\.S diff --git a/test/generators/man/Ocamlary.Dep13.3o b/test/generators/man/Ocamlary.Dep13.3o new file mode 100644 index 0000000000..6525039d68 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep13.3o @@ -0,0 +1,14 @@ + +.TH Dep13 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep13 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Dep13\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]class\fR c : \f[CB]object\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Ocamlary.Dep13.c.3o b/test/generators/man/Ocamlary.Dep13.c.3o new file mode 100644 index 0000000000..d598c51a12 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep13.c.3o @@ -0,0 +1,14 @@ + +.TH c 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep13\.c +.SH Synopsis +.sp +.in 2 +\fBClass Dep13\.c\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]method\fR m : int diff --git a/test/generators/man/Ocamlary.Dep2.3o b/test/generators/man/Ocamlary.Dep2.3o new file mode 100644 index 0000000000..f98b615563 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep2.3o @@ -0,0 +1,41 @@ + +.TH Dep2 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep2 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Dep2\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Parameters\fR +.in +.sp +\f[CB]module\fR Arg : \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR \f[CB]type\fR S +.sp +.ti +2 +\f[CB]module\fR X : \f[CB]sig\fR +.br +.ti +4 +\f[CB]module\fR Y : S +.br +.ti +2 +\f[CB]end\fR +.br +\f[CB]end\fR +.sp +.in 3 +\fB2 Signature\fR +.in +.sp +\f[CB]module\fR A : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR B = A\.Y diff --git a/test/generators/man/Ocamlary.Dep2.A.3o b/test/generators/man/Ocamlary.Dep2.A.3o new file mode 100644 index 0000000000..9ddd33f571 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep2.A.3o @@ -0,0 +1,14 @@ + +.TH A 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep2\.A +.SH Synopsis +.sp +.in 2 +\fBModule Dep2\.A\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR Y : Arg\.S diff --git a/test/generators/man/Ocamlary.Dep3.3o b/test/generators/man/Ocamlary.Dep3.3o new file mode 100644 index 0000000000..992b9ae1a6 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep3.3o @@ -0,0 +1,14 @@ + +.TH Dep3 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep3 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Dep3\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR a diff --git a/test/generators/man/Ocamlary.Dep4.3o b/test/generators/man/Ocamlary.Dep4.3o new file mode 100644 index 0000000000..0b1f87f222 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep4.3o @@ -0,0 +1,37 @@ + +.TH Dep4 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep4 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Dep4\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR T = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR b +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR X : \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR b +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 +\f[CB]module\fR Y : \f[CB]sig\fR \f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]module\fR X : T diff --git a/test/generators/man/Ocamlary.Dep4.X.3o b/test/generators/man/Ocamlary.Dep4.X.3o new file mode 100644 index 0000000000..616f6385f8 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep4.X.3o @@ -0,0 +1,14 @@ + +.TH X 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep4\.X +.SH Synopsis +.sp +.in 2 +\fBModule Dep4\.X\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR b diff --git a/test/generators/man/Ocamlary.Dep5.3o b/test/generators/man/Ocamlary.Dep5.3o new file mode 100644 index 0000000000..0f9a866b48 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep5.3o @@ -0,0 +1,45 @@ + +.TH Dep5 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep5 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Dep5\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Parameters\fR +.in +.sp +\f[CB]module\fR Arg : \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR \f[CB]type\fR T +.sp +.ti +2 +\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR +.br +.ti +4 +\f[CB]module\fR X : T +.sp +.ti +4 +\f[CB]module\fR Y : \f[CB]sig\fR \f[CB]end\fR +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 +\f[CB]module\fR X : T +.br +\f[CB]end\fR +.sp +.in 3 +\fB2 Signature\fR +.in +.sp +\f[CB]module\fR Z : Arg\.S \f[CB]with\fR \f[CB]module\fR Y = Dep3 diff --git a/test/generators/man/Ocamlary.Dep5.Z.3o b/test/generators/man/Ocamlary.Dep5.Z.3o new file mode 100644 index 0000000000..3eb354480f --- /dev/null +++ b/test/generators/man/Ocamlary.Dep5.Z.3o @@ -0,0 +1,16 @@ + +.TH Z 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep5\.Z +.SH Synopsis +.sp +.in 2 +\fBModule Dep5\.Z\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR X : Arg\.T +.sp +\f[CB]module\fR Y = Dep3 diff --git a/test/generators/man/Ocamlary.Dep6.3o b/test/generators/man/Ocamlary.Dep6.3o new file mode 100644 index 0000000000..e985f03975 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep6.3o @@ -0,0 +1,43 @@ + +.TH Dep6 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep6 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Dep6\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR d +.br +\f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR T = \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR \f[CB]type\fR R = \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR d +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 +\f[CB]module\fR Y : \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR d +.br +.ti +2 +\f[CB]end\fR +.br +\f[CB]end\fR +.sp +\f[CB]module\fR X : T diff --git a/test/generators/man/Ocamlary.Dep6.X.3o b/test/generators/man/Ocamlary.Dep6.X.3o new file mode 100644 index 0000000000..a1a1613f41 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep6.X.3o @@ -0,0 +1,21 @@ + +.TH X 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep6\.X +.SH Synopsis +.sp +.in 2 +\fBModule Dep6\.X\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR R = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR d +.br +\f[CB]end\fR +.sp +\f[CB]module\fR Y : R diff --git a/test/generators/man/Ocamlary.Dep6.X.Y.3o b/test/generators/man/Ocamlary.Dep6.X.Y.3o new file mode 100644 index 0000000000..ac2806bc60 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep6.X.Y.3o @@ -0,0 +1,14 @@ + +.TH Y 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep6\.X\.Y +.SH Synopsis +.sp +.in 2 +\fBModule X\.Y\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR d diff --git a/test/generators/man/Ocamlary.Dep7.3o b/test/generators/man/Ocamlary.Dep7.3o new file mode 100644 index 0000000000..3b459685e3 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep7.3o @@ -0,0 +1,54 @@ + +.TH Dep7 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep7 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Dep7\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Parameters\fR +.in +.sp +\f[CB]module\fR Arg : \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR \f[CB]type\fR S +.sp +.ti +2 +\f[CB]module\fR \f[CB]type\fR T = \f[CB]sig\fR +.br +.ti +4 +\f[CB]module\fR \f[CB]type\fR R = S +.sp +.ti +4 +\f[CB]module\fR Y : R +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 +\f[CB]module\fR X : \f[CB]sig\fR +.br +.ti +4 +\f[CB]module\fR \f[CB]type\fR R = S +.sp +.ti +4 +\f[CB]module\fR Y : R +.br +.ti +2 +\f[CB]end\fR +.br +\f[CB]end\fR +.sp +.in 3 +\fB2 Signature\fR +.in +.sp +\f[CB]module\fR M : Arg\.T diff --git a/test/generators/man/Ocamlary.Dep7.M.3o b/test/generators/man/Ocamlary.Dep7.M.3o new file mode 100644 index 0000000000..076536c2af --- /dev/null +++ b/test/generators/man/Ocamlary.Dep7.M.3o @@ -0,0 +1,16 @@ + +.TH M 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep7\.M +.SH Synopsis +.sp +.in 2 +\fBModule Dep7\.M\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR R = Arg\.S +.sp +\f[CB]module\fR Y : R diff --git a/test/generators/man/Ocamlary.Dep8.3o b/test/generators/man/Ocamlary.Dep8.3o new file mode 100644 index 0000000000..d0e12c2ab1 --- /dev/null +++ b/test/generators/man/Ocamlary.Dep8.3o @@ -0,0 +1,19 @@ + +.TH Dep8 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep8 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Dep8\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR T = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR diff --git a/test/generators/man/Ocamlary.Dep9.3o b/test/generators/man/Ocamlary.Dep9.3o new file mode 100644 index 0000000000..44ad83b7ca --- /dev/null +++ b/test/generators/man/Ocamlary.Dep9.3o @@ -0,0 +1,30 @@ + +.TH Dep9 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Dep9 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Dep9\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Parameters\fR +.in +.sp +\f[CB]module\fR X : \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR \f[CB]type\fR T +.br +\f[CB]end\fR +.sp +.in 3 +\fB2 Signature\fR +.in +.sp +\f[CB]module\fR \f[CB]type\fR T = X\.T diff --git a/test/generators/man/Ocamlary.DoubleInclude1.3o b/test/generators/man/Ocamlary.DoubleInclude1.3o new file mode 100644 index 0000000000..7ca794d2bd --- /dev/null +++ b/test/generators/man/Ocamlary.DoubleInclude1.3o @@ -0,0 +1,14 @@ + +.TH DoubleInclude1 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.DoubleInclude1 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.DoubleInclude1\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR DoubleInclude2 : \f[CB]sig\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Ocamlary.DoubleInclude1.DoubleInclude2.3o b/test/generators/man/Ocamlary.DoubleInclude1.DoubleInclude2.3o new file mode 100644 index 0000000000..6153fbc750 --- /dev/null +++ b/test/generators/man/Ocamlary.DoubleInclude1.DoubleInclude2.3o @@ -0,0 +1,14 @@ + +.TH DoubleInclude2 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.DoubleInclude1\.DoubleInclude2 +.SH Synopsis +.sp +.in 2 +\fBModule DoubleInclude1\.DoubleInclude2\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR double_include diff --git a/test/generators/man/Ocamlary.DoubleInclude3.3o b/test/generators/man/Ocamlary.DoubleInclude3.3o new file mode 100644 index 0000000000..3d95e5744f --- /dev/null +++ b/test/generators/man/Ocamlary.DoubleInclude3.3o @@ -0,0 +1,14 @@ + +.TH DoubleInclude3 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.DoubleInclude3 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.DoubleInclude3\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR DoubleInclude2 : \f[CB]sig\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Ocamlary.DoubleInclude3.DoubleInclude2.3o b/test/generators/man/Ocamlary.DoubleInclude3.DoubleInclude2.3o new file mode 100644 index 0000000000..5cf9e50c2f --- /dev/null +++ b/test/generators/man/Ocamlary.DoubleInclude3.DoubleInclude2.3o @@ -0,0 +1,14 @@ + +.TH DoubleInclude2 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.DoubleInclude3\.DoubleInclude2 +.SH Synopsis +.sp +.in 2 +\fBModule DoubleInclude3\.DoubleInclude2\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR double_include diff --git a/test/generators/man/Ocamlary.Empty.3o b/test/generators/man/Ocamlary.Empty.3o new file mode 100644 index 0000000000..3f510eac7c --- /dev/null +++ b/test/generators/man/Ocamlary.Empty.3o @@ -0,0 +1,21 @@ + +.TH Empty 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Empty +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Empty\fR +.in +.sp +.fi +A plain, empty module +.nf +.sp +.fi +This module has a signature without any members\. +.nf +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Ocamlary.ExtMod.3o b/test/generators/man/Ocamlary.ExtMod.3o new file mode 100644 index 0000000000..9c7c84e428 --- /dev/null +++ b/test/generators/man/Ocamlary.ExtMod.3o @@ -0,0 +1,21 @@ + +.TH ExtMod 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.ExtMod +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.ExtMod\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t = \.\. +.sp +\f[CB]type\fR t += +.br +.ti +2 +| \f[CB]Leisureforce\fR +.br + diff --git a/test/generators/man/Ocamlary.FunctorTypeOf.3o b/test/generators/man/Ocamlary.FunctorTypeOf.3o new file mode 100644 index 0000000000..00bf2514d2 --- /dev/null +++ b/test/generators/man/Ocamlary.FunctorTypeOf.3o @@ -0,0 +1,133 @@ + +.TH FunctorTypeOf 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.FunctorTypeOf +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.FunctorTypeOf\fR +.in +.sp +.fi +This comment is for FunctorTypeOf\. +.nf +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Parameters\fR +.in +.sp +\f[CB]module\fR Collection : \f[CB]sig\fR +.br +.ti +2 +.fi +This comment is for CollectionModule\. +.nf +.sp +.ti +2 +\f[CB]type\fR collection +.fi +.br +.ti +4 +This comment is for collection\. +.nf +.sp +.ti +2 +\f[CB]type\fR element +.sp +.ti +2 +\f[CB]module\fR InnerModuleA : \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR t = collection +.fi +.br +.ti +6 +This comment is for t\. +.nf +.sp +.ti +4 +\f[CB]module\fR InnerModuleA' : \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = (unit, unit) a_function +.fi +.br +.ti +8 +This comment is for t\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleA'\. +.nf +.sp +.ti +4 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA' = \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = InnerModuleA'\.t +.fi +.br +.ti +8 +This comment is for t\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleTypeA'\. +.nf + +.br +.ti +2 +\f[CB]end\fR +.fi +.br +.ti +4 +This comment is for InnerModuleA\. +.nf +.sp +.ti +2 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA = \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR t = InnerModuleA\.InnerModuleA'\.t +.fi +.br +.ti +6 +This comment is for t\. +.nf + +.br +.ti +2 +\f[CB]end\fR +.fi +.br +.ti +4 +This comment is for InnerModuleTypeA\. +.nf + +.br +\f[CB]end\fR +.sp +.in 3 +\fB2 Signature\fR +.in +.sp +\f[CB]type\fR t = Collection\.collection +.fi +.br +.ti +2 +This comment is for t\. +.nf + diff --git a/test/generators/man/Ocamlary.IncludeInclude1.3o b/test/generators/man/Ocamlary.IncludeInclude1.3o new file mode 100644 index 0000000000..d0ec139495 --- /dev/null +++ b/test/generators/man/Ocamlary.IncludeInclude1.3o @@ -0,0 +1,19 @@ + +.TH IncludeInclude1 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.IncludeInclude1 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.IncludeInclude1\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR IncludeInclude2 = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR include_include +.br +\f[CB]end\fR diff --git a/test/generators/man/Ocamlary.IncludedA.3o b/test/generators/man/Ocamlary.IncludedA.3o new file mode 100644 index 0000000000..4f4a99b9ce --- /dev/null +++ b/test/generators/man/Ocamlary.IncludedA.3o @@ -0,0 +1,14 @@ + +.TH IncludedA 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.IncludedA +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.IncludedA\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t diff --git a/test/generators/man/Ocamlary.M.3o b/test/generators/man/Ocamlary.M.3o new file mode 100644 index 0000000000..25aa116eec --- /dev/null +++ b/test/generators/man/Ocamlary.M.3o @@ -0,0 +1,14 @@ + +.TH M 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.M +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.M\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t diff --git a/test/generators/man/Ocamlary.ModuleWithSignature.3o b/test/generators/man/Ocamlary.ModuleWithSignature.3o new file mode 100644 index 0000000000..34fe1c591f --- /dev/null +++ b/test/generators/man/Ocamlary.ModuleWithSignature.3o @@ -0,0 +1,17 @@ + +.TH ModuleWithSignature 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.ModuleWithSignature +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.ModuleWithSignature\fR +.in +.sp +.fi +A plain module of a signature of \f[CI]EmptySig\fR (reference) +.nf +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Ocamlary.ModuleWithSignatureAlias.3o b/test/generators/man/Ocamlary.ModuleWithSignatureAlias.3o new file mode 100644 index 0000000000..2d96b605f1 --- /dev/null +++ b/test/generators/man/Ocamlary.ModuleWithSignatureAlias.3o @@ -0,0 +1,21 @@ + +.TH ModuleWithSignatureAlias 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.ModuleWithSignatureAlias +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.ModuleWithSignatureAlias\fR +.in +.sp +.fi +A plain module with an alias signature +.nf +.sp +.fi +@deprecated: I don't like this element any more\. +.nf +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Ocamlary.One.3o b/test/generators/man/Ocamlary.One.3o new file mode 100644 index 0000000000..03483ad448 --- /dev/null +++ b/test/generators/man/Ocamlary.One.3o @@ -0,0 +1,14 @@ + +.TH One 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.One +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.One\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR one diff --git a/test/generators/man/Ocamlary.Only_a_module.3o b/test/generators/man/Ocamlary.Only_a_module.3o new file mode 100644 index 0000000000..a253a22360 --- /dev/null +++ b/test/generators/man/Ocamlary.Only_a_module.3o @@ -0,0 +1,14 @@ + +.TH Only_a_module 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Only_a_module +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Only_a_module\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t diff --git a/test/generators/man/Ocamlary.Recollection.3o b/test/generators/man/Ocamlary.Recollection.3o new file mode 100644 index 0000000000..f3eb212adf --- /dev/null +++ b/test/generators/man/Ocamlary.Recollection.3o @@ -0,0 +1,161 @@ + +.TH Recollection 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Recollection +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.Recollection\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Parameters\fR +.in +.sp +\f[CB]module\fR C : \f[CB]sig\fR +.br +.ti +2 +.fi +This comment is for CollectionModule\. +.nf +.sp +.ti +2 +\f[CB]type\fR collection +.fi +.br +.ti +4 +This comment is for collection\. +.nf +.sp +.ti +2 +\f[CB]type\fR element +.sp +.ti +2 +\f[CB]module\fR InnerModuleA : \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR t = collection +.fi +.br +.ti +6 +This comment is for t\. +.nf +.sp +.ti +4 +\f[CB]module\fR InnerModuleA' : \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = (unit, unit) a_function +.fi +.br +.ti +8 +This comment is for t\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleA'\. +.nf +.sp +.ti +4 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA' = \f[CB]sig\fR +.br +.ti +6 +\f[CB]type\fR t = InnerModuleA'\.t +.fi +.br +.ti +8 +This comment is for t\. +.nf + +.br +.ti +4 +\f[CB]end\fR +.fi +.br +.ti +6 +This comment is for InnerModuleTypeA'\. +.nf + +.br +.ti +2 +\f[CB]end\fR +.fi +.br +.ti +4 +This comment is for InnerModuleA\. +.nf +.sp +.ti +2 +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA = \f[CB]sig\fR +.br +.ti +4 +\f[CB]type\fR t = InnerModuleA\.InnerModuleA'\.t +.fi +.br +.ti +6 +This comment is for t\. +.nf + +.br +.ti +2 +\f[CB]end\fR +.fi +.br +.ti +4 +This comment is for InnerModuleTypeA\. +.nf + +.br +\f[CB]end\fR +.sp +.in 3 +\fB2 Signature\fR +.in +.sp +.fi +This comment is for CollectionModule\. +.nf +.sp +\f[CB]type\fR collection = C\.element list +.fi +.br +.ti +2 +This comment is for collection\. +.nf +.sp +\f[CB]type\fR element = C\.collection +.sp +\f[CB]module\fR InnerModuleA : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +This comment is for InnerModuleA\. +.nf +.sp +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t = InnerModuleA\.InnerModuleA'\.t +.fi +.br +.ti +4 +This comment is for t\. +.nf + +.br +\f[CB]end\fR +.fi +.br +.ti +2 +This comment is for InnerModuleTypeA\. +.nf + diff --git a/test/generators/man/Ocamlary.Recollection.InnerModuleA.3o b/test/generators/man/Ocamlary.Recollection.InnerModuleA.3o new file mode 100644 index 0000000000..bd4bd42acc --- /dev/null +++ b/test/generators/man/Ocamlary.Recollection.InnerModuleA.3o @@ -0,0 +1,48 @@ + +.TH InnerModuleA 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Recollection\.InnerModuleA +.SH Synopsis +.sp +.in 2 +\fBModule Recollection\.InnerModuleA\fR +.in +.sp +.fi +This comment is for InnerModuleA\. +.nf +.SH Documentation +.sp +.nf +\f[CB]type\fR t = collection +.fi +.br +.ti +2 +This comment is for t\. +.nf +.sp +\f[CB]module\fR InnerModuleA' : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +This comment is for InnerModuleA'\. +.nf +.sp +\f[CB]module\fR \f[CB]type\fR InnerModuleTypeA' = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t = InnerModuleA'\.t +.fi +.br +.ti +4 +This comment is for t\. +.nf + +.br +\f[CB]end\fR +.fi +.br +.ti +2 +This comment is for InnerModuleTypeA'\. +.nf + diff --git a/test/generators/man/Ocamlary.Recollection.InnerModuleA.InnerModuleA'.3o b/test/generators/man/Ocamlary.Recollection.InnerModuleA.InnerModuleA'.3o new file mode 100644 index 0000000000..40b28c210b --- /dev/null +++ b/test/generators/man/Ocamlary.Recollection.InnerModuleA.InnerModuleA'.3o @@ -0,0 +1,23 @@ + +.TH InnerModuleA' 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.Recollection\.InnerModuleA\.InnerModuleA' +.SH Synopsis +.sp +.in 2 +\fBModule InnerModuleA\.InnerModuleA'\fR +.in +.sp +.fi +This comment is for InnerModuleA'\. +.nf +.SH Documentation +.sp +.nf +\f[CB]type\fR t = (unit, unit) a_function +.fi +.br +.ti +2 +This comment is for t\. +.nf + diff --git a/test/generators/man/Ocamlary.With10.3o b/test/generators/man/Ocamlary.With10.3o new file mode 100644 index 0000000000..40231b327c --- /dev/null +++ b/test/generators/man/Ocamlary.With10.3o @@ -0,0 +1,34 @@ + +.TH With10 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.With10 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.With10\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR T = \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR M : \f[CB]sig\fR +.br +.ti +4 +\f[CB]module\fR \f[CB]type\fR S +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 +\f[CB]module\fR N : M\.S +.br +\f[CB]end\fR +.fi +.br +.ti +2 +\f[CI]With10\.T\fR is a submodule type\. +.nf + diff --git a/test/generators/man/Ocamlary.With2.3o b/test/generators/man/Ocamlary.With2.3o new file mode 100644 index 0000000000..7ef2efd9ca --- /dev/null +++ b/test/generators/man/Ocamlary.With2.3o @@ -0,0 +1,19 @@ + +.TH With2 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.With2 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.With2\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR diff --git a/test/generators/man/Ocamlary.With3.3o b/test/generators/man/Ocamlary.With3.3o new file mode 100644 index 0000000000..d5fcd9dee3 --- /dev/null +++ b/test/generators/man/Ocamlary.With3.3o @@ -0,0 +1,16 @@ + +.TH With3 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.With3 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.With3\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR M = With2 +.sp +\f[CB]module\fR N : M\.S diff --git a/test/generators/man/Ocamlary.With3.N.3o b/test/generators/man/Ocamlary.With3.N.3o new file mode 100644 index 0000000000..6029ea88fd --- /dev/null +++ b/test/generators/man/Ocamlary.With3.N.3o @@ -0,0 +1,14 @@ + +.TH N 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.With3\.N +.SH Synopsis +.sp +.in 2 +\fBModule With3\.N\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t diff --git a/test/generators/man/Ocamlary.With4.3o b/test/generators/man/Ocamlary.With4.3o new file mode 100644 index 0000000000..597f37553f --- /dev/null +++ b/test/generators/man/Ocamlary.With4.3o @@ -0,0 +1,14 @@ + +.TH With4 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.With4 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.With4\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR N : With2\.S diff --git a/test/generators/man/Ocamlary.With4.N.3o b/test/generators/man/Ocamlary.With4.N.3o new file mode 100644 index 0000000000..af14b9b4bc --- /dev/null +++ b/test/generators/man/Ocamlary.With4.N.3o @@ -0,0 +1,14 @@ + +.TH N 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.With4\.N +.SH Synopsis +.sp +.in 2 +\fBModule With4\.N\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t diff --git a/test/generators/man/Ocamlary.With5.3o b/test/generators/man/Ocamlary.With5.3o new file mode 100644 index 0000000000..a2e03279a9 --- /dev/null +++ b/test/generators/man/Ocamlary.With5.3o @@ -0,0 +1,21 @@ + +.TH With5 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.With5 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.With5\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.sp +\f[CB]module\fR N : S diff --git a/test/generators/man/Ocamlary.With5.N.3o b/test/generators/man/Ocamlary.With5.N.3o new file mode 100644 index 0000000000..08f2a3da04 --- /dev/null +++ b/test/generators/man/Ocamlary.With5.N.3o @@ -0,0 +1,14 @@ + +.TH N 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.With5\.N +.SH Synopsis +.sp +.in 2 +\fBModule With5\.N\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t diff --git a/test/generators/man/Ocamlary.With6.3o b/test/generators/man/Ocamlary.With6.3o new file mode 100644 index 0000000000..09aa3b8f60 --- /dev/null +++ b/test/generators/man/Ocamlary.With6.3o @@ -0,0 +1,28 @@ + +.TH With6 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.With6 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.With6\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR T = \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR M : \f[CB]sig\fR +.br +.ti +4 +\f[CB]module\fR \f[CB]type\fR S +.sp +.ti +4 +\f[CB]module\fR N : S +.br +.ti +2 +\f[CB]end\fR +.br +\f[CB]end\fR diff --git a/test/generators/man/Ocamlary.With7.3o b/test/generators/man/Ocamlary.With7.3o new file mode 100644 index 0000000000..a3b5da44ae --- /dev/null +++ b/test/generators/man/Ocamlary.With7.3o @@ -0,0 +1,30 @@ + +.TH With7 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.With7 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.With7\fR +.in +.sp +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Parameters\fR +.in +.sp +\f[CB]module\fR X : \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR \f[CB]type\fR T +.br +\f[CB]end\fR +.sp +.in 3 +\fB2 Signature\fR +.in +.sp +\f[CB]module\fR \f[CB]type\fR T = X\.T diff --git a/test/generators/man/Ocamlary.With9.3o b/test/generators/man/Ocamlary.With9.3o new file mode 100644 index 0000000000..bd89f4f659 --- /dev/null +++ b/test/generators/man/Ocamlary.With9.3o @@ -0,0 +1,19 @@ + +.TH With9 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.With9 +.SH Synopsis +.sp +.in 2 +\fBModule Ocamlary\.With9\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR diff --git a/test/generators/man/Ocamlary.empty_class.3o b/test/generators/man/Ocamlary.empty_class.3o new file mode 100644 index 0000000000..e7cc088727 --- /dev/null +++ b/test/generators/man/Ocamlary.empty_class.3o @@ -0,0 +1,14 @@ + +.TH empty_class 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.empty_class +.SH Synopsis +.sp +.in 2 +\fBClass Ocamlary\.empty_class\fR +.in +.sp +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Ocamlary.one_method_class.3o b/test/generators/man/Ocamlary.one_method_class.3o new file mode 100644 index 0000000000..6394a24552 --- /dev/null +++ b/test/generators/man/Ocamlary.one_method_class.3o @@ -0,0 +1,14 @@ + +.TH one_method_class 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.one_method_class +.SH Synopsis +.sp +.in 2 +\fBClass Ocamlary\.one_method_class\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]method\fR go : unit diff --git a/test/generators/man/Ocamlary.param_class.3o b/test/generators/man/Ocamlary.param_class.3o new file mode 100644 index 0000000000..91da70435c --- /dev/null +++ b/test/generators/man/Ocamlary.param_class.3o @@ -0,0 +1,14 @@ + +.TH param_class 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.param_class +.SH Synopsis +.sp +.in 2 +\fBClass Ocamlary\.param_class\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]method\fR v : \f[CB]'a\fR diff --git a/test/generators/man/Ocamlary.two_method_class.3o b/test/generators/man/Ocamlary.two_method_class.3o new file mode 100644 index 0000000000..1ef89515a2 --- /dev/null +++ b/test/generators/man/Ocamlary.two_method_class.3o @@ -0,0 +1,16 @@ + +.TH two_method_class 3 "" "Odoc" "OCaml Library" +.SH Name +Ocamlary\.two_method_class +.SH Synopsis +.sp +.in 2 +\fBClass Ocamlary\.two_method_class\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]method\fR one : one_method_class +.sp +\f[CB]method\fR undo : unit diff --git a/test/generators/man/Recent.3o b/test/generators/man/Recent.3o new file mode 100644 index 0000000000..01af0e44d4 --- /dev/null +++ b/test/generators/man/Recent.3o @@ -0,0 +1,145 @@ + +.TH Recent 3 "" "Odoc" "OCaml Library" +.SH Name +Recent +.SH Synopsis +.sp +.in 2 +\fBModule Recent\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR \f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR S1 = \f[CB]sig\fR +.br +.ti +2 +.sp +.ti +2 +\fB1\.1 Parameters\fR +.sp +.ti +2 +\f[CB]module\fR _ : \f[CB]sig\fR \f[CB]end\fR +.sp +.ti +2 +\fB1\.2 Signature\fR +.sp +.ti +2 + +.br +\f[CB]end\fR +.sp +\f[CB]type\fR variant = +.br +.ti +2 +| \f[CB]A\fR +.br +.ti +2 +| \f[CB]B\fR \f[CB]of\fR int +.br +.ti +2 +| \f[CB]C\fR +.br +.ti +4 +(* foo *) +.br +.ti +2 +| \f[CB]D\fR +.br +.ti +4 +(* bar *) +.br +.ti +2 +| \f[CB]E\fR \f[CB]of\fR { +.br +.ti +6 +a : int; +.br +.ti +4 +} +.br +.sp +\f[CB]type\fR _ gadt = +.br +.ti +2 +| \f[CB]A\fR : int gadt +.br +.ti +2 +| \f[CB]B\fR : int \f[CB]\->\fR string gadt +.br +.ti +4 +(* foo *) +.br +.ti +2 +| \f[CB]C\fR : { +.br +.ti +6 +a : int; +.br +.ti +4 +} \f[CB]\->\fR unit gadt +.br +.sp +\f[CB]type\fR polymorphic_variant = [ +.br +.ti +2 +| `A +.br +.ti +2 +| `B \f[CB]of\fR int +.br +.ti +2 +| `C +.br +.ti +4 +(* foo *) +.br +.ti +2 +| `D +.br +.ti +4 +(* bar *) +.br + ] +.sp +\f[CB]type\fR empty_variant = | +.sp +\f[CB]type\fR \f[CB]nonrec\fR nonrec_ = int +.sp +\f[CB]type\fR empty_conj = +.br +.ti +2 +| \f[CB]X\fR : [< `X of & \f[CB]'a\fR & int * float ] \f[CB]\->\fR empty_conj +.br +.sp +\f[CB]type\fR conj = +.br +.ti +2 +| \f[CB]X\fR : [< `X of int & [< `B of int & float ] ] \f[CB]\->\fR conj +.br +.sp +\f[CB]val\fR empty_conj : [< `X of & \f[CB]'a\fR & int * float ] +.sp +\f[CB]val\fR conj : [< `X of int & [< `B of int & float ] ] +.sp +\f[CB]module\fR Z : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR X : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR \f[CB]type\fR PolyS = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t = [ +.br +.ti +4 +| `A +.br +.ti +4 +| `B +.br +.ti +2 + ] +.br +\f[CB]end\fR diff --git a/test/generators/man/Recent.X.3o b/test/generators/man/Recent.X.3o new file mode 100644 index 0000000000..06f2abc730 --- /dev/null +++ b/test/generators/man/Recent.X.3o @@ -0,0 +1,20 @@ + +.TH X 3 "" "Odoc" "OCaml Library" +.SH Name +Recent\.X +.SH Synopsis +.sp +.in 2 +\fBModule Recent\.X\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR L := Z\.Y +.sp +\f[CB]type\fR t = int Z\.Y\.X\.t +.sp +\f[CB]type\fR u := int +.sp +\f[CB]type\fR v = u Z\.Y\.X\.t diff --git a/test/generators/man/Recent.Z.3o b/test/generators/man/Recent.Z.3o new file mode 100644 index 0000000000..99ab198dd6 --- /dev/null +++ b/test/generators/man/Recent.Z.3o @@ -0,0 +1,14 @@ + +.TH Z 3 "" "Odoc" "OCaml Library" +.SH Name +Recent\.Z +.SH Synopsis +.sp +.in 2 +\fBModule Recent\.Z\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR Y : \f[CB]sig\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Recent.Z.Y.3o b/test/generators/man/Recent.Z.Y.3o new file mode 100644 index 0000000000..5c57797732 --- /dev/null +++ b/test/generators/man/Recent.Z.Y.3o @@ -0,0 +1,14 @@ + +.TH Y 3 "" "Odoc" "OCaml Library" +.SH Name +Recent\.Z\.Y +.SH Synopsis +.sp +.in 2 +\fBModule Z\.Y\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR X : \f[CB]sig\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Recent.Z.Y.X.3o b/test/generators/man/Recent.Z.Y.X.3o new file mode 100644 index 0000000000..ffce8470c6 --- /dev/null +++ b/test/generators/man/Recent.Z.Y.X.3o @@ -0,0 +1,14 @@ + +.TH X 3 "" "Odoc" "OCaml Library" +.SH Name +Recent\.Z\.Y\.X +.SH Synopsis +.sp +.in 2 +\fBModule Y\.X\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR 'a t diff --git a/test/generators/man/Recent_impl.3o b/test/generators/man/Recent_impl.3o new file mode 100644 index 0000000000..b28768d21d --- /dev/null +++ b/test/generators/man/Recent_impl.3o @@ -0,0 +1,50 @@ + +.TH Recent_impl 3 "" "Odoc" "OCaml Library" +.SH Name +Recent_impl +.SH Synopsis +.sp +.in 2 +\fBModule Recent_impl\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR Foo : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR B : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]type\fR u +.sp +\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR +.br +.ti +2 +\f[CB]module\fR F : \f[CB]sig\fR +.br +.ti +4 +.sp +.ti +4 +\fB1\.1 Parameters\fR +.sp +.ti +4 +\f[CB]module\fR _ : \f[CB]sig\fR \f[CB]end\fR +.sp +.ti +4 +\fB1\.2 Signature\fR +.sp +.ti +4 +\f[CB]type\fR t +.br +.ti +2 +\f[CB]end\fR +.sp +.ti +2 +\f[CB]module\fR X : \f[CB]sig\fR \f[CB]end\fR +.sp +.ti +2 +\f[CB]val\fR f : F(X)\.t +.br +\f[CB]end\fR +.sp +\f[CB]module\fR B' = Foo\.B diff --git a/test/generators/man/Recent_impl.B.3o b/test/generators/man/Recent_impl.B.3o new file mode 100644 index 0000000000..60192553b3 --- /dev/null +++ b/test/generators/man/Recent_impl.B.3o @@ -0,0 +1,19 @@ + +.TH B 3 "" "Odoc" "OCaml Library" +.SH Name +Recent_impl\.B +.SH Synopsis +.sp +.in 2 +\fBModule Recent_impl\.B\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t = +.br +.ti +2 +| \f[CB]B\fR +.br + diff --git a/test/generators/man/Recent_impl.Foo.3o b/test/generators/man/Recent_impl.Foo.3o new file mode 100644 index 0000000000..d62aae3122 --- /dev/null +++ b/test/generators/man/Recent_impl.Foo.3o @@ -0,0 +1,16 @@ + +.TH Foo 3 "" "Odoc" "OCaml Library" +.SH Name +Recent_impl\.Foo +.SH Synopsis +.sp +.in 2 +\fBModule Recent_impl\.Foo\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR A : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]module\fR B : \f[CB]sig\fR \.\.\. \f[CB]end\fR diff --git a/test/generators/man/Recent_impl.Foo.A.3o b/test/generators/man/Recent_impl.Foo.A.3o new file mode 100644 index 0000000000..d00172a39e --- /dev/null +++ b/test/generators/man/Recent_impl.Foo.A.3o @@ -0,0 +1,19 @@ + +.TH A 3 "" "Odoc" "OCaml Library" +.SH Name +Recent_impl\.Foo\.A +.SH Synopsis +.sp +.in 2 +\fBModule Foo\.A\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t = +.br +.ti +2 +| \f[CB]A\fR +.br + diff --git a/test/generators/man/Recent_impl.Foo.B.3o b/test/generators/man/Recent_impl.Foo.B.3o new file mode 100644 index 0000000000..a55449ac77 --- /dev/null +++ b/test/generators/man/Recent_impl.Foo.B.3o @@ -0,0 +1,19 @@ + +.TH B 3 "" "Odoc" "OCaml Library" +.SH Name +Recent_impl\.Foo\.B +.SH Synopsis +.sp +.in 2 +\fBModule Foo\.B\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t = +.br +.ti +2 +| \f[CB]B\fR +.br + diff --git a/test/generators/man/Section.3o b/test/generators/man/Section.3o new file mode 100644 index 0000000000..97a417d0f5 --- /dev/null +++ b/test/generators/man/Section.3o @@ -0,0 +1,63 @@ + +.TH Section 3 "" "Odoc" "OCaml Library" +.SH Name +Section +.SH Synopsis +.sp +.in 2 +\fBModule Section\fR +.in +.sp +.fi +This is the module comment\. Eventually, sections won't be allowed in it\. +.nf +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Empty section\fR +.in +.sp +.in 3 +\fB2 Text only\fR +.in +.sp +.fi +Foo bar\. +.nf +.sp +.in 3 +\fB3 Aside only\fR +.in +.sp +.fi +Foo bar\. +.nf +.sp +.in 3 +\fB4 Value only\fR +.in +.sp +\f[CB]val\fR foo : unit +.sp +.in 3 +\fB5 Empty section\fR +.in +.sp +.in 3 +\fB6 within a comment\fR +.in +.sp +.in 4 +\fB6\.1 and one with a nested section\fR +.in +.sp +.in 3 +\fB7 This section \fBtitle\fB has markup\fR +.in +.sp +.fi +But links are impossible thanks to the parser, so we never have trouble rendering a section title in a table of contents – no link will be nested inside another link\. +.nf + diff --git a/test/generators/man/Stop.3o b/test/generators/man/Stop.3o new file mode 100644 index 0000000000..42a52594d8 --- /dev/null +++ b/test/generators/man/Stop.3o @@ -0,0 +1,36 @@ + +.TH Stop 3 "" "Odoc" "OCaml Library" +.SH Name +Stop +.SH Synopsis +.sp +.in 2 +\fBModule Stop\fR +.in +.sp +.fi +This test cases exercises stop comments\. +.nf +.SH Documentation +.sp +.nf +\f[CB]val\fR foo : int +.fi +.br +.ti +2 +This is normal commented text\. +.nf +.sp +.fi +The next value is bar, and it should be missing from the documentation\. There is also an entire module, M, which should also be hidden\. It contains a nested stop comment, but that stop comment should not turn documentation back on in this outer module, because stop comments respect scope\. +.nf +.sp +.fi +Documentation is on again\. +.sp +Now, we have a nested module, and it has a stop comment between its two items\. We want to see that the first item is displayed, but the second is missing, and the stop comment disables documenation only in that module, and not in this outer module\. +.nf +.sp +\f[CB]module\fR N : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]val\fR lol : int diff --git a/test/generators/man/Stop.N.3o b/test/generators/man/Stop.N.3o new file mode 100644 index 0000000000..82ea4ec070 --- /dev/null +++ b/test/generators/man/Stop.N.3o @@ -0,0 +1,14 @@ + +.TH N 3 "" "Odoc" "OCaml Library" +.SH Name +Stop\.N +.SH Synopsis +.sp +.in 2 +\fBModule Stop\.N\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]val\fR quux : int diff --git a/test/generators/man/Stop_dead_link_doc.3o b/test/generators/man/Stop_dead_link_doc.3o new file mode 100644 index 0000000000..940e6594ca --- /dev/null +++ b/test/generators/man/Stop_dead_link_doc.3o @@ -0,0 +1,52 @@ + +.TH Stop_dead_link_doc 3 "" "Odoc" "OCaml Library" +.SH Name +Stop_dead_link_doc +.SH Synopsis +.sp +.in 2 +\fBModule Stop_dead_link_doc\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]module\fR Foo : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.sp +\f[CB]type\fR foo = +.br +.ti +2 +| \f[CB]Bar\fR \f[CB]of\fR Foo\.t +.br +.sp +\f[CB]type\fR bar = +.br +.ti +2 +| \f[CB]Bar\fR \f[CB]of\fR { +.br +.ti +6 +field : Foo\.t; +.br +.ti +4 +} +.br +.sp +\f[CB]type\fR foo_ = +.br +.ti +2 +| \f[CB]Bar_\fR \f[CB]of\fR int * Foo\.t * int +.br +.sp +\f[CB]type\fR bar_ = +.br +.ti +2 +| \f[CB]Bar__\fR \f[CB]of\fR Foo\.t option +.br +.sp +\f[CB]type\fR another_foo +.sp +\f[CB]type\fR another_bar +.sp +\f[CB]type\fR another_foo_ +.sp +\f[CB]type\fR another_bar_ diff --git a/test/generators/man/Stop_dead_link_doc.Foo.3o b/test/generators/man/Stop_dead_link_doc.Foo.3o new file mode 100644 index 0000000000..368d0545ff --- /dev/null +++ b/test/generators/man/Stop_dead_link_doc.Foo.3o @@ -0,0 +1,14 @@ + +.TH Foo 3 "" "Odoc" "OCaml Library" +.SH Name +Stop_dead_link_doc\.Foo +.SH Synopsis +.sp +.in 2 +\fBModule Stop_dead_link_doc\.Foo\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR t diff --git a/test/generators/man/Toplevel_comments.3o b/test/generators/man/Toplevel_comments.3o new file mode 100644 index 0000000000..9ee9a0b7cf --- /dev/null +++ b/test/generators/man/Toplevel_comments.3o @@ -0,0 +1,122 @@ + +.TH Toplevel_comments 3 "" "Odoc" "OCaml Library" +.SH Name +Toplevel_comments +.SH Synopsis +.sp +.in 2 +\fBModule Toplevel_comments\fR +.in +.sp +.fi +A doc comment at the beginning of a module is considered to be that module's doc\. +.nf +.SH Documentation +.sp +.nf +\f[CB]module\fR \f[CB]type\fR T = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.fi +.br +.ti +2 +Doc of T, part 1\. +.nf +.sp +\f[CB]module\fR Include_inline : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +Doc of T, part 2\. +.nf +.sp +\f[CB]module\fR Include_inline' : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +Doc of Include_inline, part 1\. +.nf +.sp +\f[CB]module\fR \f[CB]type\fR Include_inline_T = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.fi +.br +.ti +2 +Doc of T, part 2\. +.nf +.sp +\f[CB]module\fR \f[CB]type\fR Include_inline_T' = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.br +\f[CB]end\fR +.fi +.br +.ti +2 +Doc of Include_inline_T', part 1\. +.nf +.sp +\f[CB]module\fR M : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +Doc of M +.nf +.sp +\f[CB]module\fR M' : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +Doc of M' from outside +.nf +.sp +\f[CB]module\fR M'' : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +Doc of M'', part 1\. +.nf +.sp +\f[CB]module\fR Alias : T +.fi +.br +.ti +2 +Doc of Alias\. +.nf +.sp +\f[CB]class\fR c1 : int \f[CB]\->\fR \f[CB]object\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +Doc of c1, part 1\. +.nf +.sp +\f[CB]class\fR \f[CB]type\fR ct = \f[CB]object\fR \f[CB]end\fR +.fi +.br +.ti +2 +Doc of ct, part 1\. +.nf +.sp +\f[CB]class\fR c2 : ct +.fi +.br +.ti +2 +Doc of c2\. +.nf +.sp +\f[CB]module\fR Ref_in_synopsis : \f[CB]sig\fR \.\.\. \f[CB]end\fR +.fi +.br +.ti +2 +\f[CI]t\fR\. +.nf + diff --git a/test/generators/man/Toplevel_comments.Alias.3o b/test/generators/man/Toplevel_comments.Alias.3o new file mode 100644 index 0000000000..ef5d4214af --- /dev/null +++ b/test/generators/man/Toplevel_comments.Alias.3o @@ -0,0 +1,21 @@ + +.TH Alias 3 "" "Odoc" "OCaml Library" +.SH Name +Toplevel_comments\.Alias +.SH Synopsis +.sp +.in 2 +\fBModule Toplevel_comments\.Alias\fR +.in +.sp +.fi +Doc of Alias\. +.nf +.sp +.fi +Doc of T, part 2\. +.nf +.SH Documentation +.sp +.nf +\f[CB]type\fR t diff --git a/test/generators/man/Toplevel_comments.Include_inline'.3o b/test/generators/man/Toplevel_comments.Include_inline'.3o new file mode 100644 index 0000000000..e7905e7334 --- /dev/null +++ b/test/generators/man/Toplevel_comments.Include_inline'.3o @@ -0,0 +1,21 @@ + +.TH Include_inline' 3 "" "Odoc" "OCaml Library" +.SH Name +Toplevel_comments\.Include_inline' +.SH Synopsis +.sp +.in 2 +\fBModule Toplevel_comments\.Include_inline'\fR +.in +.sp +.fi +Doc of Include_inline, part 1\. +.nf +.sp +.fi +Doc of Include_inline, part 2\. +.nf +.SH Documentation +.sp +.nf +\f[CB]type\fR t diff --git a/test/generators/man/Toplevel_comments.Include_inline.3o b/test/generators/man/Toplevel_comments.Include_inline.3o new file mode 100644 index 0000000000..590da5b652 --- /dev/null +++ b/test/generators/man/Toplevel_comments.Include_inline.3o @@ -0,0 +1,17 @@ + +.TH Include_inline 3 "" "Odoc" "OCaml Library" +.SH Name +Toplevel_comments\.Include_inline +.SH Synopsis +.sp +.in 2 +\fBModule Toplevel_comments\.Include_inline\fR +.in +.sp +.fi +Doc of T, part 2\. +.nf +.SH Documentation +.sp +.nf +\f[CB]type\fR t diff --git a/test/generators/man/Toplevel_comments.M''.3o b/test/generators/man/Toplevel_comments.M''.3o new file mode 100644 index 0000000000..854b93a0e5 --- /dev/null +++ b/test/generators/man/Toplevel_comments.M''.3o @@ -0,0 +1,21 @@ + +.TH M'' 3 "" "Odoc" "OCaml Library" +.SH Name +Toplevel_comments\.M'' +.SH Synopsis +.sp +.in 2 +\fBModule Toplevel_comments\.M''\fR +.in +.sp +.fi +Doc of M'', part 1\. +.nf +.sp +.fi +Doc of M'', part 2\. +.nf +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Toplevel_comments.M'.3o b/test/generators/man/Toplevel_comments.M'.3o new file mode 100644 index 0000000000..dd487b1a1b --- /dev/null +++ b/test/generators/man/Toplevel_comments.M'.3o @@ -0,0 +1,17 @@ + +.TH M' 3 "" "Odoc" "OCaml Library" +.SH Name +Toplevel_comments\.M' +.SH Synopsis +.sp +.in 2 +\fBModule Toplevel_comments\.M'\fR +.in +.sp +.fi +Doc of M' from outside +.nf +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Toplevel_comments.M.3o b/test/generators/man/Toplevel_comments.M.3o new file mode 100644 index 0000000000..588b2a9b74 --- /dev/null +++ b/test/generators/man/Toplevel_comments.M.3o @@ -0,0 +1,17 @@ + +.TH M 3 "" "Odoc" "OCaml Library" +.SH Name +Toplevel_comments\.M +.SH Synopsis +.sp +.in 2 +\fBModule Toplevel_comments\.M\fR +.in +.sp +.fi +Doc of M +.nf +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Toplevel_comments.Ref_in_synopsis.3o b/test/generators/man/Toplevel_comments.Ref_in_synopsis.3o new file mode 100644 index 0000000000..a9fa105994 --- /dev/null +++ b/test/generators/man/Toplevel_comments.Ref_in_synopsis.3o @@ -0,0 +1,21 @@ + +.TH Ref_in_synopsis 3 "" "Odoc" "OCaml Library" +.SH Name +Toplevel_comments\.Ref_in_synopsis +.SH Synopsis +.sp +.in 2 +\fBModule Toplevel_comments\.Ref_in_synopsis\fR +.in +.sp +.fi +\f[CI]t\fR\. +.nf +.sp +.fi +This reference should resolve in the context of this module, even when used as a synopsis\. +.nf +.SH Documentation +.sp +.nf +\f[CB]type\fR t diff --git a/test/generators/man/Toplevel_comments.c1.3o b/test/generators/man/Toplevel_comments.c1.3o new file mode 100644 index 0000000000..66e5ee9be6 --- /dev/null +++ b/test/generators/man/Toplevel_comments.c1.3o @@ -0,0 +1,21 @@ + +.TH c1 3 "" "Odoc" "OCaml Library" +.SH Name +Toplevel_comments\.c1 +.SH Synopsis +.sp +.in 2 +\fBClass Toplevel_comments\.c1\fR +.in +.sp +.fi +Doc of c1, part 1\. +.nf +.sp +.fi +Doc of c1, part 2\. +.nf +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Toplevel_comments.c2.3o b/test/generators/man/Toplevel_comments.c2.3o new file mode 100644 index 0000000000..8ed599093f --- /dev/null +++ b/test/generators/man/Toplevel_comments.c2.3o @@ -0,0 +1,21 @@ + +.TH c2 3 "" "Odoc" "OCaml Library" +.SH Name +Toplevel_comments\.c2 +.SH Synopsis +.sp +.in 2 +\fBClass Toplevel_comments\.c2\fR +.in +.sp +.fi +Doc of c2\. +.nf +.sp +.fi +Doc of ct, part 2\. +.nf +.SH Documentation +.sp +.nf + diff --git a/test/generators/man/Type.3o b/test/generators/man/Type.3o new file mode 100644 index 0000000000..153bb8f321 --- /dev/null +++ b/test/generators/man/Type.3o @@ -0,0 +1,257 @@ + +.TH Type 3 "" "Odoc" "OCaml Library" +.SH Name +Type +.SH Synopsis +.sp +.in 2 +\fBModule Type\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]type\fR abstract +.fi +.br +.ti +2 +Some documentation\. +.nf +.sp +\f[CB]type\fR alias = int +.sp +\f[CB]type\fR private_ = \f[CB]private\fR int +.sp +\f[CB]type\fR 'a constructor = \f[CB]'a\fR +.sp +\f[CB]type\fR arrow = int \f[CB]\->\fR int +.sp +\f[CB]type\fR higher_order = (int \f[CB]\->\fR int) \f[CB]\->\fR int +.sp +\f[CB]type\fR labeled = l:int \f[CB]\->\fR int +.sp +\f[CB]type\fR optional = ?l:int \f[CB]\->\fR int +.sp +\f[CB]type\fR labeled_higher_order = (l:int \f[CB]\->\fR int) \f[CB]\->\fR (?l:int \f[CB]\->\fR int) \f[CB]\->\fR int +.sp +\f[CB]type\fR pair = int * int +.sp +\f[CB]type\fR parens_dropped = int * int +.sp +\f[CB]type\fR triple = int * int * int +.sp +\f[CB]type\fR nested_pair = (int * int) * int +.sp +\f[CB]type\fR instance = int constructor +.sp +\f[CB]type\fR long = labeled_higher_order \f[CB]\->\fR [ `Bar | `Baz of triple ] \f[CB]\->\fR pair \f[CB]\->\fR labeled \f[CB]\->\fR higher_order \f[CB]\->\fR (string \f[CB]\->\fR int) \f[CB]\->\fR (int, float, char, string, char, unit) CamlinternalFormatBasics\.fmtty \f[CB]\->\fR nested_pair \f[CB]\->\fR arrow \f[CB]\->\fR string \f[CB]\->\fR nested_pair array +.sp +\f[CB]type\fR variant_e = { +.br +.ti +2 +a : int; +.br +} +.sp +\f[CB]type\fR variant = +.br +.ti +2 +| \f[CB]A\fR +.br +.ti +2 +| \f[CB]B\fR \f[CB]of\fR int +.br +.ti +2 +| \f[CB]C\fR +.br +.ti +4 +(* foo *) +.br +.ti +2 +| \f[CB]D\fR +.br +.ti +4 +(* bar *) +.br +.ti +2 +| \f[CB]E\fR \f[CB]of\fR variant_e +.br +.sp +\f[CB]type\fR variant_c = { +.br +.ti +2 +a : int; +.br +} +.sp +\f[CB]type\fR _ gadt = +.br +.ti +2 +| \f[CB]A\fR : int gadt +.br +.ti +2 +| \f[CB]B\fR : int \f[CB]\->\fR string gadt +.br +.ti +2 +| \f[CB]C\fR : variant_c \f[CB]\->\fR unit gadt +.br +.sp +\f[CB]type\fR degenerate_gadt = +.br +.ti +2 +| \f[CB]A\fR : degenerate_gadt +.br +.sp +\f[CB]type\fR private_variant = \f[CB]private\fR +.br +.ti +2 +| \f[CB]A\fR +.br +.sp +\f[CB]type\fR record = { +.br +.ti +2 +a : int; +.br +.ti +2 +\f[CB]mutable\fR b : int; +.br +.ti +2 +c : int; +.br +.ti +4 +(* foo *) +.br +.ti +2 +d : int; +.br +.ti +4 +(* bar *) +.br +.ti +2 +e : a\. \f[CB]'a\fR; +.br +} +.sp +\f[CB]type\fR polymorphic_variant = [ +.br +.ti +2 +| `A +.br +.ti +2 +| `B \f[CB]of\fR int +.br +.ti +2 +| `C \f[CB]of\fR int * unit +.br +.ti +2 +| `D +.br + ] +.sp +\f[CB]type\fR polymorphic_variant_extension = [ +.br +.ti +2 +| polymorphic_variant +.br +.ti +2 +| `E +.br + ] +.sp +\f[CB]type\fR nested_polymorphic_variant = [ +.br +.ti +2 +| `A \f[CB]of\fR [ `B | `C ] +.br + ] +.sp +\f[CB]type\fR private_extenion#row +.sp +\f[CB]and\fR private_extenion = \f[CB]private\fR [> +.br +.ti +2 +| polymorphic_variant +.br + ] +.sp +\f[CB]type\fR object_ = < a : int; b : int; c : int; > +.sp +\f[CB]module\fR \f[CB]type\fR X = \f[CB]sig\fR +.br +.ti +2 +\f[CB]type\fR t +.sp +.ti +2 +\f[CB]type\fR u +.br +\f[CB]end\fR +.sp +\f[CB]type\fR module_ = (\f[CB]module\fR X) +.sp +\f[CB]type\fR module_substitution = (\f[CB]module\fR X \f[CB]with\fR \f[CB]type\fR t = int \f[CB]and\fR \f[CB]type\fR u = unit) +.sp +\f[CB]type\fR +'a covariant +.sp +\f[CB]type\fR -'a contravariant +.sp +\f[CB]type\fR _ bivariant = int +.sp +\f[CB]type\fR ('a, 'b) binary +.sp +\f[CB]type\fR using_binary = (int, int) binary +.sp +\f[CB]type\fR 'custom name +.sp +\f[CB]type\fR 'a constrained = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = int +.sp +\f[CB]type\fR 'a exact_variant = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = [ `A | `B of int ] +.sp +\f[CB]type\fR 'a lower_variant = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = [> `A | `B of int ] +.sp +\f[CB]type\fR 'a any_variant = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = [> ] +.sp +\f[CB]type\fR 'a upper_variant = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = [< `A | `B of int ] +.sp +\f[CB]type\fR 'a named_variant = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = [< polymorphic_variant ] +.sp +\f[CB]type\fR 'a exact_object = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = < a : int; b : int; > +.sp +\f[CB]type\fR 'a lower_object = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = < a : int; b : int; \.\. > +.sp +\f[CB]type\fR 'a poly_object = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = < a : a\. \f[CB]'a\fR; > +.sp +\f[CB]type\fR ('a, 'b) double_constrained = \f[CB]'a\fR * \f[CB]'b\fR \f[CB]constraint\fR \f[CB]'a\fR = int \f[CB]constraint\fR \f[CB]'b\fR = unit +.sp +\f[CB]type\fR as_ = int \f[CB]as\fR 'a * \f[CB]'a\fR +.sp +\f[CB]type\fR extensible = \.\. +.sp +\f[CB]type\fR extensible += +.br +.ti +2 +| \f[CB]Extension\fR +.br +.ti +4 +(* Documentation for \f[CI]Extension\fR\. *) +.br +.ti +2 +| \f[CB]Another_extension\fR +.br +.ti +4 +(* Documentation for \f[CI]Another_extension\fR\. *) +.br +.sp +\f[CB]type\fR mutually = +.br +.ti +2 +| \f[CB]A\fR \f[CB]of\fR recursive +.br +.sp +\f[CB]and\fR recursive = +.br +.ti +2 +| \f[CB]B\fR \f[CB]of\fR mutually +.br +.sp +\f[CB]exception\fR \f[CB]Foo\fR \f[CB]of\fR int * int diff --git a/test/generators/man/Val.3o b/test/generators/man/Val.3o new file mode 100644 index 0000000000..06a71ffaff --- /dev/null +++ b/test/generators/man/Val.3o @@ -0,0 +1,29 @@ + +.TH Val 3 "" "Odoc" "OCaml Library" +.SH Name +Val +.SH Synopsis +.sp +.in 2 +\fBModule Val\fR +.in +.sp +.SH Documentation +.sp +.nf +\f[CB]val\fR documented : unit +.fi +.br +.ti +2 +Foo\. +.nf +.sp +\f[CB]val\fR undocumented : unit +.sp +\f[CB]val\fR documented_above : unit +.fi +.br +.ti +2 +Bar\. +.nf + diff --git a/test/generators/man/alias.targets b/test/generators/man/alias.targets new file mode 100644 index 0000000000..95a320950d --- /dev/null +++ b/test/generators/man/alias.targets @@ -0,0 +1,3 @@ +Alias.3o +Alias.Foo__X.3o +Alias.X.3o diff --git a/test/generators/man/bugs.targets b/test/generators/man/bugs.targets new file mode 100644 index 0000000000..39827b1868 --- /dev/null +++ b/test/generators/man/bugs.targets @@ -0,0 +1 @@ +Bugs.3o diff --git a/test/generators/man/bugs_post_406.targets b/test/generators/man/bugs_post_406.targets new file mode 100644 index 0000000000..86c4657323 --- /dev/null +++ b/test/generators/man/bugs_post_406.targets @@ -0,0 +1,2 @@ +Bugs_post_406.3o +Bugs_post_406.let_open'.3o diff --git a/test/generators/man/bugs_pre_410.targets b/test/generators/man/bugs_pre_410.targets new file mode 100644 index 0000000000..9d8b761b46 --- /dev/null +++ b/test/generators/man/bugs_pre_410.targets @@ -0,0 +1 @@ +Bugs_pre_410.3o diff --git a/test/generators/man/class.targets b/test/generators/man/class.targets new file mode 100644 index 0000000000..9b224aac95 --- /dev/null +++ b/test/generators/man/class.targets @@ -0,0 +1,5 @@ +Class.3o +Class.mutually'.3o +Class.recursive'.3o +Class.empty_virtual'.3o +Class.polymorphic'.3o diff --git a/test/generators/man/external.targets b/test/generators/man/external.targets new file mode 100644 index 0000000000..f5a40907d2 --- /dev/null +++ b/test/generators/man/external.targets @@ -0,0 +1 @@ +External.3o diff --git a/test/generators/man/functor.targets b/test/generators/man/functor.targets new file mode 100644 index 0000000000..8e9db29041 --- /dev/null +++ b/test/generators/man/functor.targets @@ -0,0 +1,6 @@ +Functor.3o +Functor.F1.3o +Functor.F2.3o +Functor.F3.3o +Functor.F4.3o +Functor.F5.3o diff --git a/test/generators/man/functor2.targets b/test/generators/man/functor2.targets new file mode 100644 index 0000000000..1e5d51b4a7 --- /dev/null +++ b/test/generators/man/functor2.targets @@ -0,0 +1,2 @@ +Functor2.3o +Functor2.X.3o diff --git a/test/generators/man/include.targets b/test/generators/man/include.targets new file mode 100644 index 0000000000..736593b295 --- /dev/null +++ b/test/generators/man/include.targets @@ -0,0 +1 @@ +Include.3o diff --git a/test/generators/man/include2.targets b/test/generators/man/include2.targets new file mode 100644 index 0000000000..ad0fdac9b0 --- /dev/null +++ b/test/generators/man/include2.targets @@ -0,0 +1,5 @@ +Include2.3o +Include2.X.3o +Include2.Y.3o +Include2.Y_include_synopsis.3o +Include2.Y_include_doc.3o diff --git a/test/generators/man/include_sections.targets b/test/generators/man/include_sections.targets new file mode 100644 index 0000000000..b7927c0937 --- /dev/null +++ b/test/generators/man/include_sections.targets @@ -0,0 +1 @@ +Include_sections.3o diff --git a/test/generators/man/interlude.targets b/test/generators/man/interlude.targets new file mode 100644 index 0000000000..c300ec631f --- /dev/null +++ b/test/generators/man/interlude.targets @@ -0,0 +1 @@ +Interlude.3o diff --git a/test/generators/man/labels.targets b/test/generators/man/labels.targets new file mode 100644 index 0000000000..093cd44447 --- /dev/null +++ b/test/generators/man/labels.targets @@ -0,0 +1,3 @@ +Labels.3o +Labels.A.3o +Labels.c.3o diff --git a/test/generators/man/markup.targets b/test/generators/man/markup.targets new file mode 100644 index 0000000000..7b800d6134 --- /dev/null +++ b/test/generators/man/markup.targets @@ -0,0 +1 @@ +Markup.3o diff --git a/test/generators/man/mld.3o b/test/generators/man/mld.3o new file mode 100644 index 0000000000..003c22a198 --- /dev/null +++ b/test/generators/man/mld.3o @@ -0,0 +1,63 @@ + +.TH mld 3 "" "Odoc" "OCaml Library" +.SH Name +mld +.SH Synopsis +.sp +.in 2 +\fBMld Page\fR +.in +.sp +.fi +This is an \.mld file\. It doesn't have an auto-generated title, like modules and other pages generated fully by odoc do\. +.sp +It will have a TOC generated from section headings\. +.nf +.SH Documentation +.sp +.nf +.sp +.in 3 +\fB1 Section\fR +.in +.sp +.fi +This is a section\. +.sp +Another paragraph in section\. +.nf +.sp +.in 3 +\fB2 Another section\fR +.in +.sp +.fi +This is another section\. +.sp +Another paragraph in section 2\. +.nf +.sp +.in 4 +\fB2\.1 Subsection\fR +.in +.sp +.fi +This is a subsection\. +.sp +Another paragraph in subsection\. +.sp +Yet another paragraph in subsection\. +.nf +.sp +.in 4 +\fB2\.2 Another Subsection\fR +.in +.sp +.fi +This is another subsection\. +.sp +Another paragraph in subsection 2\. +.sp +Yet another paragraph in subsection 2\. +.nf + diff --git a/test/generators/man/module.targets b/test/generators/man/module.targets new file mode 100644 index 0000000000..4b806abd69 --- /dev/null +++ b/test/generators/man/module.targets @@ -0,0 +1,4 @@ +Module.3o +Module.M'.3o +Module.Mutually.3o +Module.Recursive.3o diff --git a/test/generators/man/nested.targets b/test/generators/man/nested.targets new file mode 100644 index 0000000000..de9e50918c --- /dev/null +++ b/test/generators/man/nested.targets @@ -0,0 +1,5 @@ +Nested.3o +Nested.X.3o +Nested.F.3o +Nested.z.3o +Nested.inherits.3o diff --git a/test/generators/man/ocamlary.targets b/test/generators/man/ocamlary.targets new file mode 100644 index 0000000000..cc49012d77 --- /dev/null +++ b/test/generators/man/ocamlary.targets @@ -0,0 +1,85 @@ +Ocamlary.3o +Ocamlary.Empty.3o +Ocamlary.ModuleWithSignature.3o +Ocamlary.ModuleWithSignatureAlias.3o +Ocamlary.One.3o +Ocamlary.Buffer.3o +Ocamlary.CollectionModule.3o +Ocamlary.CollectionModule.InnerModuleA.3o +Ocamlary.CollectionModule.InnerModuleA.InnerModuleA'.3o +Ocamlary.Recollection.3o +Ocamlary.Recollection.InnerModuleA.3o +Ocamlary.Recollection.InnerModuleA.InnerModuleA'.3o +Ocamlary.FunctorTypeOf.3o +Ocamlary.IncludedA.3o +Ocamlary.ExtMod.3o +Ocamlary.empty_class.3o +Ocamlary.one_method_class.3o +Ocamlary.two_method_class.3o +Ocamlary.param_class.3o +Ocamlary.Dep1.3o +Ocamlary.Dep1.X.3o +Ocamlary.Dep1.X.Y.3o +Ocamlary.Dep1.X.Y.c.3o +Ocamlary.Dep2.3o +Ocamlary.Dep2.A.3o +Ocamlary.Dep3.3o +Ocamlary.Dep4.3o +Ocamlary.Dep4.X.3o +Ocamlary.Dep5.3o +Ocamlary.Dep5.Z.3o +Ocamlary.Dep6.3o +Ocamlary.Dep6.X.3o +Ocamlary.Dep6.X.Y.3o +Ocamlary.Dep7.3o +Ocamlary.Dep7.M.3o +Ocamlary.Dep8.3o +Ocamlary.Dep9.3o +Ocamlary.Dep11.3o +Ocamlary.Dep12.3o +Ocamlary.Dep13.3o +Ocamlary.Dep13.c.3o +Ocamlary.With2.3o +Ocamlary.With3.3o +Ocamlary.With3.N.3o +Ocamlary.With4.3o +Ocamlary.With4.N.3o +Ocamlary.With5.3o +Ocamlary.With5.N.3o +Ocamlary.With6.3o +Ocamlary.With7.3o +Ocamlary.With9.3o +Ocamlary.With10.3o +Ocamlary.DoubleInclude1.3o +Ocamlary.DoubleInclude1.DoubleInclude2.3o +Ocamlary.DoubleInclude3.3o +Ocamlary.DoubleInclude3.DoubleInclude2.3o +Ocamlary.IncludeInclude1.3o +Ocamlary.CanonicalTest.3o +Ocamlary.CanonicalTest.Base__List.3o +Ocamlary.CanonicalTest.Base__.3o +Ocamlary.CanonicalTest.Base.3o +Ocamlary.CanonicalTest.Base.List.3o +Ocamlary.CanonicalTest.Base__Tests.3o +Ocamlary.CanonicalTest.Base__Tests.C.3o +Ocamlary.CanonicalTest.List_modif.3o +Ocamlary.Aliases.3o +Ocamlary.Aliases.Foo__A.3o +Ocamlary.Aliases.Foo__B.3o +Ocamlary.Aliases.Foo__C.3o +Ocamlary.Aliases.Foo__D.3o +Ocamlary.Aliases.Foo__E.3o +Ocamlary.Aliases.Foo__.3o +Ocamlary.Aliases.Foo.3o +Ocamlary.Aliases.Foo.A.3o +Ocamlary.Aliases.Foo.B.3o +Ocamlary.Aliases.Foo.C.3o +Ocamlary.Aliases.Foo.D.3o +Ocamlary.Aliases.Foo.E.3o +Ocamlary.Aliases.Std.3o +Ocamlary.Aliases.E.3o +Ocamlary.Aliases.P1.3o +Ocamlary.Aliases.P1.Y.3o +Ocamlary.Aliases.P2.3o +Ocamlary.M.3o +Ocamlary.Only_a_module.3o diff --git a/test/generators/man/page-mld.targets b/test/generators/man/page-mld.targets new file mode 100644 index 0000000000..ae9499f66d --- /dev/null +++ b/test/generators/man/page-mld.targets @@ -0,0 +1 @@ +mld.3o diff --git a/test/generators/man/recent.targets b/test/generators/man/recent.targets new file mode 100644 index 0000000000..e0efe4d443 --- /dev/null +++ b/test/generators/man/recent.targets @@ -0,0 +1,5 @@ +Recent.3o +Recent.Z.3o +Recent.Z.Y.3o +Recent.Z.Y.X.3o +Recent.X.3o diff --git a/test/generators/man/recent_impl.targets b/test/generators/man/recent_impl.targets new file mode 100644 index 0000000000..c65cc36947 --- /dev/null +++ b/test/generators/man/recent_impl.targets @@ -0,0 +1,5 @@ +Recent_impl.3o +Recent_impl.Foo.3o +Recent_impl.Foo.A.3o +Recent_impl.Foo.B.3o +Recent_impl.B.3o diff --git a/test/generators/man/section.targets b/test/generators/man/section.targets new file mode 100644 index 0000000000..fc475846cd --- /dev/null +++ b/test/generators/man/section.targets @@ -0,0 +1 @@ +Section.3o diff --git a/test/generators/man/stop.targets b/test/generators/man/stop.targets new file mode 100644 index 0000000000..f10f4cdcf3 --- /dev/null +++ b/test/generators/man/stop.targets @@ -0,0 +1,2 @@ +Stop.3o +Stop.N.3o diff --git a/test/generators/man/stop_dead_link_doc.targets b/test/generators/man/stop_dead_link_doc.targets new file mode 100644 index 0000000000..77ef5f02dc --- /dev/null +++ b/test/generators/man/stop_dead_link_doc.targets @@ -0,0 +1,2 @@ +Stop_dead_link_doc.3o +Stop_dead_link_doc.Foo.3o diff --git a/test/generators/man/toplevel_comments.targets b/test/generators/man/toplevel_comments.targets new file mode 100644 index 0000000000..ea2909b1c5 --- /dev/null +++ b/test/generators/man/toplevel_comments.targets @@ -0,0 +1,10 @@ +Toplevel_comments.3o +Toplevel_comments.Include_inline.3o +Toplevel_comments.Include_inline'.3o +Toplevel_comments.M.3o +Toplevel_comments.M'.3o +Toplevel_comments.M''.3o +Toplevel_comments.Alias.3o +Toplevel_comments.c1.3o +Toplevel_comments.c2.3o +Toplevel_comments.Ref_in_synopsis.3o diff --git a/test/generators/man/type.targets b/test/generators/man/type.targets new file mode 100644 index 0000000000..88ed8748e7 --- /dev/null +++ b/test/generators/man/type.targets @@ -0,0 +1 @@ +Type.3o diff --git a/test/generators/man/val.targets b/test/generators/man/val.targets new file mode 100644 index 0000000000..c1b51f8382 --- /dev/null +++ b/test/generators/man/val.targets @@ -0,0 +1 @@ +Val.3o From ac20b177f4c0aa47ea2ba7b70c27b09f73592087 Mon Sep 17 00:00:00 2001 From: lubegasimon Date: Tue, 6 Jul 2021 19:20:30 +0300 Subject: [PATCH 7/8] modify Makefile Signed-off-by: lubegasimon --- Makefile | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 32500435cb..a85321b3e9 100644 --- a/Makefile +++ b/Makefile @@ -38,12 +38,7 @@ serve : .PHONY : test test : build - $(DUNE) runtest $(DUNE_ARGS) src/parser/test - $(DUNE) build $(DUNE_ARGS) @test/model/runtest --no-buffer -j 1 - $(DUNE) build $(DUNE_ARGS) @test/html/runtest --no-buffer -j 1 - $(DUNE) build $(DUNE_ARGS) @test/man/runtest --no-buffer -j 1 - $(DUNE) build $(DUNE_ARGS) @test/latex/runtest --no-buffer -j 1 - $(DUNE) build $(DUNE_ARGS) @test/xref2/runtest --no-buffer -j 1 + $(DUNE) runtest $(DUNE_ARGS) ODOC_RELATIVE_PATH := ../../_build/install/default/bin/ From 1627769cfffdf2c97697bd70812ac8acf2ccbaf3 Mon Sep 17 00:00:00 2001 From: lubegasimon Date: Tue, 6 Jul 2021 19:21:16 +0300 Subject: [PATCH 8/8] rm test/{html,latex, man, and cases} Signed-off-by: lubegasimon --- test/cases/.ocamlformat | 1 - test/cases/alias.ml | 7 - test/cases/bugs.ml | 5 - test/cases/bugs_post_406.mli | 10 - test/cases/bugs_pre_410.ml | 6 - test/cases/class.mli | 26 - test/cases/external.mli | 2 - test/cases/functor.mli | 19 - test/cases/functor2.mli | 15 - test/cases/include.mli | 48 - test/cases/include2.ml | 24 - test/cases/include_sections.mli | 41 - test/cases/interlude.mli | 21 - test/cases/labels.mli | 58 - test/cases/markup.mli | 179 -- test/cases/mld.mld | 34 - test/cases/module.mli | 44 - test/cases/module_type_subst.mli | 68 - test/cases/nested.mli | 84 - test/cases/ocamlary.mli | 1 - test/cases/recent.mli | 58 - test/cases/recent_impl.ml | 29 - test/cases/section.mli | 30 - test/cases/stop.mli | 42 - test/cases/stop_dead_link_doc.mli | 27 - test/cases/toplevel_comments.mli | 81 - test/cases/type.mli | 138 -- test/cases/val.mli | 7 - test/html/dune | 16 - test/html/expect/README.md | 3 - test/html/expect/highlight.pack.js | 1 - test/html/expect/odoc.css | 1 - .../Include/index.html | 137 -- .../Include2/index.html | 0 .../Include_sections/index.html | 0 .../module-type-Something/index.html | 0 .../Module/index.html | 111 - .../Section/index.html | 99 - .../Val/index.html | 53 - .../expect/test_package+ml/Alias/X/index.html | 38 - .../expect/test_package+ml/Alias/index.html | 38 - .../expect/test_package+ml/Bugs/index.html | 43 - .../test_package+ml/Bugs_post_406/index.html | 41 - .../test_package+ml/Bugs_pre_410/index.html | 43 - .../expect/test_package+ml/Class/index.html | 73 - .../test_package+ml/External/index.html | 38 - .../expect/test_package+ml/Functor/index.html | 63 - .../expect/test_package+ml/Include/index.html | 137 -- .../Include2/Y_include_doc/index.html | 45 - .../Include2/Y_include_synopsis/index.html | 43 - .../test_package+ml/Include2/index.html | 78 - .../Include_sections/index.html | 256 --- .../module-type-Something/index.html | 81 - .../test_package+ml/Interlude/index.html | 81 - .../expect/test_package+ml/Labels/index.html | 235 -- .../expect/test_package+ml/Markup/index.html | 378 --- .../expect/test_package+ml/Module/index.html | 111 - .../Module_type_subst/Basic/index.html | 58 - .../Basic/module-type-a/M/index.html | 27 - .../Basic/module-type-a/index.html | 38 - .../module-type-a/module-type-b/index.html | 27 - .../Basic/module-type-c/M/index.html | 27 - .../Basic/module-type-c/index.html | 33 - .../Basic/module-type-u/index.html | 33 - .../module-type-u/module-type-T/index.html | 27 - .../Basic/module-type-u2/M/index.html | 27 - .../Basic/module-type-u2/index.html | 38 - .../module-type-u2/module-type-T/index.html | 27 - .../Basic/module-type-with_/index.html | 33 - .../module-type-T/index.html | 27 - .../Basic/module-type-with_2/M/index.html | 27 - .../Basic/module-type-with_2/index.html | 38 - .../module-type-T/index.html | 27 - .../Module_type_subst/Local/index.html | 48 - .../Local/module-type-local/index.html | 33 - .../Local/module-type-s/index.html | 27 - .../Local/module-type-w/index.html | 33 - .../Module_type_subst/Nested/index.html | 43 - .../Nested/module-type-nested/N/index.html | 33 - .../N/module-type-t/index.html | 27 - .../Nested/module-type-nested/index.html | 33 - .../Nested/module-type-with_/N/index.html | 33 - .../N/module-type-t/index.html | 27 - .../Nested/module-type-with_/index.html | 33 - .../module-type-with_subst/N/index.html | 27 - .../Nested/module-type-with_subst/index.html | 33 - .../Module_type_subst/Structural/index.html | 38 - .../Structural/module-type-u/index.html | 33 - .../module-type-u/module-type-a/index.html | 33 - .../module-type-a/module-type-b/index.html | 33 - .../module-type-b/module-type-c/index.html | 42 - .../Structural/module-type-w/index.html | 33 - .../module-type-w/module-type-a/index.html | 33 - .../module-type-a/module-type-b/index.html | 33 - .../module-type-b/module-type-c/index.html | 42 - .../Module_type_subst/index.html | 53 - .../module-type-s/index.html | 2 - .../Nested/F/argument-1-Arg1/index.html | 64 - .../Nested/F/argument-2-Arg2/index.html | 48 - .../test_package+ml/Nested/F/index.html | 76 - .../test_package+ml/Nested/X/index.html | 70 - .../Nested/class-inherits/index.html | 33 - .../test_package+ml/Nested/class-z/index.html | 74 - .../expect/test_package+ml/Nested/index.html | 104 - .../Nested/module-type-Y/index.html | 70 - .../test_package+ml/Ocamlary/index.html | 2019 ---------------- .../test_package+ml/Recent/X/index.html | 48 - .../expect/test_package+ml/Recent/index.html | 244 -- .../test_package+ml/Recent_impl/index.html | 53 - .../expect/test_package+ml/Section/index.html | 99 - .../expect/test_package+ml/Stop/index.html | 60 - .../Stop_dead_link_doc/index.html | 119 - .../Toplevel_comments/Alias/index.html | 39 - .../Include_inline'/index.html | 46 - .../Include_inline/index.html | 38 - .../Toplevel_comments/M''/index.html | 33 - .../Toplevel_comments/M'/index.html | 30 - .../Toplevel_comments/M/index.html | 30 - .../Ref_in_synopsis/index.html | 39 - .../Toplevel_comments/class-c1/index.html | 33 - .../Toplevel_comments/class-c2/index.html | 33 - .../class-type-ct/index.html | 33 - .../Toplevel_comments/index.html | 161 -- .../module-type-Include_inline_T'/index.html | 46 - .../module-type-Include_inline_T/index.html | 38 - .../module-type-T/index.html | 39 - .../expect/test_package+ml/Type/index.html | 548 ----- .../Type/module-type-X/index.html | 0 .../expect/test_package+ml/Val/index.html | 53 - test/html/expect/test_package+ml/mld.html | 94 - .../expect/test_package+re/Alias/X/index.html | 38 - .../expect/test_package+re/Alias/index.html | 38 - .../expect/test_package+re/Bugs/index.html | 43 - .../test_package+re/Bugs_post_406/index.html | 41 - .../test_package+re/Bugs_pre_410/index.html | 43 - .../expect/test_package+re/Class/index.html | 73 - .../test_package+re/External/index.html | 38 - .../expect/test_package+re/Functor/index.html | 63 - .../expect/test_package+re/Include/index.html | 137 -- .../Include2/Y_include_doc/index.html | 45 - .../Include2/Y_include_synopsis/index.html | 43 - .../test_package+re/Include2/index.html | 78 - .../Include_sections/index.html | 256 --- .../module-type-Something/index.html | 81 - .../test_package+re/Interlude/index.html | 81 - .../expect/test_package+re/Labels/index.html | 237 -- .../expect/test_package+re/Markup/index.html | 378 --- .../expect/test_package+re/Module/index.html | 111 - .../Nested/F/argument-1-Arg1/index.html | 64 - .../Nested/F/argument-2-Arg2/index.html | 48 - .../test_package+re/Nested/F/index.html | 76 - .../test_package+re/Nested/X/index.html | 70 - .../Nested/class-inherits/index.html | 33 - .../test_package+re/Nested/class-z/index.html | 74 - .../expect/test_package+re/Nested/index.html | 104 - .../Nested/module-type-Y/index.html | 70 - .../test_package+re/Ocamlary/index.html | 2037 ----------------- .../test_package+re/Recent/X/index.html | 48 - .../expect/test_package+re/Recent/index.html | 248 -- .../test_package+re/Recent_impl/index.html | 53 - .../expect/test_package+re/Section/index.html | 99 - .../expect/test_package+re/Stop/index.html | 60 - .../Stop_dead_link_doc/index.html | 123 - .../Toplevel_comments/Alias/index.html | 39 - .../Include_inline'/index.html | 46 - .../Include_inline/index.html | 38 - .../Toplevel_comments/M''/index.html | 33 - .../Toplevel_comments/M'/index.html | 30 - .../Toplevel_comments/M/index.html | 30 - .../Ref_in_synopsis/index.html | 39 - .../Toplevel_comments/class-c1/index.html | 33 - .../Toplevel_comments/class-c2/index.html | 33 - .../class-type-ct/index.html | 33 - .../Toplevel_comments/index.html | 161 -- .../module-type-Include_inline_T'/index.html | 46 - .../module-type-Include_inline_T/index.html | 38 - .../module-type-T/index.html | 39 - .../expect/test_package+re/Type/index.html | 555 ----- .../expect/test_package+re/Val/index.html | 53 - test/html/expect/test_package+re/mld.html | 94 - test/html/flat.t/run.t | 55 - test/html/flat.t/test.mli | 10 - test/html/test.ml | 400 ---- test/html/tidy.ml | 55 - test/latex/dune | 13 - test/latex/expect/test_package+ml/Alias.X.tex | 5 - test/latex/expect/test_package+ml/Alias.tex | 8 - test/latex/expect/test_package+ml/Bugs.tex | 6 - .../expect/test_package+ml/Bugs_pre_410.tex | 6 - .../test_package+ml/Class.empty_virtual'.tex | 3 - .../test_package+ml/Class.mutually'.tex | 3 - .../test_package+ml/Class.polymorphic'.tex | 3 - .../test_package+ml/Class.recursive'.tex | 3 - test/latex/expect/test_package+ml/Class.tex | 20 - .../latex/expect/test_package+ml/External.tex | 5 - .../expect/test_package+ml/Functor.F1.tex | 9 - .../expect/test_package+ml/Functor.F2.tex | 9 - .../expect/test_package+ml/Functor.F3.tex | 9 - .../expect/test_package+ml/Functor.F4.tex | 9 - .../expect/test_package+ml/Functor.F5.tex | 6 - test/latex/expect/test_package+ml/Functor.tex | 23 - test/latex/expect/test_package+ml/Include.tex | 29 - .../latex/expect/test_package+ml/Include2.tex | 21 - .../test_package+ml/Include_sections.tex | 71 - .../expect/test_package+ml/Interlude.tex | 22 - test/latex/expect/test_package+ml/Markup.tex | 149 -- test/latex/expect/test_package+ml/Module.tex | 75 - .../latex/expect/test_package+ml/Nested.F.tex | 25 - .../test_package+ml/Nested.inherits.tex | 4 - test/latex/expect/test_package+ml/Nested.tex | 34 - .../latex/expect/test_package+ml/Nested.z.tex | 14 - test/latex/expect/test_package+ml/Recent.tex | 78 - .../expect/test_package+ml/Recent_impl.B.tex | 7 - .../expect/test_package+ml/Recent_impl.tex | 32 - test/latex/expect/test_package+ml/Section.tex | 20 - test/latex/expect/test_package+ml/Stop.tex | 17 - test/latex/expect/test_package+ml/Type.tex | 124 - test/latex/expect/test_package+ml/Val.tex | 8 - test/latex/expect/test_package+ml/mld.tex | 31 - test/latex/expect/visualizer.tex | 90 - test/latex/test.ml | 238 -- test/man/dune | 13 - test/man/expect/test_package+ml/Alias.3o | 16 - test/man/expect/test_package+ml/Alias.X.3o | 20 - test/man/expect/test_package+ml/Bugs.3o | 26 - .../expect/test_package+ml/Bugs_pre_410.3o | 26 - test/man/expect/test_package+ml/Class.3o | 30 - test/man/expect/test_package+ml/External.3o | 20 - test/man/expect/test_package+ml/Functor.3o | 53 - test/man/expect/test_package+ml/Functor.F1.3o | 30 - test/man/expect/test_package+ml/Functor.F2.3o | 30 - test/man/expect/test_package+ml/Functor.F3.3o | 30 - test/man/expect/test_package+ml/Functor.F4.3o | 30 - test/man/expect/test_package+ml/Include.3o | 71 - test/man/expect/test_package+ml/Include2.3o | 41 - .../test_package+ml/Include_sections.3o | 204 -- test/man/expect/test_package+ml/Interlude.3o | 54 - test/man/expect/test_package+ml/Markup.3o | 279 --- test/man/expect/test_package+ml/Module.3o | 178 -- test/man/expect/test_package+ml/Nested.3o | 89 - test/man/expect/test_package+ml/Nested.F.3o | 87 - test/man/expect/test_package+ml/Nested.X.3o | 43 - .../expect/test_package+ml/Nested.inherits.3o | 14 - test/man/expect/test_package+ml/Nested.z.3o | 41 - test/man/expect/test_package+ml/Recent.3o | 145 -- test/man/expect/test_package+ml/Recent.X.3o | 20 - .../man/expect/test_package+ml/Recent_impl.3o | 50 - test/man/expect/test_package+ml/Section.3o | 63 - test/man/expect/test_package+ml/Stop.3o | 36 - test/man/expect/test_package+ml/Type.3o | 257 --- test/man/expect/test_package+ml/Val.3o | 29 - test/man/expect/test_package+ml/mld.3o | 63 - test/man/expect/test_package+ml/mld.nroff | 63 - test/man/test.ml | 244 -- 254 files changed, 19696 deletions(-) delete mode 100644 test/cases/.ocamlformat delete mode 100644 test/cases/alias.ml delete mode 100644 test/cases/bugs.ml delete mode 100644 test/cases/bugs_post_406.mli delete mode 100644 test/cases/bugs_pre_410.ml delete mode 100644 test/cases/class.mli delete mode 100644 test/cases/external.mli delete mode 100644 test/cases/functor.mli delete mode 100644 test/cases/functor2.mli delete mode 100644 test/cases/include.mli delete mode 100644 test/cases/include2.ml delete mode 100644 test/cases/include_sections.mli delete mode 100644 test/cases/interlude.mli delete mode 100644 test/cases/labels.mli delete mode 100644 test/cases/markup.mli delete mode 100644 test/cases/mld.mld delete mode 100644 test/cases/module.mli delete mode 100644 test/cases/module_type_subst.mli delete mode 100644 test/cases/nested.mli delete mode 120000 test/cases/ocamlary.mli delete mode 100644 test/cases/recent.mli delete mode 100644 test/cases/recent_impl.ml delete mode 100644 test/cases/section.mli delete mode 100644 test/cases/stop.mli delete mode 100644 test/cases/stop_dead_link_doc.mli delete mode 100644 test/cases/toplevel_comments.mli delete mode 100644 test/cases/type.mli delete mode 100644 test/cases/val.mli delete mode 100644 test/html/dune delete mode 100644 test/html/expect/README.md delete mode 120000 test/html/expect/highlight.pack.js delete mode 120000 test/html/expect/odoc.css delete mode 100644 test/html/expect/test_package+custom_theme,ml/Include/index.html delete mode 100644 test/html/expect/test_package+custom_theme,ml/Include2/index.html delete mode 100644 test/html/expect/test_package+custom_theme,ml/Include_sections/index.html delete mode 100644 test/html/expect/test_package+custom_theme,ml/Include_sections/module-type-Something/index.html delete mode 100644 test/html/expect/test_package+custom_theme,ml/Module/index.html delete mode 100644 test/html/expect/test_package+custom_theme,ml/Section/index.html delete mode 100644 test/html/expect/test_package+custom_theme,ml/Val/index.html delete mode 100644 test/html/expect/test_package+ml/Alias/X/index.html delete mode 100644 test/html/expect/test_package+ml/Alias/index.html delete mode 100644 test/html/expect/test_package+ml/Bugs/index.html delete mode 100644 test/html/expect/test_package+ml/Bugs_post_406/index.html delete mode 100644 test/html/expect/test_package+ml/Bugs_pre_410/index.html delete mode 100644 test/html/expect/test_package+ml/Class/index.html delete mode 100644 test/html/expect/test_package+ml/External/index.html delete mode 100644 test/html/expect/test_package+ml/Functor/index.html delete mode 100644 test/html/expect/test_package+ml/Include/index.html delete mode 100644 test/html/expect/test_package+ml/Include2/Y_include_doc/index.html delete mode 100644 test/html/expect/test_package+ml/Include2/Y_include_synopsis/index.html delete mode 100644 test/html/expect/test_package+ml/Include2/index.html delete mode 100644 test/html/expect/test_package+ml/Include_sections/index.html delete mode 100644 test/html/expect/test_package+ml/Include_sections/module-type-Something/index.html delete mode 100644 test/html/expect/test_package+ml/Interlude/index.html delete mode 100644 test/html/expect/test_package+ml/Labels/index.html delete mode 100644 test/html/expect/test_package+ml/Markup/index.html delete mode 100644 test/html/expect/test_package+ml/Module/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-a/M/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-a/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-a/module-type-b/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-c/M/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-c/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u/module-type-T/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u2/M/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u2/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u2/module-type-T/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_/module-type-T/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_2/M/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_2/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_2/module-type-T/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Local/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Local/module-type-local/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Local/module-type-s/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Local/module-type-w/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Nested/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-nested/N/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-nested/N/module-type-t/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-nested/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_/N/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_/N/module-type-t/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_subst/N/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_subst/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Structural/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/module-type-a/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/module-type-a/module-type-b/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/module-type-a/module-type-b/module-type-c/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/module-type-a/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/module-type-a/module-type-b/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/module-type-a/module-type-b/module-type-c/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/index.html delete mode 100644 test/html/expect/test_package+ml/Module_type_subst/module-type-s/index.html delete mode 100644 test/html/expect/test_package+ml/Nested/F/argument-1-Arg1/index.html delete mode 100644 test/html/expect/test_package+ml/Nested/F/argument-2-Arg2/index.html delete mode 100644 test/html/expect/test_package+ml/Nested/F/index.html delete mode 100644 test/html/expect/test_package+ml/Nested/X/index.html delete mode 100644 test/html/expect/test_package+ml/Nested/class-inherits/index.html delete mode 100644 test/html/expect/test_package+ml/Nested/class-z/index.html delete mode 100644 test/html/expect/test_package+ml/Nested/index.html delete mode 100644 test/html/expect/test_package+ml/Nested/module-type-Y/index.html delete mode 100644 test/html/expect/test_package+ml/Ocamlary/index.html delete mode 100644 test/html/expect/test_package+ml/Recent/X/index.html delete mode 100644 test/html/expect/test_package+ml/Recent/index.html delete mode 100644 test/html/expect/test_package+ml/Recent_impl/index.html delete mode 100644 test/html/expect/test_package+ml/Section/index.html delete mode 100644 test/html/expect/test_package+ml/Stop/index.html delete mode 100644 test/html/expect/test_package+ml/Stop_dead_link_doc/index.html delete mode 100644 test/html/expect/test_package+ml/Toplevel_comments/Alias/index.html delete mode 100644 test/html/expect/test_package+ml/Toplevel_comments/Include_inline'/index.html delete mode 100644 test/html/expect/test_package+ml/Toplevel_comments/Include_inline/index.html delete mode 100644 test/html/expect/test_package+ml/Toplevel_comments/M''/index.html delete mode 100644 test/html/expect/test_package+ml/Toplevel_comments/M'/index.html delete mode 100644 test/html/expect/test_package+ml/Toplevel_comments/M/index.html delete mode 100644 test/html/expect/test_package+ml/Toplevel_comments/Ref_in_synopsis/index.html delete mode 100644 test/html/expect/test_package+ml/Toplevel_comments/class-c1/index.html delete mode 100644 test/html/expect/test_package+ml/Toplevel_comments/class-c2/index.html delete mode 100644 test/html/expect/test_package+ml/Toplevel_comments/class-type-ct/index.html delete mode 100644 test/html/expect/test_package+ml/Toplevel_comments/index.html delete mode 100644 test/html/expect/test_package+ml/Toplevel_comments/module-type-Include_inline_T'/index.html delete mode 100644 test/html/expect/test_package+ml/Toplevel_comments/module-type-Include_inline_T/index.html delete mode 100644 test/html/expect/test_package+ml/Toplevel_comments/module-type-T/index.html delete mode 100644 test/html/expect/test_package+ml/Type/index.html delete mode 100644 test/html/expect/test_package+ml/Type/module-type-X/index.html delete mode 100644 test/html/expect/test_package+ml/Val/index.html delete mode 100644 test/html/expect/test_package+ml/mld.html delete mode 100644 test/html/expect/test_package+re/Alias/X/index.html delete mode 100644 test/html/expect/test_package+re/Alias/index.html delete mode 100644 test/html/expect/test_package+re/Bugs/index.html delete mode 100644 test/html/expect/test_package+re/Bugs_post_406/index.html delete mode 100644 test/html/expect/test_package+re/Bugs_pre_410/index.html delete mode 100644 test/html/expect/test_package+re/Class/index.html delete mode 100644 test/html/expect/test_package+re/External/index.html delete mode 100644 test/html/expect/test_package+re/Functor/index.html delete mode 100644 test/html/expect/test_package+re/Include/index.html delete mode 100644 test/html/expect/test_package+re/Include2/Y_include_doc/index.html delete mode 100644 test/html/expect/test_package+re/Include2/Y_include_synopsis/index.html delete mode 100644 test/html/expect/test_package+re/Include2/index.html delete mode 100644 test/html/expect/test_package+re/Include_sections/index.html delete mode 100644 test/html/expect/test_package+re/Include_sections/module-type-Something/index.html delete mode 100644 test/html/expect/test_package+re/Interlude/index.html delete mode 100644 test/html/expect/test_package+re/Labels/index.html delete mode 100644 test/html/expect/test_package+re/Markup/index.html delete mode 100644 test/html/expect/test_package+re/Module/index.html delete mode 100644 test/html/expect/test_package+re/Nested/F/argument-1-Arg1/index.html delete mode 100644 test/html/expect/test_package+re/Nested/F/argument-2-Arg2/index.html delete mode 100644 test/html/expect/test_package+re/Nested/F/index.html delete mode 100644 test/html/expect/test_package+re/Nested/X/index.html delete mode 100644 test/html/expect/test_package+re/Nested/class-inherits/index.html delete mode 100644 test/html/expect/test_package+re/Nested/class-z/index.html delete mode 100644 test/html/expect/test_package+re/Nested/index.html delete mode 100644 test/html/expect/test_package+re/Nested/module-type-Y/index.html delete mode 100644 test/html/expect/test_package+re/Ocamlary/index.html delete mode 100644 test/html/expect/test_package+re/Recent/X/index.html delete mode 100644 test/html/expect/test_package+re/Recent/index.html delete mode 100644 test/html/expect/test_package+re/Recent_impl/index.html delete mode 100644 test/html/expect/test_package+re/Section/index.html delete mode 100644 test/html/expect/test_package+re/Stop/index.html delete mode 100644 test/html/expect/test_package+re/Stop_dead_link_doc/index.html delete mode 100644 test/html/expect/test_package+re/Toplevel_comments/Alias/index.html delete mode 100644 test/html/expect/test_package+re/Toplevel_comments/Include_inline'/index.html delete mode 100644 test/html/expect/test_package+re/Toplevel_comments/Include_inline/index.html delete mode 100644 test/html/expect/test_package+re/Toplevel_comments/M''/index.html delete mode 100644 test/html/expect/test_package+re/Toplevel_comments/M'/index.html delete mode 100644 test/html/expect/test_package+re/Toplevel_comments/M/index.html delete mode 100644 test/html/expect/test_package+re/Toplevel_comments/Ref_in_synopsis/index.html delete mode 100644 test/html/expect/test_package+re/Toplevel_comments/class-c1/index.html delete mode 100644 test/html/expect/test_package+re/Toplevel_comments/class-c2/index.html delete mode 100644 test/html/expect/test_package+re/Toplevel_comments/class-type-ct/index.html delete mode 100644 test/html/expect/test_package+re/Toplevel_comments/index.html delete mode 100644 test/html/expect/test_package+re/Toplevel_comments/module-type-Include_inline_T'/index.html delete mode 100644 test/html/expect/test_package+re/Toplevel_comments/module-type-Include_inline_T/index.html delete mode 100644 test/html/expect/test_package+re/Toplevel_comments/module-type-T/index.html delete mode 100644 test/html/expect/test_package+re/Type/index.html delete mode 100644 test/html/expect/test_package+re/Val/index.html delete mode 100644 test/html/expect/test_package+re/mld.html delete mode 100644 test/html/flat.t/run.t delete mode 100644 test/html/flat.t/test.mli delete mode 100644 test/html/test.ml delete mode 100644 test/html/tidy.ml delete mode 100644 test/latex/dune delete mode 100644 test/latex/expect/test_package+ml/Alias.X.tex delete mode 100644 test/latex/expect/test_package+ml/Alias.tex delete mode 100644 test/latex/expect/test_package+ml/Bugs.tex delete mode 100644 test/latex/expect/test_package+ml/Bugs_pre_410.tex delete mode 100644 test/latex/expect/test_package+ml/Class.empty_virtual'.tex delete mode 100644 test/latex/expect/test_package+ml/Class.mutually'.tex delete mode 100644 test/latex/expect/test_package+ml/Class.polymorphic'.tex delete mode 100644 test/latex/expect/test_package+ml/Class.recursive'.tex delete mode 100644 test/latex/expect/test_package+ml/Class.tex delete mode 100644 test/latex/expect/test_package+ml/External.tex delete mode 100644 test/latex/expect/test_package+ml/Functor.F1.tex delete mode 100644 test/latex/expect/test_package+ml/Functor.F2.tex delete mode 100644 test/latex/expect/test_package+ml/Functor.F3.tex delete mode 100644 test/latex/expect/test_package+ml/Functor.F4.tex delete mode 100644 test/latex/expect/test_package+ml/Functor.F5.tex delete mode 100644 test/latex/expect/test_package+ml/Functor.tex delete mode 100644 test/latex/expect/test_package+ml/Include.tex delete mode 100644 test/latex/expect/test_package+ml/Include2.tex delete mode 100644 test/latex/expect/test_package+ml/Include_sections.tex delete mode 100644 test/latex/expect/test_package+ml/Interlude.tex delete mode 100644 test/latex/expect/test_package+ml/Markup.tex delete mode 100644 test/latex/expect/test_package+ml/Module.tex delete mode 100644 test/latex/expect/test_package+ml/Nested.F.tex delete mode 100644 test/latex/expect/test_package+ml/Nested.inherits.tex delete mode 100644 test/latex/expect/test_package+ml/Nested.tex delete mode 100644 test/latex/expect/test_package+ml/Nested.z.tex delete mode 100644 test/latex/expect/test_package+ml/Recent.tex delete mode 100644 test/latex/expect/test_package+ml/Recent_impl.B.tex delete mode 100644 test/latex/expect/test_package+ml/Recent_impl.tex delete mode 100644 test/latex/expect/test_package+ml/Section.tex delete mode 100644 test/latex/expect/test_package+ml/Stop.tex delete mode 100644 test/latex/expect/test_package+ml/Type.tex delete mode 100644 test/latex/expect/test_package+ml/Val.tex delete mode 100644 test/latex/expect/test_package+ml/mld.tex delete mode 100644 test/latex/expect/visualizer.tex delete mode 100644 test/latex/test.ml delete mode 100644 test/man/dune delete mode 100644 test/man/expect/test_package+ml/Alias.3o delete mode 100644 test/man/expect/test_package+ml/Alias.X.3o delete mode 100644 test/man/expect/test_package+ml/Bugs.3o delete mode 100644 test/man/expect/test_package+ml/Bugs_pre_410.3o delete mode 100644 test/man/expect/test_package+ml/Class.3o delete mode 100644 test/man/expect/test_package+ml/External.3o delete mode 100644 test/man/expect/test_package+ml/Functor.3o delete mode 100644 test/man/expect/test_package+ml/Functor.F1.3o delete mode 100644 test/man/expect/test_package+ml/Functor.F2.3o delete mode 100644 test/man/expect/test_package+ml/Functor.F3.3o delete mode 100644 test/man/expect/test_package+ml/Functor.F4.3o delete mode 100644 test/man/expect/test_package+ml/Include.3o delete mode 100644 test/man/expect/test_package+ml/Include2.3o delete mode 100644 test/man/expect/test_package+ml/Include_sections.3o delete mode 100644 test/man/expect/test_package+ml/Interlude.3o delete mode 100644 test/man/expect/test_package+ml/Markup.3o delete mode 100644 test/man/expect/test_package+ml/Module.3o delete mode 100644 test/man/expect/test_package+ml/Nested.3o delete mode 100644 test/man/expect/test_package+ml/Nested.F.3o delete mode 100644 test/man/expect/test_package+ml/Nested.X.3o delete mode 100644 test/man/expect/test_package+ml/Nested.inherits.3o delete mode 100644 test/man/expect/test_package+ml/Nested.z.3o delete mode 100644 test/man/expect/test_package+ml/Recent.3o delete mode 100644 test/man/expect/test_package+ml/Recent.X.3o delete mode 100644 test/man/expect/test_package+ml/Recent_impl.3o delete mode 100644 test/man/expect/test_package+ml/Section.3o delete mode 100644 test/man/expect/test_package+ml/Stop.3o delete mode 100644 test/man/expect/test_package+ml/Type.3o delete mode 100644 test/man/expect/test_package+ml/Val.3o delete mode 100644 test/man/expect/test_package+ml/mld.3o delete mode 100644 test/man/expect/test_package+ml/mld.nroff delete mode 100644 test/man/test.ml diff --git a/test/cases/.ocamlformat b/test/cases/.ocamlformat deleted file mode 100644 index 4d6556cb8b..0000000000 --- a/test/cases/.ocamlformat +++ /dev/null @@ -1 +0,0 @@ -disable = true diff --git a/test/cases/alias.ml b/test/cases/alias.ml deleted file mode 100644 index b458bc3420..0000000000 --- a/test/cases/alias.ml +++ /dev/null @@ -1,7 +0,0 @@ -module Foo__X = struct - (** Module Foo__X documentation. This should appear in the documentation - for the alias to this module 'X' *) - type t = int -end - -module X = Foo__X diff --git a/test/cases/bugs.ml b/test/cases/bugs.ml deleted file mode 100644 index 2c9c30bbd7..0000000000 --- a/test/cases/bugs.ml +++ /dev/null @@ -1,5 +0,0 @@ -type 'a opt = 'a option -let foo (type a) ?(bar : a opt) () = () -(** Triggers an assertion failure when - {:https://github.com/ocaml/odoc/issues/101} is not fixed. *) - diff --git a/test/cases/bugs_post_406.mli b/test/cases/bugs_post_406.mli deleted file mode 100644 index 757c001a02..0000000000 --- a/test/cases/bugs_post_406.mli +++ /dev/null @@ -1,10 +0,0 @@ -(** Let-open in class types, https://github.com/ocaml/odoc/issues/543 - This was added to the language in 4.06 *) - -class type let_open = - let open List in - object end - -class let_open' : - let open List in - object end diff --git a/test/cases/bugs_pre_410.ml b/test/cases/bugs_pre_410.ml deleted file mode 100644 index 0baca54d3b..0000000000 --- a/test/cases/bugs_pre_410.ml +++ /dev/null @@ -1,6 +0,0 @@ -type 'a opt' = int option -let foo' (type a) ?(bar : a opt') () = () -(** Similar to [Bugs], but the printed type of [~bar] should be [int], not - ['a]. This probably requires fixing in the compiler. See - {:https://github.com/ocaml/odoc/pull/230#issuecomment-433226807}. *) - diff --git a/test/cases/class.mli b/test/cases/class.mli deleted file mode 100644 index b536b0dbda..0000000000 --- a/test/cases/class.mli +++ /dev/null @@ -1,26 +0,0 @@ -class type empty = -object -end - -class type mutually = -object -end - -and recursive = -object -end - -class mutually' : mutually -and recursive' : recursive - -class type virtual empty_virtual = -object -end - -class virtual empty_virtual' : empty - -class type ['a] polymorphic = -object -end - -class ['a] polymorphic' : ['a] polymorphic diff --git a/test/cases/external.mli b/test/cases/external.mli deleted file mode 100644 index 9d68518931..0000000000 --- a/test/cases/external.mli +++ /dev/null @@ -1,2 +0,0 @@ -external foo : unit -> unit = "bar" -(** Foo {e bar}. *) diff --git a/test/cases/functor.mli b/test/cases/functor.mli deleted file mode 100644 index 8d13c39eb2..0000000000 --- a/test/cases/functor.mli +++ /dev/null @@ -1,19 +0,0 @@ -module type S = -sig - type t -end - -module type S1 = functor (_ : S) -> S - -module F1 : functor (Arg : S) -> S - -module F2 : functor (Arg : S) -> (S with type t = Arg.t) - -module F3 : functor (Arg : S) -> -sig - type t = Arg.t -end - -module F4 (Arg : S) : S - -module F5 () : S diff --git a/test/cases/functor2.mli b/test/cases/functor2.mli deleted file mode 100644 index 404e4671a2..0000000000 --- a/test/cases/functor2.mli +++ /dev/null @@ -1,15 +0,0 @@ -(* test *) - -module type S = sig type t end - -module X : functor (Y:S) -> functor (Z:S) -> sig - type y_t = Y.t - type z_t = Z.t - type x_t = y_t -end - -module type XF = functor (Y:S) -> functor (Z:S) -> sig - type y_t = Y.t - type z_t = Z.t - type x_t = y_t -end diff --git a/test/cases/include.mli b/test/cases/include.mli deleted file mode 100644 index f468c3cfc0..0000000000 --- a/test/cases/include.mli +++ /dev/null @@ -1,48 +0,0 @@ -module type Not_inlined = -sig - type t -end - -include Not_inlined - -module type Inlined = -sig - type u -end - -include Inlined -(** @inline *) - -module type Not_inlined_and_closed = -sig - type v -end - -include Not_inlined_and_closed -(** @closed *) - -module type Not_inlined_and_opened = -sig - type w -end - -include Not_inlined_and_opened -(** @open - @closed *) - -(* This demostrates that overridden values are never rendered*) -module type Inherent_Module = -sig - val a : t -end - -include Inherent_Module - - -module type Dorminant_Module = -sig - include Inherent_Module - val a : u -end - -include Dorminant_Module diff --git a/test/cases/include2.ml b/test/cases/include2.ml deleted file mode 100644 index bbfc4ca841..0000000000 --- a/test/cases/include2.ml +++ /dev/null @@ -1,24 +0,0 @@ -(** Comment about X that should not appear when including X below. *) -module X = struct - type t = int -end - -include X - -module Y = struct - (** Top-comment of Y. *) - - type t -end - -module Y_include_synopsis = struct - (** The [include Y] below should have the synopsis from [Y]'s top-comment - attached to it. *) - - include Y -end - -module Y_include_doc = struct - include Y - (** Doc attached to [include Y]. [Y]'s top-comment shouldn't appear here. *) -end diff --git a/test/cases/include_sections.mli b/test/cases/include_sections.mli deleted file mode 100644 index d4357c182a..0000000000 --- a/test/cases/include_sections.mli +++ /dev/null @@ -1,41 +0,0 @@ -(** A module type. *) -module type Something = sig - - val something : unit - - (** {1 Something 1} - - foo *) - - val foo : unit - - (** {2 Something 2} *) - - val bar : unit - (** foo bar *) - - (** {1 Something 1-bis} - - Some text. *) -end - -(** Let's include {!Something} once *) - -include Something (** @inline *) - -(** {1 Second include} - - Let's include {!Something} a second time: the heading level should be shift here. *) - -include Something (** @inline *) - -(** {2 Third include} - - Shifted some more. *) - -include Something (** @inline *) - -(** And let's include it again, but without inlining it this time: the ToC - shouldn't grow. *) - -include Something diff --git a/test/cases/interlude.mli b/test/cases/interlude.mli deleted file mode 100644 index d8e79875b1..0000000000 --- a/test/cases/interlude.mli +++ /dev/null @@ -1,21 +0,0 @@ -(** This is the comment associated to the module. *) - -(** Some separate stray text at the top of the module. *) - -val foo : unit -(** Foo. *) - -(** Some stray text that is not associated with any signature item. - - It has multiple paragraphs. *) - -(** A separate block of stray text, adjacent to the preceding one. *) - -val bar : unit -(** Bar. *) - -val multiple : unit -val signature : unit -val items : unit - -(** Stray text at the bottom of the module. *) diff --git a/test/cases/labels.mli b/test/cases/labels.mli deleted file mode 100644 index 5b361ca20e..0000000000 --- a/test/cases/labels.mli +++ /dev/null @@ -1,58 +0,0 @@ -(** {1:L1 Attached to unit} *) - -(** {1:L2 Attached to nothing} *) - -(** {1:L3 Attached to module} *) -module A : sig end - -(** {1:L4 Attached to type} *) -type t - -(** {1:L5 Attached to value} *) -val f : t - -(** {1:L5bis Attached to external} *) -external e : unit -> t = "t" - -(** {1:L6 Attached to module type} *) -module type S = sig end - -(** {1:L6 Attached to class} *) -class c : object end - -(** {1:L7 Attached to class type} *) -class type cs = object end - -(** {1:L8 Attached to exception} *) -exception E - -type x = .. - -(** {1:L9 Attached to extension} *) -type x += X - -(** {1:L10 Attached to module subst} *) -module S := A - -(** {1:L11 Attached to type subst} *) -type s := t - -type u = A' (** {1:L12 Attached to constructor} *) - -type v = { f : t (** {1:L13 Attached to field} *) } - -(** Testing that labels can be referenced - - {!L1} - - {!L2} - - {!L3} - - {!L4} - - {!L5} - - {!L6} - - {!L7} - - {!L8} - - {!L9} - - {!L10} - - {!L11} - - {!L12} - - {!L13} - *) diff --git a/test/cases/markup.mli b/test/cases/markup.mli deleted file mode 100644 index 369c7e6dda..0000000000 --- a/test/cases/markup.mli +++ /dev/null @@ -1,179 +0,0 @@ -(** Here, we test the rendering of comment markup. *) - - -(** {1 Sections} - - Let's get these done first, because sections will be used to break up the - rest of this test. - - Besides the section heading above, there are also - - {2 Subsection headings} - - and - - {3 Sub-subsection headings} - - but odoc has banned deeper headings. There are also title headings, but they - are only allowed in mld files. - - {3:anchors Anchors} - - Sections can have attached {!anchors}, and it is possible to {{!anchors} - link} to them. Links to section headers should not be set in source code - style. - - {4 Paragraph} - - Individual paragraphs can have a heading. - - {5 Subparagraph} - - Parts of a longer paragraph that can be considered alone can also have - headings. - - - {1 Styling} - - This paragraph has some styled elements: {b bold} and {i italic}, - {b {i bold italic}}, {e emphasis}, {e {e emphasis} within emphasis}, - {b {i bold italic}}, super{^script}, sub{_script}. The line spacing should - be enough for superscripts and subscripts not to look odd. - - Note: {i In italics {e emphasis} is rendered as normal text while {e - emphasis {e in} emphasis} is rendered in italics.} {i It also work the same - in {{:#} links in italics with {e emphasis {e in} emphasis}.}} - - [code] is a different kind of markup that doesn't allow nested markup. - - It's possible for two markup elements to appear {b next} {i to} each other - and have a space, and appear {b next}{i to} each other with no space. It - doesn't matter {b how} {i much} space it was in the source: in this - sentence, it was two space characters. And in this one, there is {b a} - {i newline}. - - This is also true between {e non-}[code] markup {e and} [code]. - - Code can appear {b inside [other] markup}. Its display shouldn't be - affected. - - - {1 Links and references} - - This is a {{:#} link}. It sends you to the top of this page. Links can have - markup inside them: {{:#} {b bold}}, {{:#} {i italics}}, - {{:#} {e emphasis}}, {{:#} super{^script}}, {{:#} sub{_script}}, and - {{:#} [code]}. Links can also be nested {e {{:#} inside}} markup. Links - cannot be nested inside each other. This link has no replacement text: - {{:#}}. The text is filled in by odoc. This is a shorthand link: {:#}. The - text is also filled in by odoc in this case. - - This is a reference to {!foo}. References can have replacement text: - {{!foo} the value foo}. Except for the special lookup support, references - are pretty much just like links. The replacement text can have nested - styles: {{!foo} {b bold}}, {{!foo} {i italic}}, {{!foo} {e emphasis}}, - {{!foo} super{^script}}, {{!foo} sub{_script}}, and {{!foo} [code]}. It's - also possible to surround a reference in a style: {b {!foo}}. References - can't be nested inside references, and links and references can't be nested - inside each other. - - - {1 Preformatted text} - - This is a code block: - - {[ - let foo = () - (** There are some nested comments in here, but an unpaired comment - terminator would terminate the whole doc surrounding comment. It's - best to keep code blocks no wider than 72 characters. *) - - let bar = - ignore foo - ]} - - There are also verbatim blocks: - -{v -The main difference is these don't get syntax highlighting. -v} - - - {1 Lists} - - - This is a - - shorthand bulleted list, - - and the paragraphs in each list item support {e styling}. - - + This is a - + shorthand numbered list. - - - Shorthand list items can span multiple lines, however trying to put two - paragraphs into a shorthand list item using a double line break - - just creates a paragraph outside the list. - - - Similarly, inserting a blank line between two list items - - - creates two separate lists. - - {ul - {li To get around this limitation, one - - can use explicitly-delimited lists.} - {li This one is bulleted,}} - - {ol {li but there is also the numbered variant.}} - - {ul - {li - {ul - {li lists} - {li can be nested} - {li and can include references} - {li {!foo}}}}} - - - {1 Unicode} - - The parser supports any ASCII-compatible encoding, in particuλar UTF-8. - - - {1 Raw HTML} - - Raw HTML can be {%html:%} as - inline elements into sentences. - - {%html: -
    - If the raw HTML is the only thing in a paragraph, it is treated as a block - element, and won't be wrapped in paragraph tags by the HTML generator. -
    - %} - - - {1 Modules} - - {!modules: } - {!modules: X} - {!modules: X Y Z} - - - {1 Tags} - - Each comment can end with zero or more tags. Here are some examples: - - @author antron - @deprecated a {e long} time ago - @param foo unused - @raise Failure always - @return never - @see <#> this url - @see 'foo.ml' this file - @see "Foo" this document - @since 0 - @before 1.0 it was in b{^e}t{_a} - @version -1 *) - -val foo : unit -(** Comments in structure items {b support} {e markup}, t{^o}{_o}. *) diff --git a/test/cases/mld.mld b/test/cases/mld.mld deleted file mode 100644 index 65e78dcb9b..0000000000 --- a/test/cases/mld.mld +++ /dev/null @@ -1,34 +0,0 @@ -{0 Mld Page} - -This is an [.mld] file. It doesn't have an auto-generated title, like modules -and other pages generated fully by odoc do. - -It will have a TOC generated from section headings. - -{1 Section} - -This is a section. - -Another paragraph in section. - -{1 Another section} - -This is another section. - -Another paragraph in section 2. - -{2 Subsection} - -This is a subsection. - -Another paragraph in subsection. - -Yet another paragraph in subsection. - -{2 Another Subsection} - -This is another subsection. - -Another paragraph in subsection 2. - -Yet another paragraph in subsection 2. diff --git a/test/cases/module.mli b/test/cases/module.mli deleted file mode 100644 index a270d525b4..0000000000 --- a/test/cases/module.mli +++ /dev/null @@ -1,44 +0,0 @@ -(** Foo. *) - -val foo : unit -(** The module needs at least one signature item, otherwise a bug causes the - compiler to drop the module comment (above). See - {{:https://caml.inria.fr/mantis/view.php?id=7701}}. *) - -module type S = -sig - type t - type u - type 'a v - type ('a, 'b) w - module M : sig end -end - -module type S1 - -module type S2 = S - -module type S3 = S with type t = int and type u = string - -module type S4 = S with type t := int - -module type S5 = S with type 'a v := 'a list - -type ('a, 'b) result - -module type S6 = S with type ('a, 'b) w := ('a, 'b) result - -module M' : sig end - -module type S7 = S with module M = M' - -module type S8 = S with module M := M' - -module type S9 = module type of M' - -open M' - -open! M' - -module rec Mutually : sig end -and Recursive : sig end diff --git a/test/cases/module_type_subst.mli b/test/cases/module_type_subst.mli deleted file mode 100644 index 930aee148f..0000000000 --- a/test/cases/module_type_subst.mli +++ /dev/null @@ -1,68 +0,0 @@ - - -module Local: sig - type local := int * int - module type local := sig type t = local end - module type w = local - module type s = sig end -end - - -module type s = sig end - -module Basic: sig - - module type u = sig - module type T = sig end - end - - module type with_ = u with module type T = s - - module type u2 = sig - module type T = sig end - module M:T - end - - module type with_2 = u2 with module type T = sig end - - module type a = sig - module type b = s - module M: b - end - - module type c = a with module type b := s -end - -module Nested : sig - - module type nested = sig - module N: sig - module type t = sig end - end - end - - module type with_ = nested with module type N.t = s - module type with_subst = nested with module type N.t := s -end - -module Structural: sig - module type u = sig - module type a = sig - module type b = sig - module type c = sig - type t = A of t - end - end - end - end - - module type w = u - with module type a = - sig - module type b = sig - module type c = sig - type t = A of t - end - end - end -end diff --git a/test/cases/nested.mli b/test/cases/nested.mli deleted file mode 100644 index 795cc7a6ff..0000000000 --- a/test/cases/nested.mli +++ /dev/null @@ -1,84 +0,0 @@ - -(** This comment needs to be here before #235 is fixed. *) - -(** {1 Module} *) - -(** This is module X. - - Some additional comments. *) -module X : sig - - (** {1 Type} *) - - type t - (** Some type. *) - - (** {1 Values} *) - - val x : t - (** The value of x. *) -end - - -(** {1 Module type} *) - -(** This is module type Y. - - Some additional comments. *) -module type Y = sig - - (** {1 Type} *) - - type t - (** Some type. *) - - (** {1 Values} *) - - val y : t - (** The value of y. *) -end - - -(** {1 Functor} *) - -(** This is a functor F. - - Some additional comments. *) -module F - (Arg1 : Y) (Arg2 : sig - (** {1 Type} *) - - type t - (** Some type. *) - end) : sig - (** {1 Type} *) - - type t = Arg1.t * Arg2.t - (** Some type. *) -end - - -(** {1 Class} *) - -(** This is class z. - - Some additional comments. *) -class virtual z : object - - val y : int - (** Some value. *) - - val mutable virtual y' : int - - (** {1 Methods} *) - - method z : int - (** Some method. *) - - method private virtual z' : int -end - - -class virtual inherits : object - inherit z -end diff --git a/test/cases/ocamlary.mli b/test/cases/ocamlary.mli deleted file mode 120000 index f8393b80e0..0000000000 --- a/test/cases/ocamlary.mli +++ /dev/null @@ -1 +0,0 @@ -../../src/ocamlary/ocamlary.mli \ No newline at end of file diff --git a/test/cases/recent.mli b/test/cases/recent.mli deleted file mode 100644 index a6ceb09654..0000000000 --- a/test/cases/recent.mli +++ /dev/null @@ -1,58 +0,0 @@ -(* These tests are run on only the most recent version of the compiler that is - explicitly supported by odoc. This allows us to test doc generation for new - language features. *) - -module type S = sig end - -module type S1 = S -> S - -type variant = - | A - | B of int - | C (** foo *) - | D (** {e bar} *) - | E of {a : int} - -type _ gadt = - | A : int gadt - | B : int -> string gadt (** foo *) - | C : {a : int} -> unit gadt - -type polymorphic_variant = [ - | `A - | `B of int - | `C (** foo *) - | `D (** bar *) -] - -type empty_variant = | - -type nonrec nonrec_ = int - - -(* Conjunctive types: dune compilation scheme exposes a bug in old - versions of the compiler *) -type empty_conj= X: [< `X of & 'a & int * float ] -> empty_conj -type conj = X: [< `X of int & [< `B of int & float ] ] -> conj -val empty_conj: [< `X of & 'a & int * float ] -val conj : [< `X of int & [< `B of int & float ] ] - -module Z : sig - module Y : sig - module X : sig - type 'a t - end - end -end - -module X : sig - module L := Z.Y - type t = int L.X.t - type u := int - type v = u L.X.t -end - -module type PolyS = - sig type a = [ `A ] type t = [ a | `B ] end with type a := [ `A ] - - diff --git a/test/cases/recent_impl.ml b/test/cases/recent_impl.ml deleted file mode 100644 index 7aa10c958d..0000000000 --- a/test/cases/recent_impl.ml +++ /dev/null @@ -1,29 +0,0 @@ -module Foo = struct - module A = struct - type t = A - end - module B = struct - type t = B - end -end - -open (Foo : module type of Foo with module A := Foo.A) - -module B = B - -open Set.Make(struct type t = Foo.A.t let compare = compare end) - -type u = t - -module type S = sig - module F: sig end -> sig type t end - module X: sig end - open F(X) - val f: t -end - -open Foo - -(* Check that regular open still works as expected *) -module B' = B - diff --git a/test/cases/section.mli b/test/cases/section.mli deleted file mode 100644 index 44e14fa9f0..0000000000 --- a/test/cases/section.mli +++ /dev/null @@ -1,30 +0,0 @@ -(* Blank lines are needed because of - https://caml.inria.fr/mantis/view.php?id=7701. *) - -(** This is the module comment. Eventually, sections won't be allowed in it. *) - -(** {1 Empty section} *) - -(** {1 Text only} - - Foo bar. *) - -(** {1 Aside only} *) - -(** Foo bar. *) - -(** {1 Value only} *) - -val foo : unit - -(** {1 Empty section} - - {1 within a comment} - - {2 and one with a nested section} *) - -(** {1 {e This} [section] {b title} {_has} {^markup}} - - But links are impossible thanks to the parser, so we never have trouble - rendering a section title in a table of contents – no link will be nested - inside another link. *) diff --git a/test/cases/stop.mli b/test/cases/stop.mli deleted file mode 100644 index 789257b134..0000000000 --- a/test/cases/stop.mli +++ /dev/null @@ -1,42 +0,0 @@ -(** This test cases exercises stop comments. *) - -val foo : int -(** This is normal commented text. *) - -(** The next value is [bar], and it should be missing from the documentation. - There is also an entire module, [M], which should also be hidden. It - contains a nested stop comment, but that stop comment should not turn - documentation back on in this outer module, because stop comments respect - scope. *) - -(**/**) - -val bar : int -(** OMG! *) - -module M : -sig - val baz : int - - (**/**) -end - -(**/**) - -(** Documentation is on again. - - Now, we have a nested module, and it has a stop comment between its two - items. We want to see that the first item is displayed, but the second is - missing, and the stop comment disables documenation only in that module, and - not in this outer module. *) - -module N : -sig - val quux : int - - (**/**) - - val omg : int -end - -val lol : int diff --git a/test/cases/stop_dead_link_doc.mli b/test/cases/stop_dead_link_doc.mli deleted file mode 100644 index 351e2b1b6c..0000000000 --- a/test/cases/stop_dead_link_doc.mli +++ /dev/null @@ -1,27 +0,0 @@ -(* This tests that references to hidden items (items in no documentation mode) don't get rendered *) - -module Foo : sig - type t -end - -type foo = | Bar of Foo.t - -type bar = | Bar of { field : Foo.t } - -type foo_ = Bar_ of (int * Foo.t) * int -type bar_ = Bar__ of Foo.t option - -(**/**) -module Another_Foo : sig - type t -end -(**/**) - -(* this should be rendered as `type another_foo` because it contains a reference to a hidden module*) -type another_foo = | Bar of Another_Foo.t - -(* this should be rendered as `type another_bar` because it contains a reference to a hidden module*) -type another_bar = | Bar of { field : Another_Foo.t } - -type another_foo_ = Bar_ of (int * Another_Foo.t) * int -type another_bar_ = Bar__ of Another_Foo.t option diff --git a/test/cases/toplevel_comments.mli b/test/cases/toplevel_comments.mli deleted file mode 100644 index 342a884c87..0000000000 --- a/test/cases/toplevel_comments.mli +++ /dev/null @@ -1,81 +0,0 @@ -(** A doc comment at the beginning of a module is considered to be that - module's doc. *) - -(** Doc of [T], part 1. *) -module type T = sig - (** Doc of [T], part 2. *) - - type t -end - -module Include_inline : sig - include T - (** @inline *) -end - -(** Doc of [Include_inline], part 1. *) -module Include_inline' : sig - (** Doc of [Include_inline], part 2. *) - - include T - (** part 3 - @inline *) -end - -module type Include_inline_T = sig - include T - (** @inline *) -end - -(** Doc of [Include_inline_T'], part 1. *) -module type Include_inline_T' = sig - (** Doc of [Include_inline_T'], part 2. *) - - include T - (** part 3 - @inline *) -end - -module M : sig - - (** Doc of [M] *) -end - -module M' : sig end -(** Doc of [M'] from outside *) - -(** Doc of [M''], part 1. *) -module M'' : sig - - (** Doc of [M''], part 2. *) -end - -module Alias : T -(** Doc of [Alias]. *) - -(** Doc of [c1], part 1. *) -class c1 : - int - -> object - - (** Doc of [c1], part 2. *) - end - -(** Doc of [ct], part 1. *) -class type ct = - object - - (** Doc of [ct], part 2. *) - end - -class c2 : ct -(** Doc of [c2]. *) - -module Ref_in_synopsis : sig - (** {!t}. - - This reference should resolve in the context of this module, even when - used as a synopsis. *) - - type t -end diff --git a/test/cases/type.mli b/test/cases/type.mli deleted file mode 100644 index 228aeec027..0000000000 --- a/test/cases/type.mli +++ /dev/null @@ -1,138 +0,0 @@ -type abstract -(** Some {e documentation}. *) - -type alias = int - -type private_ = private int - -type 'a constructor = 'a - -type arrow = int -> int - -type higher_order = (int -> int) -> int - -type labeled = l:int -> int - -type optional = ?l:int -> int - -type labeled_higher_order = (l:int -> int) -> (?l:int -> int) -> int - -type pair = int * int - -type parens_dropped = (int * int) - -type triple = int * int * int - -type nested_pair = (int * int) * int - -type instance = int constructor - -type long = labeled_higher_order -> [ `Bar | `Baz of triple] -> pair -> labeled -> higher_order -> (string -> int) -> (int,float,char,string,char,unit) CamlinternalFormatBasics.fmtty -> nested_pair -> arrow -> string -> nested_pair array - -type variant_e = {a : int} -type variant = - | A - | B of int - | C (** foo *) - | D (** {e bar} *) - | E of variant_e - -type variant_c = {a: int} -type _ gadt = - | A : int gadt - | B : int -> string gadt - | C : variant_c -> unit gadt - -type degenerate_gadt = - | A : degenerate_gadt - -type private_variant = private A - -type record = { - a : int; - mutable b : int; - c : int; (** foo *) - d : int; (** {e bar} *) - e : 'a. 'a; -} - -(* 4.02 doesn't preserve doc comments on polymorphic variant constructors, but - they should be restored if 4.02 support is dropped, or if creating a test - that won't run on 4.02. *) -type polymorphic_variant = [ - | `A - | `B of int - | `C of int * unit - | `D -] - -type polymorphic_variant_extension = [ - | polymorphic_variant (** {not e} shown *) - | `E -] - -type nested_polymorphic_variant = [ - | `A of [ `B | `C ] -] - -type private_extenion = private [> polymorphic_variant ] - -type object_ = < - a : int; - b : int; (** foo *) - c : int; (** {e bar} *) -> - -module type X = sig type t type u end - -type module_ = (module X) - -type module_substitution = (module X with type t = int and type u = unit) - -type +'a covariant - -type -'a contravariant - -type _ bivariant = int - -type ('a, 'b) binary - -type using_binary = (int, int) binary - -type 'custom name - -type 'a constrained = 'a constraint 'a = int - -type 'a exact_variant = 'a constraint 'a = [ `A | `B of int ] - -type 'a lower_variant = 'a constraint 'a = [> `A | `B of int ] - -type 'a any_variant = 'a constraint 'a = [> ] - -type 'a upper_variant = 'a constraint 'a = [< `A | `B of int ] - -type 'a named_variant = 'a constraint 'a = [< polymorphic_variant ] - -type 'a exact_object = 'a constraint 'a = - -type 'a lower_object = 'a constraint 'a = - -type 'a poly_object = 'a constraint 'a = - -type ('a, 'b) double_constrained = 'a * 'b - constraint 'a = int - constraint 'b = unit - -type as_ = (int as 'a) * 'a - -type extensible = .. - -type extensible += - | Extension (** Documentation for {!Extension}. *) - | Another_extension (** Documentation for {!Another_extension}. *) - -type mutually = A of recursive -and recursive = B of mutually - -(* Not a type, but analogous to extensions. *) -exception Foo of int * int diff --git a/test/cases/val.mli b/test/cases/val.mli deleted file mode 100644 index 9503f92397..0000000000 --- a/test/cases/val.mli +++ /dev/null @@ -1,7 +0,0 @@ -val documented : unit -(** Foo. *) - -val undocumented : unit - -(** Bar. *) -val documented_above : unit diff --git a/test/html/dune b/test/html/dune deleted file mode 100644 index 4430d38ffd..0000000000 --- a/test/html/dune +++ /dev/null @@ -1,16 +0,0 @@ -(executable - (name test) - (libraries alcotest markup)) - -(rule - (alias runtest) - (action - (run %{exe:test.exe})) - (deps - test.exe - %{workspace_root}/src/odoc/bin/main.exe - (source_tree ../cases) - (source_tree expect))) - -(cram - (deps %{bin:odoc})) diff --git a/test/html/expect/README.md b/test/html/expect/README.md deleted file mode 100644 index ed2485aae0..0000000000 --- a/test/html/expect/README.md +++ /dev/null @@ -1,3 +0,0 @@ -The symlink `odoc.css` in this directory is a silly hack that helps to display -the HTML files in `test/html/cases/*` correctly: they expect `odoc.css` at -relative path `../../odoc.css`. The same is true for `highlight.pack.js`. diff --git a/test/html/expect/highlight.pack.js b/test/html/expect/highlight.pack.js deleted file mode 120000 index 7b7b542659..0000000000 --- a/test/html/expect/highlight.pack.js +++ /dev/null @@ -1 +0,0 @@ -../../../src/vendor/highlight.pack.js \ No newline at end of file diff --git a/test/html/expect/odoc.css b/test/html/expect/odoc.css deleted file mode 120000 index 95360cfe37..0000000000 --- a/test/html/expect/odoc.css +++ /dev/null @@ -1 +0,0 @@ -../../../src/odoc/etc/odoc.css \ No newline at end of file diff --git a/test/html/expect/test_package+custom_theme,ml/Include/index.html b/test/html/expect/test_package+custom_theme,ml/Include/index.html deleted file mode 100644 index 33869d5ed5..0000000000 --- a/test/html/expect/test_package+custom_theme,ml/Include/index.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - Include (test_package+custom_theme,ml.Include) - - - - - - - - - - -
    -

    - Module Include -

    -
    -
    -
    -
    - module type Not_inlined = sig ... end -
    -
    -
    -
    - - include Not_inlined - -
    -
    - type t -
    -
    -
    -
    -
    -
    - module type Inlined = sig ... end -
    -
    -
    -
    -
    - type u -
    -
    -
    -
    -
    - module type Not_inlined_and_closed = sig ... end -
    -
    -
    -
    - - include Not_inlined_and_closed - -
    -
    - type v -
    -
    -
    -
    -
    -
    - module type Not_inlined_and_opened = sig ... end -
    -
    -
    -
    - - include Not_inlined_and_opened - -
    -
    - type w -
    -
    -
    -
    -
    -
    - module type Inherent_Module = sig ... end -
    -
    -
    -
    - - include Inherent_Module - -
    -
    - val a : t -
    -
    -
    -
    -
    -
    - module type Dorminant_Module = sig ... end -
    -
    -
    -
    - - include Dorminant_Module - -
    -
    - - include Inherent_Module - -
    -
    - val a : t -
    -
    -
    -
    -
    -
    - val a : u -
    -
    -
    -
    -
    - - diff --git a/test/html/expect/test_package+custom_theme,ml/Include2/index.html b/test/html/expect/test_package+custom_theme,ml/Include2/index.html deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/test/html/expect/test_package+custom_theme,ml/Include_sections/index.html b/test/html/expect/test_package+custom_theme,ml/Include_sections/index.html deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/test/html/expect/test_package+custom_theme,ml/Include_sections/module-type-Something/index.html b/test/html/expect/test_package+custom_theme,ml/Include_sections/module-type-Something/index.html deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/test/html/expect/test_package+custom_theme,ml/Module/index.html b/test/html/expect/test_package+custom_theme,ml/Module/index.html deleted file mode 100644 index a2968b9a1b..0000000000 --- a/test/html/expect/test_package+custom_theme,ml/Module/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - Module (test_package+custom_theme,ml.Module) - - - - - - - - - - -
    -

    - Module Module -

    -

    - Foo. -

    -
    -
    -
    -
    - val foo : unit -
    -
    -

    - The module needs at least one signature item, otherwise a bug causes the compiler to drop the module comment (above). See https://caml.inria.fr/mantis/view.php?id=7701. -

    -
    -
    -
    -
    - module type S = sig ... end -
    -
    -
    -
    - module type S1 -
    -
    -
    -
    - module type S2 = S -
    -
    -
    -
    - module type S3 = S with type t = int and type u = string -
    -
    -
    -
    - module type S4 = S with type t := int -
    -
    -
    -
    - module type S5 = S with type 'a v := 'a list -
    -
    -
    -
    - type ('a, 'b) result -
    -
    -
    -
    - module type S6 = S with type ('a, 'b) w := ('a'b) result -
    -
    -
    -
    - module M' : sig ... end -
    -
    -
    -
    - module type S7 = S with module M = M' -
    -
    -
    -
    - module type S8 = S with module M := M' -
    -
    -
    -
    - module type S9 = module type of M' -
    -
    -
    -
    - module Mutually : sig ... end -
    -
    -
    -
    - module Recursive : sig ... end -
    -
    -
    - - diff --git a/test/html/expect/test_package+custom_theme,ml/Section/index.html b/test/html/expect/test_package+custom_theme,ml/Section/index.html deleted file mode 100644 index 99071883fe..0000000000 --- a/test/html/expect/test_package+custom_theme,ml/Section/index.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - Section (test_package+custom_theme,ml.Section) - - - - - - - - - - -
    -

    - Module Section -

    -

    - This is the module comment. Eventually, sections won't be allowed in it. -

    -
    - -
    -

    - Empty section -

    -

    - Text only -

    -

    - Foo bar. -

    -

    - Aside only -

    -

    - Foo bar. -

    -

    - Value only -

    -
    -
    - val foo : unit -
    -
    -

    - Empty section -

    -

    - within a comment -

    -

    - and one with a nested section -

    -

    - This section title has markup -

    -

    - But links are impossible thanks to the parser, so we never have trouble rendering a section title in a table of contents – no link will be nested inside another link. -

    -
    - - diff --git a/test/html/expect/test_package+custom_theme,ml/Val/index.html b/test/html/expect/test_package+custom_theme,ml/Val/index.html deleted file mode 100644 index cffe59a264..0000000000 --- a/test/html/expect/test_package+custom_theme,ml/Val/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - Val (test_package+custom_theme,ml.Val) - - - - - - - - - - -
    -

    - Module Val -

    -
    -
    -
    -
    - val documented : unit -
    -
    -

    - Foo. -

    -
    -
    -
    -
    - val undocumented : unit -
    -
    -
    -
    - val documented_above : unit -
    -
    -

    - Bar. -

    -
    -
    -
    - - diff --git a/test/html/expect/test_package+ml/Alias/X/index.html b/test/html/expect/test_package+ml/Alias/X/index.html deleted file mode 100644 index 9de66487da..0000000000 --- a/test/html/expect/test_package+ml/Alias/X/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - X (test_package+ml.Alias.X) - - - - - - - - - - -
    -

    - Module Alias.X -

    -
    -
    -
    -
    - type t = int -
    -
    -

    - Module Foo__X documentation. This should appear in the documentation for the alias to this module 'X' -

    -
    -
    -
    - - diff --git a/test/html/expect/test_package+ml/Alias/index.html b/test/html/expect/test_package+ml/Alias/index.html deleted file mode 100644 index 370cc90eb2..0000000000 --- a/test/html/expect/test_package+ml/Alias/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Alias (test_package+ml.Alias) - - - - - - - - - - -
    -

    - Module Alias -

    -
    -
    -
    -
    - module Foo__X : sig ... end -
    -
    -
    -
    - module X : sig ... end -
    -
    -
    - - diff --git a/test/html/expect/test_package+ml/Bugs/index.html b/test/html/expect/test_package+ml/Bugs/index.html deleted file mode 100644 index d03c639df1..0000000000 --- a/test/html/expect/test_package+ml/Bugs/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Bugs (test_package+ml.Bugs) - - - - - - - - - - -
    -

    - Module Bugs -

    -
    -
    -
    -
    - type 'a opt = 'a option -
    -
    -
    -
    - val foo : ?bar:'a -> unit -> unit -
    -
    -

    - Triggers an assertion failure when https://github.com/ocaml/odoc/issues/101 is not fixed. -

    -
    -
    -
    - - diff --git a/test/html/expect/test_package+ml/Bugs_post_406/index.html b/test/html/expect/test_package+ml/Bugs_post_406/index.html deleted file mode 100644 index 4dfbde186b..0000000000 --- a/test/html/expect/test_package+ml/Bugs_post_406/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Bugs_post_406 (test_package+ml.Bugs_post_406) - - - - - - - - - - -
    -

    - Module Bugs_post_406 -

    -

    - Let-open in class types, https://github.com/ocaml/odoc/issues/543 This was added to the language in 4.06 -

    -
    -
    -
    -
    - class type let_open = object ... end -
    -
    -
    -
    - class let_open' : object ... end -
    -
    -
    - - diff --git a/test/html/expect/test_package+ml/Bugs_pre_410/index.html b/test/html/expect/test_package+ml/Bugs_pre_410/index.html deleted file mode 100644 index 4c95e2bfba..0000000000 --- a/test/html/expect/test_package+ml/Bugs_pre_410/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Bugs_pre_410 (test_package+ml.Bugs_pre_410) - - - - - - - - - - -
    -

    - Module Bugs_pre_410 -

    -
    -
    -
    -
    - type 'a opt' = int option -
    -
    -
    -
    - val foo' : ?bar:'a -> unit -> unit -
    -
    -

    - Similar to Bugs, but the printed type of ~bar should be int, not 'a. This probably requires fixing in the compiler. See https://github.com/ocaml/odoc/pull/230#issuecomment-433226807. -

    -
    -
    -
    - - diff --git a/test/html/expect/test_package+ml/Class/index.html b/test/html/expect/test_package+ml/Class/index.html deleted file mode 100644 index ea892bdaa9..0000000000 --- a/test/html/expect/test_package+ml/Class/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - Class (test_package+ml.Class) - - - - - - - - - - -
    -

    - Module Class -

    -
    -
    -
    -
    - class type empty = object ... end -
    -
    -
    -
    - class type mutually = object ... end -
    -
    -
    -
    - class type recursive = object ... end -
    -
    -
    -
    - class mutually' : mutually -
    -
    -
    -
    - class recursive' : recursive -
    -
    -
    -
    - class type virtual empty_virtual = object ... end -
    -
    -
    -
    - class virtual empty_virtual' : empty -
    -
    -
    -
    - class type 'a polymorphic = object ... end -
    -
    -
    -
    - class 'a polymorphic' : 'a polymorphic -
    -
    -
    - - diff --git a/test/html/expect/test_package+ml/External/index.html b/test/html/expect/test_package+ml/External/index.html deleted file mode 100644 index 60a139cdbc..0000000000 --- a/test/html/expect/test_package+ml/External/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - External (test_package+ml.External) - - - - - - - - - - -
    -

    - Module External -

    -
    -
    -
    -
    - val foo : unit -> unit -
    -
    -

    - Foo bar. -

    -
    -
    -
    - - diff --git a/test/html/expect/test_package+ml/Functor/index.html b/test/html/expect/test_package+ml/Functor/index.html deleted file mode 100644 index 3f5935f285..0000000000 --- a/test/html/expect/test_package+ml/Functor/index.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - Functor (test_package+ml.Functor) - - - - - - - - - - -
    -

    - Module Functor -

    -
    -
    -
    -
    - module type S = sig ... end -
    -
    -
    -
    - module type S1 = functor (_ : S) -> S -
    -
    -
    -
    - module F1 (Arg : S) : S -
    -
    -
    -
    - module F2 (Arg : S) : S with type t = Arg.t -
    -
    -
    -
    - module F3 (Arg : S) : sig ... end -
    -
    -
    -
    - module F4 (Arg : S) : S -
    -
    -
    -
    - module F5 () : S -
    -
    -
    - - diff --git a/test/html/expect/test_package+ml/Include/index.html b/test/html/expect/test_package+ml/Include/index.html deleted file mode 100644 index c6de2f9505..0000000000 --- a/test/html/expect/test_package+ml/Include/index.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - Include (test_package+ml.Include) - - - - - - - - - - -
    -

    - Module Include -

    -
    -
    -
    -
    - module type Not_inlined = sig ... end -
    -
    -
    -
    - - include Not_inlined - -
    -
    - type t -
    -
    -
    -
    -
    -
    - module type Inlined = sig ... end -
    -
    -
    -
    -
    - type u -
    -
    -
    -
    -
    - module type Not_inlined_and_closed = sig ... end -
    -
    -
    -
    - - include Not_inlined_and_closed - -
    -
    - type v -
    -
    -
    -
    -
    -
    - module type Not_inlined_and_opened = sig ... end -
    -
    -
    -
    - - include Not_inlined_and_opened - -
    -
    - type w -
    -
    -
    -
    -
    -
    - module type Inherent_Module = sig ... end -
    -
    -
    -
    - - include Inherent_Module - -
    -
    - val a : t -
    -
    -
    -
    -
    -
    - module type Dorminant_Module = sig ... end -
    -
    -
    -
    - - include Dorminant_Module - -
    -
    - - include Inherent_Module - -
    -
    - val a : t -
    -
    -
    -
    -
    -
    - val a : u -
    -
    -
    -
    -
    - - diff --git a/test/html/expect/test_package+ml/Include2/Y_include_doc/index.html b/test/html/expect/test_package+ml/Include2/Y_include_doc/index.html deleted file mode 100644 index 5dfaf3370b..0000000000 --- a/test/html/expect/test_package+ml/Include2/Y_include_doc/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - Y_include_doc (test_package+ml.Include2.Y_include_doc) - - - - - - - - - - -
    -

    - Module Include2.Y_include_doc -

    -
    -
    -
    -
    -

    - Doc attached to include Y. Y's top-comment shouldn't appear here. -

    -
    -
    - - include module type of struct include Y end - -
    -
    - type t = Y.t -
    -
    -
    -
    -
    - - diff --git a/test/html/expect/test_package+ml/Include2/Y_include_synopsis/index.html b/test/html/expect/test_package+ml/Include2/Y_include_synopsis/index.html deleted file mode 100644 index ba5ffa2601..0000000000 --- a/test/html/expect/test_package+ml/Include2/Y_include_synopsis/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Y_include_synopsis (test_package+ml.Include2.Y_include_synopsis) - - - - - - - - - - -
    -

    - Module Include2.Y_include_synopsis -

    -

    - The include Y below should have the synopsis from Y's top-comment attached to it. -

    -
    -
    -
    -
    - - include module type of struct include Y end - -
    -
    - type t = Y.t -
    -
    -
    -
    -
    - - diff --git a/test/html/expect/test_package+ml/Include2/index.html b/test/html/expect/test_package+ml/Include2/index.html deleted file mode 100644 index ac6698150a..0000000000 --- a/test/html/expect/test_package+ml/Include2/index.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - Include2 (test_package+ml.Include2) - - - - - - - - - - -
    -

    - Module Include2 -

    -
    -
    -
    -
    - module X : sig ... end -
    -
    -

    - Comment about X that should not appear when including X below. -

    -
    -
    -
    -
    - - include module type of struct include X end - -

    - Comment about X that should not appear when including X below. -

    -
    -
    - type t = int -
    -
    -
    -
    -
    -
    - module Y : sig ... end -
    -
    -

    - Top-comment of Y. -

    -
    -
    -
    -
    - module Y_include_synopsis : sig ... end -
    -
    -

    - The include Y below should have the synopsis from Y's top-comment attached to it. -

    -
    -
    -
    -
    - module Y_include_doc : sig ... end -
    -
    -
    - - diff --git a/test/html/expect/test_package+ml/Include_sections/index.html b/test/html/expect/test_package+ml/Include_sections/index.html deleted file mode 100644 index adeaa7e7b0..0000000000 --- a/test/html/expect/test_package+ml/Include_sections/index.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - Include_sections (test_package+ml.Include_sections) - - - - - - - - - - -
    -

    - Module Include_sections -

    -
    - -
    -
    -
    - module type Something = sig ... end -
    -
    -

    - A module type. -

    -
    -
    -

    - Let's include Something once -

    -
    -
    -
    - val something : unit -
    -
    -

    - Something 1 -

    -

    - foo -

    -
    -
    - val foo : unit -
    -
    -

    - Something 2 -

    -
    -
    - val bar : unit -
    -
    -

    - foo bar -

    -
    -
    -

    - Something 1-bis -

    -

    - Some text. -

    -
    -

    - Second include -

    -

    - Let's include Something a second time: the heading level should be shift here. -

    -
    -
    -
    - val something : unit -
    -
    -

    - Something 1 -

    -

    - foo -

    -
    -
    - val foo : unit -
    -
    -

    - Something 2 -

    -
    -
    - val bar : unit -
    -
    -

    - foo bar -

    -
    -
    -

    - Something 1-bis -

    -

    - Some text. -

    -
    -

    - Third include -

    -

    - Shifted some more. -

    -
    -
    -
    - val something : unit -
    -
    -

    - Something 1 -

    -

    - foo -

    -
    -
    - val foo : unit -
    -
    -
    - Something 2 -
    -
    -
    - val bar : unit -
    -
    -

    - foo bar -

    -
    -
    -

    - Something 1-bis -

    -

    - Some text. -

    -
    -

    - And let's include it again, but without inlining it this time: the ToC shouldn't grow. -

    -
    -
    - - include Something - -
    -
    - val something : unit -
    -
    -

    - Something 1 -

    -

    - foo -

    -
    -
    - val foo : unit -
    -
    -

    - Something 2 -

    -
    -
    - val bar : unit -
    -
    -

    - foo bar -

    -
    -
    -

    - Something 1-bis -

    -

    - Some text. -

    -
    -
    -
    - - diff --git a/test/html/expect/test_package+ml/Include_sections/module-type-Something/index.html b/test/html/expect/test_package+ml/Include_sections/module-type-Something/index.html deleted file mode 100644 index 0b98e45897..0000000000 --- a/test/html/expect/test_package+ml/Include_sections/module-type-Something/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - Something (test_package+ml.Include_sections.Something) - - - - - - - - - - -
    -

    - Module type Include_sections.Something -

    -

    - A module type. -

    -
    - -
    -
    -
    - val something : unit -
    -
    -

    - Something 1 -

    -

    - foo -

    -
    -
    - val foo : unit -
    -
    -

    - Something 2 -

    -
    -
    - val bar : unit -
    -
    -

    - foo bar -

    -
    -
    -

    - Something 1-bis -

    -

    - Some text. -

    -
    - - diff --git a/test/html/expect/test_package+ml/Interlude/index.html b/test/html/expect/test_package+ml/Interlude/index.html deleted file mode 100644 index 0d62f6863b..0000000000 --- a/test/html/expect/test_package+ml/Interlude/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - Interlude (test_package+ml.Interlude) - - - - - - - - - - -
    -

    - Module Interlude -

    -

    - This is the comment associated to the module. -

    -
    -
    -

    - Some separate stray text at the top of the module. -

    -
    -
    - val foo : unit -
    -
    -

    - Foo. -

    -
    -
    -

    - Some stray text that is not associated with any signature item. -

    -

    - It has multiple paragraphs. -

    -

    - A separate block of stray text, adjacent to the preceding one. -

    -
    -
    - val bar : unit -
    -
    -

    - Bar. -

    -
    -
    -
    -
    - val multiple : unit -
    -
    -
    -
    - val signature : unit -
    -
    -
    -
    - val items : unit -
    -
    -

    - Stray text at the bottom of the module. -

    -
    - - diff --git a/test/html/expect/test_package+ml/Labels/index.html b/test/html/expect/test_package+ml/Labels/index.html deleted file mode 100644 index d722a6460f..0000000000 --- a/test/html/expect/test_package+ml/Labels/index.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - Labels (test_package+ml.Labels) - - - - - - - - - - -
    -

    - Module Labels -

    -
    - -
    -

    - Attached to unit -

    -

    - Attached to nothing -

    -
    -
    - module A : sig ... end -
    -
    -
    -
    - type t -
    -
    -

    - Attached to type -

    -
    -
    -
    -
    - val f : t -
    -
    -

    - Attached to value -

    -
    -
    -
    -
    - val e : unit -> t -
    -
    -

    - Attached to external -

    -
    -
    -
    -
    - module type S = sig ... end -
    -
    -
    -
    - class c : object ... end -
    -
    -
    -
    - class type cs = object ... end -
    -
    -
    -
    - exception E -
    -
    -

    - Attached to exception -

    -
    -
    -
    -
    - type x = .. -
    -
    -
    -
    - type x += - - - - - - -
    - | X -
    -
    -
    -

    - Attached to extension -

    -
    -
    -
    -
    - module S := A -
    -
    -

    - Attached to module subst -

    -
    -
    -
    -
    - type s := t -
    -
    -

    - Attached to type subst -

    -
    -
    -
    -
    - type u = - - - - - - - -
    - | A' - - (* -

    - Attached to constructor -

    - *) -
    -
    -
    -
    -
    - type v = { - - - - - - - -
    - f : t; - - (* -

    - Attached to field -

    - *) -
    - } -
    -
    -

    - Testing that labels can be referenced -

    - -
    - - diff --git a/test/html/expect/test_package+ml/Markup/index.html b/test/html/expect/test_package+ml/Markup/index.html deleted file mode 100644 index a4712ed417..0000000000 --- a/test/html/expect/test_package+ml/Markup/index.html +++ /dev/null @@ -1,378 +0,0 @@ - - - - - Markup (test_package+ml.Markup) - - - - - - - - - - -
    -

    - Module Markup -

    -

    - Here, we test the rendering of comment markup. -

    -
    - -
    -

    - Sections -

    -

    - Let's get these done first, because sections will be used to break up the rest of this test. -

    -

    - Besides the section heading above, there are also -

    -

    - Subsection headings -

    -

    - and -

    -

    - Sub-subsection headings -

    -

    - but odoc has banned deeper headings. There are also title headings, but they are only allowed in mld files. -

    -

    - Anchors -

    -

    - Sections can have attached Anchors, and it is possible to link to them. Links to section headers should not be set in source code style. -

    -
    - Paragraph -
    -

    - Individual paragraphs can have a heading. -

    -
    - Subparagraph -
    -

    - Parts of a longer paragraph that can be considered alone can also have headings. -

    -

    - Styling -

    -

    - This paragraph has some styled elements: bold and italic, bold italic, emphasis, emphasis within emphasis, bold italic, superscript, subscript. The line spacing should be enough for superscripts and subscripts not to look odd. -

    -

    - Note: In italics emphasis is rendered as normal text while emphasis in emphasis is rendered in italics. It also work the same in links in italics with emphasis in emphasis. -

    -

    - code is a different kind of markup that doesn't allow nested markup. -

    -

    - It's possible for two markup elements to appear next to each other and have a space, and appear nextto each other with no space. It doesn't matter how much space it was in the source: in this sentence, it was two space characters. And in this one, there is a newline. -

    -

    - This is also true between non-code markup and code. -

    -

    - Code can appear inside other markup. Its display shouldn't be affected. -

    - -

    - This is a link. It sends you to the top of this page. Links can have markup inside them: bold, italics, emphasis, superscript, subscript, and code. Links can also be nested inside markup. Links cannot be nested inside each other. This link has no replacement text: #. The text is filled in by odoc. This is a shorthand link: #. The text is also filled in by odoc in this case. -

    -

    - This is a reference to foo. References can have replacement text: the value foo. Except for the special lookup support, references are pretty much just like links. The replacement text can have nested styles: bold, italic, emphasis, superscript, subscript, and code. It's also possible to surround a reference in a style: foo. References can't be nested inside references, and links and references can't be nested inside each other. -

    -

    - Preformatted text -

    -

    - This is a code block: -

    -
    let foo = ()
    -(** There are some nested comments in here, but an unpaired comment
    -    terminator would terminate the whole doc surrounding comment. It's
    -    best to keep code blocks no wider than 72 characters. *)
    -
    -let bar =
    -  ignore foo
    -

    - There are also verbatim blocks: -

    -
    The main difference is these don't get syntax highlighting.
    -

    - Lists -

    -
      -
    • - This is a -
    • -
    • - shorthand bulleted list, -
    • -
    • - and the paragraphs in each list item support styling. -
    • -
    -
      -
    1. - This is a -
    2. -
    3. - shorthand numbered list. -
    4. -
    -
      -
    • - Shorthand list items can span multiple lines, however trying to put two paragraphs into a shorthand list item using a double line break -
    • -
    -

    - just creates a paragraph outside the list. -

    -
      -
    • - Similarly, inserting a blank line between two list items -
    • -
    -
      -
    • - creates two separate lists. -
    • -
    -
      -
    • -

      - To get around this limitation, one -

      -

      - can use explicitly-delimited lists. -

      -
    • -
    • - This one is bulleted, -
    • -
    -
      -
    1. - but there is also the numbered variant. -
    2. -
    -
      -
    • -
        -
      • - lists -
      • -
      • - can be nested -
      • -
      • - and can include references -
      • -
      • - foo -
      • -
      -
    • -
    -

    - Unicode -

    -

    - The parser supports any ASCII-compatible encoding, in particuλar UTF-8. -

    -

    - Raw HTML -

    -

    - Raw HTML can be as inline elements into sentences. -

    -
    - If the raw HTML is the only thing in a paragraph, it is treated as a block - element, and won't be wrapped in paragraph tags by the HTML generator. -
    -

    - Modules -

    -
      -
        -
      • - X -
      • -
      -
        -
      • - X -
      • -
      • - Y -
      • -
      • - Z -
      • -
      -

      - Tags -

      -

      - Each comment can end with zero or more tags. Here are some examples: -

      -
        -
      • - author antron -
      • -
      -
        -
      • - deprecated -

        - a long time ago -

        -
      • -
      -
        -
      • - parameter foo -

        - unused -

        -
      • -
      -
        -
      • - raises Failure -

        - always -

        -
      • -
      -
        -
      • - returns -

        - never -

        -
      • -
      -
        -
      • - see # -

        - this url -

        -
      • -
      -
        -
      • - see foo.ml -

        - this file -

        -
      • -
      -
        -
      • - see Foo -

        - this document -

        -
      • -
      -
        -
      • - since 0 -
      • -
      -
        -
      • - before 1.0 -

        - it was in beta -

        -
      • -
      -
        -
      • - version -1 -
      • -
      -
      -
      - val foo : unit -
      -
      -

      - Comments in structure items support markup, too. -

      -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module/index.html b/test/html/expect/test_package+ml/Module/index.html deleted file mode 100644 index 680bf1268a..0000000000 --- a/test/html/expect/test_package+ml/Module/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - Module (test_package+ml.Module) - - - - - - - - - - -
      -

      - Module Module -

      -

      - Foo. -

      -
      -
      -
      -
      - val foo : unit -
      -
      -

      - The module needs at least one signature item, otherwise a bug causes the compiler to drop the module comment (above). See https://caml.inria.fr/mantis/view.php?id=7701. -

      -
      -
      -
      -
      - module type S = sig ... end -
      -
      -
      -
      - module type S1 -
      -
      -
      -
      - module type S2 = S -
      -
      -
      -
      - module type S3 = S with type t = int and type u = string -
      -
      -
      -
      - module type S4 = S with type t := int -
      -
      -
      -
      - module type S5 = S with type 'a v := 'a list -
      -
      -
      -
      - type ('a, 'b) result -
      -
      -
      -
      - module type S6 = S with type ('a, 'b) w := ('a'b) result -
      -
      -
      -
      - module M' : sig ... end -
      -
      -
      -
      - module type S7 = S with module M = M' -
      -
      -
      -
      - module type S8 = S with module M := M' -
      -
      -
      -
      - module type S9 = module type of M' -
      -
      -
      -
      - module Mutually : sig ... end -
      -
      -
      -
      - module Recursive : sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/index.html deleted file mode 100644 index 8a5f014890..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - Basic (test_package+ml.Module_type_subst.Basic) - - - - - - - - - - -
      -

      - Module Module_type_subst.Basic -

      -
      -
      -
      -
      - module type u = sig ... end -
      -
      -
      -
      - module type with_ = u with module type T = s -
      -
      -
      -
      - module type u2 = sig ... end -
      -
      -
      -
      - module type with_2 = u2 with module type T = sig ... end -
      -
      -
      -
      - module type a = sig ... end -
      -
      -
      -
      - module type c = a with module type b := s -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-a/M/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-a/M/index.html deleted file mode 100644 index cd40c35c64..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-a/M/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - M (test_package+ml.Module_type_subst.Basic.a.M) - - - - - - - - - - -
      -

      - Module a.M -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-a/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-a/index.html deleted file mode 100644 index d65bba232d..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-a/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - a (test_package+ml.Module_type_subst.Basic.a) - - - - - - - - - - -
      -

      - Module type Basic.a -

      -
      -
      -
      -
      - module type b = s -
      -
      -
      -
      - module M : b -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-a/module-type-b/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-a/module-type-b/index.html deleted file mode 100644 index 730a3dfda9..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-a/module-type-b/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - b (test_package+ml.Module_type_subst.Basic.a.b) - - - - - - - - - - -
      -

      - Module type a.b -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-c/M/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-c/M/index.html deleted file mode 100644 index 16294c9acd..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-c/M/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - M (test_package+ml.Module_type_subst.Basic.c.M) - - - - - - - - - - -
      -

      - Module c.M -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-c/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-c/index.html deleted file mode 100644 index 4e072dc657..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-c/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - c (test_package+ml.Module_type_subst.Basic.c) - - - - - - - - - - -
      -

      - Module type Basic.c -

      -
      -
      -
      -
      - module M : s -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u/index.html deleted file mode 100644 index 1c2ed64940..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - u (test_package+ml.Module_type_subst.Basic.u) - - - - - - - - - - -
      -

      - Module type Basic.u -

      -
      -
      -
      -
      - module type T = sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u/module-type-T/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u/module-type-T/index.html deleted file mode 100644 index f73d57eeeb..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u/module-type-T/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - T (test_package+ml.Module_type_subst.Basic.u.T) - - - - - - - - - - -
      -

      - Module type u.T -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u2/M/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u2/M/index.html deleted file mode 100644 index 8162202651..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u2/M/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - M (test_package+ml.Module_type_subst.Basic.u2.M) - - - - - - - - - - -
      -

      - Module u2.M -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u2/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u2/index.html deleted file mode 100644 index 546e368308..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u2/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - u2 (test_package+ml.Module_type_subst.Basic.u2) - - - - - - - - - - -
      -

      - Module type Basic.u2 -

      -
      -
      -
      -
      - module type T = sig ... end -
      -
      -
      -
      - module M : T -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u2/module-type-T/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u2/module-type-T/index.html deleted file mode 100644 index 488c2110d8..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-u2/module-type-T/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - T (test_package+ml.Module_type_subst.Basic.u2.T) - - - - - - - - - - -
      -

      - Module type u2.T -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_/index.html deleted file mode 100644 index de9a524616..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - with_ (test_package+ml.Module_type_subst.Basic.with_) - - - - - - - - - - -
      -

      - Module type Basic.with_ -

      -
      -
      -
      -
      - module type T = s -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_/module-type-T/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_/module-type-T/index.html deleted file mode 100644 index d3fb5c1a57..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_/module-type-T/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - T (test_package+ml.Module_type_subst.Basic.with_.T) - - - - - - - - - - -
      -

      - Module type with_.T -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_2/M/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_2/M/index.html deleted file mode 100644 index cb941914fd..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_2/M/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - M (test_package+ml.Module_type_subst.Basic.with_2.M) - - - - - - - - - - -
      -

      - Module with_2.M -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_2/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_2/index.html deleted file mode 100644 index c6343f2310..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_2/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - with_2 (test_package+ml.Module_type_subst.Basic.with_2) - - - - - - - - - - -
      -

      - Module type Basic.with_2 -

      -
      -
      -
      -
      - module type T = sig ... end -
      -
      -
      -
      - module M : T -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_2/module-type-T/index.html b/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_2/module-type-T/index.html deleted file mode 100644 index acbccb6b9a..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Basic/module-type-with_2/module-type-T/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - T (test_package+ml.Module_type_subst.Basic.with_2.T) - - - - - - - - - - -
      -

      - Module type with_2.T -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Local/index.html b/test/html/expect/test_package+ml/Module_type_subst/Local/index.html deleted file mode 100644 index bbd72d7ad0..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Local/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - Local (test_package+ml.Module_type_subst.Local) - - - - - - - - - - -
      -

      - Module Module_type_subst.Local -

      -
      -
      -
      -
      - type local := int * int -
      -
      -
      -
      - module type local := sig ... end -
      -
      -
      -
      - module type w = local -
      -
      -
      -
      - module type s = sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Local/module-type-local/index.html b/test/html/expect/test_package+ml/Module_type_subst/Local/module-type-local/index.html deleted file mode 100644 index 520a7cf32e..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Local/module-type-local/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - local (test_package+ml.Module_type_subst.Local.local) - - - - - - - - - - -
      -

      - Module type Local.local -

      -
      -
      -
      -
      - type t = local -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Local/module-type-s/index.html b/test/html/expect/test_package+ml/Module_type_subst/Local/module-type-s/index.html deleted file mode 100644 index c31890012b..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Local/module-type-s/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - s (test_package+ml.Module_type_subst.Local.s) - - - - - - - - - - -
      -

      - Module type Local.s -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Local/module-type-w/index.html b/test/html/expect/test_package+ml/Module_type_subst/Local/module-type-w/index.html deleted file mode 100644 index 367914e3c4..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Local/module-type-w/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - w (test_package+ml.Module_type_subst.Local.w) - - - - - - - - - - -
      -

      - Module type Local.w -

      -
      -
      -
      -
      - type t = local -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Nested/index.html b/test/html/expect/test_package+ml/Module_type_subst/Nested/index.html deleted file mode 100644 index 8b3cbf4660..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Nested/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Nested (test_package+ml.Module_type_subst.Nested) - - - - - - - - - - -
      -

      - Module Module_type_subst.Nested -

      -
      -
      -
      -
      - module type nested = sig ... end -
      -
      -
      -
      - module type with_ = nested with module type N.t = s -
      -
      -
      -
      - module type with_subst = nested with module type N.t := s -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-nested/N/index.html b/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-nested/N/index.html deleted file mode 100644 index beb526fafd..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-nested/N/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - N (test_package+ml.Module_type_subst.Nested.nested.N) - - - - - - - - - - -
      -

      - Module nested.N -

      -
      -
      -
      -
      - module type t = sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-nested/N/module-type-t/index.html b/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-nested/N/module-type-t/index.html deleted file mode 100644 index cf497d1290..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-nested/N/module-type-t/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - t (test_package+ml.Module_type_subst.Nested.nested.N.t) - - - - - - - - - - -
      -

      - Module type N.t -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-nested/index.html b/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-nested/index.html deleted file mode 100644 index 029b4df0bf..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-nested/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - nested (test_package+ml.Module_type_subst.Nested.nested) - - - - - - - - - - -
      -

      - Module type Nested.nested -

      -
      -
      -
      -
      - module N : sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_/N/index.html b/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_/N/index.html deleted file mode 100644 index f1876ccc82..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_/N/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - N (test_package+ml.Module_type_subst.Nested.with_.N) - - - - - - - - - - -
      -

      - Module with_.N -

      -
      -
      -
      -
      - module type t = s -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_/N/module-type-t/index.html b/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_/N/module-type-t/index.html deleted file mode 100644 index 4c8c74a235..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_/N/module-type-t/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - t (test_package+ml.Module_type_subst.Nested.with_.N.t) - - - - - - - - - - -
      -

      - Module type N.t -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_/index.html b/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_/index.html deleted file mode 100644 index 938e2e6b73..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - with_ (test_package+ml.Module_type_subst.Nested.with_) - - - - - - - - - - -
      -

      - Module type Nested.with_ -

      -
      -
      -
      -
      - module N : sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_subst/N/index.html b/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_subst/N/index.html deleted file mode 100644 index 5bc7b16daf..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_subst/N/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - N (test_package+ml.Module_type_subst.Nested.with_subst.N) - - - - - - - - - - -
      -

      - Module with_subst.N -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_subst/index.html b/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_subst/index.html deleted file mode 100644 index a4469548d1..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Nested/module-type-with_subst/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - with_subst (test_package+ml.Module_type_subst.Nested.with_subst) - - - - - - - - - - -
      -

      - Module type Nested.with_subst -

      -
      -
      -
      -
      - module N : sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Structural/index.html b/test/html/expect/test_package+ml/Module_type_subst/Structural/index.html deleted file mode 100644 index dfaa5d7a73..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Structural/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Structural (test_package+ml.Module_type_subst.Structural) - - - - - - - - - - -
      -

      - Module Module_type_subst.Structural -

      -
      -
      -
      -
      - module type u = sig ... end -
      -
      -
      -
      - module type w = u with module type a = sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/index.html b/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/index.html deleted file mode 100644 index 1a043aff2e..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - u (test_package+ml.Module_type_subst.Structural.u) - - - - - - - - - - -
      -

      - Module type Structural.u -

      -
      -
      -
      -
      - module type a = sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/module-type-a/index.html b/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/module-type-a/index.html deleted file mode 100644 index aa09b77169..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/module-type-a/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - a (test_package+ml.Module_type_subst.Structural.u.a) - - - - - - - - - - -
      -

      - Module type u.a -

      -
      -
      -
      -
      - module type b = sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/module-type-a/module-type-b/index.html b/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/module-type-a/module-type-b/index.html deleted file mode 100644 index f3ad918978..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/module-type-a/module-type-b/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - b (test_package+ml.Module_type_subst.Structural.u.a.b) - - - - - - - - - - -
      -

      - Module type a.b -

      -
      -
      -
      -
      - module type c = sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/module-type-a/module-type-b/module-type-c/index.html b/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/module-type-a/module-type-b/module-type-c/index.html deleted file mode 100644 index b2eed83dd9..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-u/module-type-a/module-type-b/module-type-c/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - c (test_package+ml.Module_type_subst.Structural.u.a.b.c) - - - - - - - - - - -
      -

      - Module type b.c -

      -
      -
      -
      -
      - type t = - - - - - - -
      - | A of t -
      -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/index.html b/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/index.html deleted file mode 100644 index e275d414b1..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - w (test_package+ml.Module_type_subst.Structural.w) - - - - - - - - - - -
      -

      - Module type Structural.w -

      -
      -
      -
      -
      - module type a = sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/module-type-a/index.html b/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/module-type-a/index.html deleted file mode 100644 index e6871f2f18..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/module-type-a/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - a (test_package+ml.Module_type_subst.Structural.w.a) - - - - - - - - - - -
      -

      - Module type w.a -

      -
      -
      -
      -
      - module type b = sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/module-type-a/module-type-b/index.html b/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/module-type-a/module-type-b/index.html deleted file mode 100644 index 1a2f693d61..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/module-type-a/module-type-b/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - b (test_package+ml.Module_type_subst.Structural.w.a.b) - - - - - - - - - - -
      -

      - Module type a.b -

      -
      -
      -
      -
      - module type c = sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/module-type-a/module-type-b/module-type-c/index.html b/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/module-type-a/module-type-b/module-type-c/index.html deleted file mode 100644 index 48cfa14f7b..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/Structural/module-type-w/module-type-a/module-type-b/module-type-c/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - c (test_package+ml.Module_type_subst.Structural.w.a.b.c) - - - - - - - - - - -
      -

      - Module type b.c -

      -
      -
      -
      -
      - type t = - - - - - - -
      - | A of t -
      -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/index.html b/test/html/expect/test_package+ml/Module_type_subst/index.html deleted file mode 100644 index c5dc85733f..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - Module_type_subst (test_package+ml.Module_type_subst) - - - - - - - - - - -
      -

      - Module Module_type_subst -

      -
      -
      -
      -
      - module Local : sig ... end -
      -
      -
      -
      - module type s = sig ... end -
      -
      -
      -
      - module Basic : sig ... end -
      -
      -
      -
      - module Nested : sig ... end -
      -
      -
      -
      - module Structural : sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Module_type_subst/module-type-s/index.html b/test/html/expect/test_package+ml/Module_type_subst/module-type-s/index.html deleted file mode 100644 index 70dab66797..0000000000 --- a/test/html/expect/test_package+ml/Module_type_subst/module-type-s/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -s (test_package+ml.Module_type_subst.s)

      Module type Module_type_subst.s

      \ No newline at end of file diff --git a/test/html/expect/test_package+ml/Nested/F/argument-1-Arg1/index.html b/test/html/expect/test_package+ml/Nested/F/argument-1-Arg1/index.html deleted file mode 100644 index 9e7bffbbe2..0000000000 --- a/test/html/expect/test_package+ml/Nested/F/argument-1-Arg1/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - Arg1 (test_package+ml.Nested.F.1-Arg1) - - - - - - - - - - -
      -

      - Parameter F.1-Arg1 -

      -
      - -
      -

      - Type -

      -
      -
      - type t -
      -
      -

      - Some type. -

      -
      -
      -

      - Values -

      -
      -
      - val y : t -
      -
      -

      - The value of y. -

      -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Nested/F/argument-2-Arg2/index.html b/test/html/expect/test_package+ml/Nested/F/argument-2-Arg2/index.html deleted file mode 100644 index 4008b523e9..0000000000 --- a/test/html/expect/test_package+ml/Nested/F/argument-2-Arg2/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - Arg2 (test_package+ml.Nested.F.2-Arg2) - - - - - - - - - - -
      -

      - Parameter F.2-Arg2 -

      -
      - -
      -

      - Type -

      -
      -
      - type t -
      -
      -

      - Some type. -

      -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Nested/F/index.html b/test/html/expect/test_package+ml/Nested/F/index.html deleted file mode 100644 index b3b0c97c76..0000000000 --- a/test/html/expect/test_package+ml/Nested/F/index.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - F (test_package+ml.Nested.F) - - - - - - - - - - -
      -

      - Module Nested.F -

      -

      - This is a functor F. -

      -

      - Some additional comments. -

      -
      - -
      -

      - Type -

      -

      - Parameters -

      -
      -
      - module Arg1 : Y -
      -
      -
      -
      - module Arg2 : sig ... end -
      -
      -

      - Signature -

      -
      -
      - type t = Arg1.t * Arg2.t -
      -
      -

      - Some type. -

      -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Nested/X/index.html b/test/html/expect/test_package+ml/Nested/X/index.html deleted file mode 100644 index df6ca4298e..0000000000 --- a/test/html/expect/test_package+ml/Nested/X/index.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - X (test_package+ml.Nested.X) - - - - - - - - - - -
      -

      - Module Nested.X -

      -

      - This is module X. -

      -

      - Some additional comments. -

      -
      - -
      -

      - Type -

      -
      -
      - type t -
      -
      -

      - Some type. -

      -
      -
      -

      - Values -

      -
      -
      - val x : t -
      -
      -

      - The value of x. -

      -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Nested/class-inherits/index.html b/test/html/expect/test_package+ml/Nested/class-inherits/index.html deleted file mode 100644 index c608eb9a99..0000000000 --- a/test/html/expect/test_package+ml/Nested/class-inherits/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - inherits (test_package+ml.Nested.inherits) - - - - - - - - - - -
      -

      - Class Nested.inherits -

      -
      -
      -
      -
      - inherit z -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Nested/class-z/index.html b/test/html/expect/test_package+ml/Nested/class-z/index.html deleted file mode 100644 index 8b72b2ee00..0000000000 --- a/test/html/expect/test_package+ml/Nested/class-z/index.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - z (test_package+ml.Nested.z) - - - - - - - - - - -
      -

      - Class Nested.z -

      -

      - This is class z. -

      -

      - Some additional comments. -

      -
      - -
      -
      -
      - val y : int -
      -
      -

      - Some value. -

      -
      -
      -
      -
      - val mutable virtual y' : int -
      -
      -

      - Methods -

      -
      -
      - method z : int -
      -
      -

      - Some method. -

      -
      -
      -
      -
      - method private virtual z' : int -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Nested/index.html b/test/html/expect/test_package+ml/Nested/index.html deleted file mode 100644 index 93ee8a7872..0000000000 --- a/test/html/expect/test_package+ml/Nested/index.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - Nested (test_package+ml.Nested) - - - - - - - - - - -
      -

      - Module Nested -

      -

      - This comment needs to be here before #235 is fixed. -

      -
      - -
      -

      - Module -

      -
      -
      - module X : sig ... end -
      -
      -

      - This is module X. -

      -
      -
      -

      - Module type -

      -
      -
      - module type Y = sig ... end -
      -
      -

      - This is module type Y. -

      -
      -
      -

      - Functor -

      -
      -
      - module F (Arg1 : Y) (Arg2 : sig ... end) : sig ... end -
      -
      -

      - This is a functor F. -

      -
      -
      -

      - Class -

      -
      -
      - class virtual z : object ... end -
      -
      -

      - This is class z. -

      -
      -
      -
      -
      - class virtual inherits : object ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Nested/module-type-Y/index.html b/test/html/expect/test_package+ml/Nested/module-type-Y/index.html deleted file mode 100644 index fcdedd739e..0000000000 --- a/test/html/expect/test_package+ml/Nested/module-type-Y/index.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - Y (test_package+ml.Nested.Y) - - - - - - - - - - -
      -

      - Module type Nested.Y -

      -

      - This is module type Y. -

      -

      - Some additional comments. -

      -
      - -
      -

      - Type -

      -
      -
      - type t -
      -
      -

      - Some type. -

      -
      -
      -

      - Values -

      -
      -
      - val y : t -
      -
      -

      - The value of y. -

      -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Ocamlary/index.html b/test/html/expect/test_package+ml/Ocamlary/index.html deleted file mode 100644 index eade0c7f52..0000000000 --- a/test/html/expect/test_package+ml/Ocamlary/index.html +++ /dev/null @@ -1,2019 +0,0 @@ - - - - - Ocamlary (test_package+ml.Ocamlary) - - - - - - - - - - -
      -

      - Module Ocamlary -

      -

      - This is an interface with all of the module system features. This documentation demonstrates: -

      -
        -
      • - comment formatting -
      • -
      • - unassociated comments -
      • -
      • - documentation sections -
      • -
      • -

        - module system documentation including -

        -
          -
        1. - submodules -
        2. -
        3. - module aliases -
        4. -
        5. - module types -
        6. -
        7. - module type aliases -
        8. -
        9. - modules with signatures -
        10. -
        11. - modules with aliased signatures -
        12. -
        -
      • -
      -

      - A numbered list: -

      -
        -
      1. - 3 -
      2. -
      3. - 2 -
      4. -
      5. - 1 -
      6. -
      -

      - David Sheets is the author. -

      -
        -
      • - author David Sheets -
      • -
      -
      - -
      -

      - You may find more information about this HTML documentation renderer at github.com/dsheets/ocamlary. -

      -

      - This is some verbatim text: -

      -
      verbatim
      -

      - This is some verbatim text: -

      -
      [][df[]]}}
      -

      - Here is some raw LaTeX: -

      -

      - Here is an index table of Empty modules: -

      -
        -
      • - Empty A plain, empty module -
      • -
      • - EmptyAlias A plain module alias of Empty -
      • -
      -

      - Here is a table of links to indexes: indexlist -

      -

      - Here is some superscript: x2 -

      -

      - Here is some subscript: x0 -

      -

      - Here are some escaped brackets: { [ @ ] } -

      -

      - Here is some emphasis followed by code. -

      -

      - An unassociated comment -

      -

      - Level 1 -

      -

      - Level 2 -

      -

      - Level 3 -

      -
      - Level 4 -
      -

      - Basic module stuff -

      -
      -
      - module Empty : sig ... end -
      -
      -

      - A plain, empty module -

      -
      -
      -
      -
      - module type Empty = sig ... end -
      -
      -

      - An ambiguous, misnamed module type -

      -
      -
      -
      -
      - module type MissingComment = sig ... end -
      -
      -

      - An ambiguous, misnamed module type -

      -
      -
      -

      - Section 9000 -

      -
      -
      - module EmptyAlias = Empty -
      -
      -

      - A plain module alias of Empty -

      -
      -
      -

      - EmptySig -

      -
      -
      - module type EmptySig = sig ... end -
      -
      -

      - A plain, empty module signature -

      -
      -
      -
      -
      - module type EmptySigAlias = EmptySig -
      -
      -

      - A plain, empty module signature alias of -

      -
      -
      -
      - -
      -

      - A plain module of a signature of EmptySig (reference) -

      -
      -
      -
      - -
      -

      - A plain module with an alias signature -

      -
      -
      -
      -
      - module One : sig ... end -
      -
      -
      -
      - module type SigForMod = sig ... end -
      -
      -

      - There's a signature in a module in this signature. -

      -
      -
      -
      -
      - module type SuperSig = sig ... end -
      -
      -

      - For a good time, see SuperSig.SubSigA.subSig or SuperSig.SubSigB.subSig or SuperSig.EmptySig. Section Section 9000 is also interesting. EmptySig is the section and EmptySig is the module signature. -

      -
      -
      - module Buffer : sig ... end -
      -
      -

      - Buffer.t -

      -
      -
      -

      - Some text before exception title. -

      -

      - Basic exception stuff -

      -

      - After exception title. -

      -
      -
      - exception Kaboom of unit -
      -
      -

      - Unary exception constructor -

      -
      -
      -
      -
      - exception Kablam of unit * unit -
      -
      -

      - Binary exception constructor -

      -
      -
      -
      -
      - exception Kapow of unit * unit -
      -
      -

      - Unary exception constructor over binary tuple -

      -
      -
      -
      -
      - exception EmptySig -
      -
      -

      - EmptySig is a module and EmptySig is this exception. -

      -
      -
      -
      -
      - exception EmptySigAlias -
      -
      -

      - EmptySigAlias is this exception. -

      -
      -
      -

      - Basic type and value stuff with advanced doc comments -

      -
      -
      - type ('a, 'b) a_function = 'a -> 'b -
      -
      -

      - a_function is this type and a_function is the value below. -

      -
      -
      -
      -
      - val a_function : x:int -> int -
      -
      -

      - This is a_function with param and return type. -

      -
        -
      • - parameter x -

        - the x coordinate -

        -
      • -
      -
        -
      • - returns -

        - the y coordinate -

        -
      • -
      -
      -
      -
      -
      - val fun_fun_fun : ((int, int) a_function(unit, unit) a_function) a_function -
      -
      -
      -
      - val fun_maybe : ?yes:unit -> unit -> int -
      -
      -
      -
      - val not_found : unit -> unit -
      -
      -
        -
      • - raises Not_found -

        - That's all it does -

        -
      • -
      -
      -
      -
      -
      - val ocaml_org : string -
      -
      - -
      -
      -
      -
      - val some_file : string -
      -
      -
        -
      • - see some_file -

        - The file called some_file -

        -
      • -
      -
      -
      -
      -
      - val some_doc : string -
      -
      -
        -
      • - see some_doc -

        - The document called some_doc -

        -
      • -
      -
      -
      -
      -
      - val since_mesozoic : unit -
      -
      -

      - This value was introduced in the Mesozoic era. -

      -
        -
      • - since mesozoic -
      • -
      -
      -
      -
      -
      - val changing : unit -
      -
      -

      - This value has had changes in 1.0.0, 1.1.0, and 1.2.0. -

      -
        -
      • - before 1.0.0 -

        - before 1.0.0 -

        -
      • -
      -
        -
      • - before 1.1.0 -

        - before 1.1.0 -

        -
      • -
      -
        -
      • - version 1.2.0 -
      • -
      -
      -
      -

      - Some Operators -

      -
      -
      - val (~-) : unit -
      -
      -
      -
      - val (!) : unit -
      -
      -
      -
      - val (@) : unit -
      -
      -
      -
      - val ($) : unit -
      -
      -
      -
      - val (%) : unit -
      -
      -
      -
      - val (&) : unit -
      -
      -
      -
      - val (*) : unit -
      -
      -
      -
      - val (-) : unit -
      -
      -
      -
      - val (+) : unit -
      -
      -
      -
      - val (-?) : unit -
      -
      -
      -
      - val (/) : unit -
      -
      -
      -
      - val (:=) : unit -
      -
      -
      -
      - val (=) : unit -
      -
      -
      -
      - val (land) : unit -
      -
      -

      - Advanced Module Stuff -

      -
      -
      - module CollectionModule : sig ... end -
      -
      -

      - This comment is for CollectionModule. -

      -
      -
      -
      -
      - module type COLLECTION = module type of CollectionModule -
      -
      -

      - module type of -

      -
      -
      -
      -
      - module Recollection (C : COLLECTION) : COLLECTION with type collection = C.element list and type element = C.collection -
      -
      -
      -
      - module type MMM = sig ... end -
      -
      -
      -
      - module type RECOLLECTION = MMM with module C = Recollection(CollectionModule) -
      -
      -
      -
      - module type RecollectionModule = sig ... end -
      -
      -
      -
      - module type A = sig ... end -
      -
      -
      -
      - module type B = sig ... end -
      -
      -
      -
      - module type C = sig ... end -
      -
      -

      - This module type includes two signatures. -

      -
      -
      -
      -
      - module FunctorTypeOf (Collection : module type of CollectionModule) : sig ... end -
      -
      -

      - This comment is for FunctorTypeOf. -

      -
      -
      -
      -
      - module type IncludeModuleType = sig ... end -
      -
      -

      - This comment is for IncludeModuleType. -

      -
      -
      -
      -
      - module type ToInclude = sig ... end -
      -
      -
      -
      - - include ToInclude - -
      -
      - module IncludedA : sig ... end -
      -
      -
      -
      - module type IncludedB = sig ... end -
      -
      -
      -
      -

      - Advanced Type Stuff -

      -
      -
      - type record = { - - - - - - - - - - - -
      - field1 : int; - - (* -

      - This comment is for field1. -

      - *) -
      - field2 : int; - - (* -

      - This comment is for field2. -

      - *) -
      - } -
      -
      -

      - This comment is for record. -

      -

      - This comment is also for record. -

      -
      -
      -
      -
      - type mutable_record = { - - - - - - - - - - - - - - - -
      - mutable a : int; - - (* -

      - a is first and mutable -

      - *) -
      - b : unit; - - (* -

      - b is second and immutable -

      - *) -
      - mutable c : int; - - (* -

      - c is third and mutable -

      - *) -
      - } -
      -
      -
      -
      - type universe_record = { - - - - - - -
      - nihilate : a. 'a -> unit; -
      - } -
      -
      -
      -
      - type variant = - - - - - - - - - - - - - - - - - - - -
      - | TagA - - (* -

      - This comment is for TagA. -

      - *) -
      - | ConstrB of int - - (* -

      - This comment is for ConstrB. -

      - *) -
      - | ConstrC of int * int - - (* -

      - This comment is for binary ConstrC. -

      - *) -
      - | ConstrD of int * int - - (* -

      - This comment is for unary ConstrD of binary tuple. -

      - *) -
      -
      -
      -

      - This comment is for variant. -

      -

      - This comment is also for variant. -

      -
      -
      -
      -
      - type poly_variant = [ - - - - - - - - - -
      - | `TagA -
      - | `ConstrB of int -
      - ] -
      -
      -

      - This comment is for poly_variant. -

      -

      - Wow! It was a polymorphic variant! -

      -
      -
      -
      -
      - type (_, _) full_gadt = - - - - - - - - - - - - - - - -
      - | Tag : (unit, unit) full_gadt -
      - | First : 'a -> ('a, unit) full_gadt -
      - | Second : 'a -> (unit, 'a) full_gadt -
      - | Exist : 'a * 'b -> ('b, unit) full_gadt -
      -
      -
      -

      - This comment is for full_gadt. -

      -

      - Wow! It was a GADT! -

      -
      -
      -
      -
      - type 'a partial_gadt = - - - - - - - - - - - - -
      - | AscribeTag : 'a partial_gadt -
      - | OfTag of 'a partial_gadt -
      - | ExistGadtTag : ('a -> 'b) -> 'a partial_gadt -
      -
      -
      -

      - This comment is for partial_gadt. -

      -

      - Wow! It was a mixed GADT! -

      -
      -
      -
      -
      - type alias = variant -
      -
      -

      - This comment is for alias. -

      -
      -
      -
      -
      - type tuple = (alias * alias) * alias * (alias * alias) -
      -
      -

      - This comment is for tuple. -

      -
      -
      -
      -
      - type variant_alias = variant = - - - - - - - - - - - - - - - -
      - | TagA -
      - | ConstrB of int -
      - | ConstrC of int * int -
      - | ConstrD of int * int -
      -
      -
      -

      - This comment is for variant_alias. -

      -
      -
      -
      -
      - type record_alias = record = { - - - - - - - - - -
      - field1 : int; -
      - field2 : int; -
      - } -
      -
      -

      - This comment is for record_alias. -

      -
      -
      -
      -
      - type poly_variant_union = [ - - - - - - - - - -
      - | poly_variant -
      - | `TagC -
      - ] -
      -
      -

      - This comment is for poly_variant_union. -

      -
      -
      -
      -
      - type 'a poly_poly_variant = [ - - - - - - -
      - | `TagA of 'a -
      - ] -
      -
      -
      -
      - type ('a, 'b) bin_poly_poly_variant = [ - - - - - - - - - -
      - | `TagA of 'a -
      - | `ConstrB of 'b -
      - ] -
      -
      -
      -
      - type 'a open_poly_variant = [> `TagA ] as 'a -
      -
      -
      -
      - type 'a open_poly_variant2 = [> `ConstrB of int ] as 'a -
      -
      -
      -
      - type 'a open_poly_variant_alias = 'a open_poly_variant open_poly_variant2 -
      -
      -
      -
      - type 'a poly_fun = [> `ConstrB of int ] as 'a -> 'a -
      -
      -
      -
      - type 'a poly_fun_constraint = 'a -> 'a constraint 'a = [> `TagA ] -
      -
      -
      -
      - type 'a closed_poly_variant = [< `One | `Two ] as 'a -
      -
      -
      -
      - type 'a clopen_poly_variant = [< `One | `Two of int | `Three Two Three ] as 'a -
      -
      -
      -
      - type nested_poly_variant = [ - - - - - - - - - - - - - - - -
      - | `A -
      - | `B of [ `B1 | `B2 ] -
      - | `C -
      - | `D of [ `D1 of [ `D1a ] ] -
      - ] -
      -
      -
      -
      - type ('a, 'b) full_gadt_alias = ('a'b) full_gadt = - - - - - - - - - - - - - - - -
      - | Tag : (unit, unit) full_gadt_alias -
      - | First : 'a -> ('a, unit) full_gadt_alias -
      - | Second : 'a -> (unit, 'a) full_gadt_alias -
      - | Exist : 'a * 'b -> ('b, unit) full_gadt_alias -
      -
      -
      -

      - This comment is for full_gadt_alias. -

      -
      -
      -
      -
      - type 'a partial_gadt_alias = 'a partial_gadt = - - - - - - - - - - - - -
      - | AscribeTag : 'a partial_gadt_alias -
      - | OfTag of 'a partial_gadt_alias -
      - | ExistGadtTag : ('a -> 'b) -> 'a partial_gadt_alias -
      -
      -
      -

      - This comment is for partial_gadt_alias. -

      -
      -
      -
      -
      - exception Exn_arrow : unit -> exn -
      -
      -

      - This comment is for Exn_arrow. -

      -
      -
      -
      -
      - type mutual_constr_a = - - - - - - - - - - -
      - | A -
      - | B_ish of mutual_constr_b - - (* -

      - This comment is between mutual_constr_a and mutual_constr_b. -

      - *) -
      -
      -
      -

      - This comment is for mutual_constr_a then mutual_constr_b. -

      -
      -
      -
      -
      - and mutual_constr_b = - - - - - - - - - - -
      - | B -
      - | A_ish of mutual_constr_a - - (* -

      - This comment must be here for the next to associate correctly. -

      - *) -
      -
      -
      -

      - This comment is for mutual_constr_b then mutual_constr_a. -

      -
      -
      -
      -
      - type rec_obj = < f : int; g : unit -> unit; h : rec_obj; > -
      -
      -
      -
      - type 'a open_obj = < f : int; g : unit -> unit; .. > as 'a -
      -
      -
      -
      - type 'a oof = < a : unit; .. > as 'a -> 'a -
      -
      -
      -
      - type 'a any_obj = < .. > as 'a -
      -
      -
      -
      - type empty_obj = < > -
      -
      -
      -
      - type one_meth = < meth : unit; > -
      -
      -
      -
      - type ext = .. -
      -
      -

      - A mystery wrapped in an ellipsis -

      -
      -
      -
      -
      - type ext += - - - - - - -
      - | ExtA -
      -
      -
      -
      -
      - type ext += - - - - - - -
      - | ExtB -
      -
      -
      -
      -
      - type ext += - - - - - - - - - -
      - | ExtC of unit -
      - | ExtD of ext -
      -
      -
      -
      -
      - type ext += - - - - - - -
      - | ExtE -
      -
      -
      -
      -
      - type ext += - - - - - - -
      - | ExtF -
      -
      -
      -
      -
      - type 'a poly_ext = .. -
      -
      -

      - 'a poly_ext -

      -
      -
      -
      -
      - type poly_ext += - - - - - - - - - - -
      - | Foo of 'b -
      - | Bar of 'b * 'b - - (* -

      - 'b poly_ext -

      - *) -
      -
      -
      -
      -
      - type poly_ext += - - - - - - - -
      - | Quux of 'c - - (* -

      - 'c poly_ext -

      - *) -
      -
      -
      -
      -
      - module ExtMod : sig ... end -
      -
      -
      -
      - type ExtMod.t += - - - - - - - -
      - | ZzzTop0 - - (* -

      - It's got the rock -

      - *) -
      -
      -
      -
      -
      - type ExtMod.t += - - - - - - - -
      - | ZzzTop of unit - - (* -

      - and it packs a unit. -

      - *) -
      -
      -
      -
      -
      - val launch_missiles : unit -> unit -
      -
      -

      - Rotate keys on my mark... -

      -
      -
      -
      -
      - type my_mod = (module COLLECTION) -
      -
      -

      - A brown paper package tied up with string -

      -
      -
      -
      -
      - class empty_class : object ... end -
      -
      -
      -
      - class one_method_class : object ... end -
      -
      -
      -
      - class two_method_class : object ... end -
      -
      -
      -
      - class 'a param_class : 'a -> object ... end -
      -
      -
      -
      - type my_unit_object = unit param_class -
      -
      -
      -
      - type 'a my_unit_class = unit param_class as 'a -
      -
      -
      -
      - module Dep1 : sig ... end -
      -
      -
      -
      - module Dep2 (Arg : sig ... end) : sig ... end -
      -
      -
      -
      - type dep1 = Dep2(Dep1).B.c -
      -
      -
      -
      - module Dep3 : sig ... end -
      -
      -
      -
      - module Dep4 : sig ... end -
      -
      -
      -
      - module Dep5 (Arg : sig ... end) : sig ... end -
      -
      -
      -
      - type dep2 = Dep5(Dep4).Z.X.b -
      -
      -
      -
      - type dep3 = Dep5(Dep4).Z.Y.a -
      -
      -
      -
      - module Dep6 : sig ... end -
      -
      -
      -
      - module Dep7 (Arg : sig ... end) : sig ... end -
      -
      -
      -
      - type dep4 = Dep7(Dep6).M.Y.d -
      -
      -
      -
      - module Dep8 : sig ... end -
      -
      -
      -
      - module Dep9 (X : sig ... end) : sig ... end -
      -
      -
      -
      - module type Dep10 = Dep9(Dep8).T with type t = int -
      -
      -
      -
      - module Dep11 : sig ... end -
      -
      -
      -
      - module Dep12 (Arg : sig ... end) : sig ... end -
      -
      -
      -
      - module Dep13 : Dep12(Dep11).T -
      -
      -
      -
      - type dep5 = Dep13.c -
      -
      -
      -
      - module type With1 = sig ... end -
      -
      -
      -
      - module With2 : sig ... end -
      -
      -
      -
      - module With3 : With1 with module M = With2 -
      -
      -
      -
      - type with1 = With3.N.t -
      -
      -
      -
      - module With4 : With1 with module M := With2 -
      -
      -
      -
      - type with2 = With4.N.t -
      -
      -
      -
      - module With5 : sig ... end -
      -
      -
      -
      - module With6 : sig ... end -
      -
      -
      -
      - module With7 (X : sig ... end) : sig ... end -
      -
      -
      -
      - module type With8 = With7(With6).T with module M = With5 and type M.N.t = With5.N.t -
      -
      -
      -
      - module With9 : sig ... end -
      -
      -
      -
      - module With10 : sig ... end -
      -
      -
      -
      - module type With11 = With7(With10).T with module M = With9 and type N.t = int -
      -
      -
      -
      - module type NestedInclude1 = sig ... end -
      -
      -
      -
      - - include NestedInclude1 - -
      -
      - module type NestedInclude2 = sig ... end -
      -
      -
      -
      -
      -
      - - include NestedInclude2 with type nested_include = int - -
      -
      - type nested_include = int -
      -
      -
      -
      -
      -
      - module DoubleInclude1 : sig ... end -
      -
      -
      -
      - module DoubleInclude3 : sig ... end -
      -
      -
      -
      - - include module type of DoubleInclude3.DoubleInclude2 - -
      -
      - type double_include -
      -
      -
      -
      -
      -
      - module IncludeInclude1 : sig ... end -
      -
      -
      -
      - - include module type of IncludeInclude1 - -
      -
      - module type IncludeInclude2 = sig ... end -
      -
      -
      -
      -
      -
      - - include IncludeInclude2 - -
      -
      - type include_include -
      -
      -
      -
      -

      - Trying the {!modules: ...} command. -

      -

      - With ocamldoc, toplevel units will be linked and documented, while submodules will behave as simple references. -

      -

      - With odoc, everything should be resolved (and linked) but only toplevel units will be documented. -

      - -

      - Weirder usages involving module types -

      -
        -
      • - IncludeInclude1.IncludeInclude2 -
      • -
      • - Dep4.T -
      • -
      • - A.Q -
      • -
      -

      - Playing with @canonical paths -

      -
      -
      - module CanonicalTest : sig ... end -
      -
      - -

      - Aliases again -

      -
      -
      - module Aliases : sig ... end -
      -
      -

      - Let's imitate jst's layout. -

      -
      -
      -

      - Section title splicing -

      -

      - I can refer to -

      - -

      - But also to things in submodules: -

      -
        -
      • - {!section:SuperSig.SubSigA.subSig} : SuperSig.SubSigA.subSig -
      • -
      • - {!Aliases.incl} : Aliases:incl -
      • -
      -

      - And just to make sure we do not mess up: -

      -
        -
      • - {{!section:indexmodules}A} : A -
      • -
      • - {{!aliases}B} : B -
      • -
      • - {{!section:SuperSig.SubSigA.subSig}C} : C -
      • -
      • - {{!Aliases.incl}D} : D -
      • -
      -

      - New reference syntax -

      -
      -
      - module type M = sig ... end -
      -
      -
      -
      - module M : sig ... end -
      -
      -

      - Here goes: -

      -
        -
      • - {!module-M.t} : M.t -
      • -
      • - {!module-type-M.t} : M.t -
      • -
      -
      -
      - module Only_a_module : sig ... end -
      -
      -

      - Some here should fail: -

      -
        -
      • - {!Only_a_module.t} : Only_a_module.t -
      • -
      • - {!module-Only_a_module.t} : Only_a_module.t -
      • -
      • - {!module-type-Only_a_module.t} : Only_a_module.t : test -
      • -
      -
      -
      - module type TypeExt = sig ... end -
      -
      -
      -
      - type new_t = .. -
      -
      -
      -
      - type new_t += - - - - - - -
      - | C -
      -
      -
      -
      -
      - module type TypeExtPruned = TypeExt with type t := new_t -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Recent/X/index.html b/test/html/expect/test_package+ml/Recent/X/index.html deleted file mode 100644 index 49a829d27c..0000000000 --- a/test/html/expect/test_package+ml/Recent/X/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - X (test_package+ml.Recent.X) - - - - - - - - - - -
      -

      - Module Recent.X -

      -
      -
      -
      -
      - module L := Z.Y -
      -
      -
      -
      - type t = int Z.Y.X.t -
      -
      -
      -
      - type u := int -
      -
      -
      -
      - type v = u Z.Y.X.t -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Recent/index.html b/test/html/expect/test_package+ml/Recent/index.html deleted file mode 100644 index fbd5d2bb49..0000000000 --- a/test/html/expect/test_package+ml/Recent/index.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - Recent (test_package+ml.Recent) - - - - - - - - - - -
      -

      - Module Recent -

      -
      -
      -
      -
      - module type S = sig ... end -
      -
      -
      -
      - module type S1 = functor (_ : S) -> S -
      -
      -
      -
      - type variant = - - - - - - - - - - - - - - - - - - - - -
      - | A -
      - | B of int -
      - | C - - (* -

      - foo -

      - *) -
      - | D - - (* -

      - bar -

      - *) -
      - | E of { - - - - - - -
      - a : int; -
      - } -
      -
      -
      -
      -
      - type _ gadt = - - - - - - - - - - - - - -
      - | A : int gadt -
      - | B : int -> string gadt - - (* -

      - foo -

      - *) -
      - | C : { - - - - - - -
      - a : int; -
      - } -> unit gadt -
      -
      -
      -
      -
      - type polymorphic_variant = [ - - - - - - - - - - - - - - - - - -
      - | `A -
      - | `B of int -
      - | `C - - (* -

      - foo -

      - *) -
      - | `D - - (* -

      - bar -

      - *) -
      - ] -
      -
      -
      -
      - type empty_variant = | -
      -
      -
      -
      - type nonrec nonrec_ = int -
      -
      -
      -
      - type empty_conj = - - - - - - -
      - | X : [< `X of & 'a & int * float ] -> empty_conj -
      -
      -
      -
      -
      - type conj = - - - - - - -
      - | X : [< `X of int & [< `B of int & float ] ] -> conj -
      -
      -
      -
      -
      - val empty_conj : [< `X of & 'a & int * float ] -
      -
      -
      -
      - val conj : [< `X of int & [< `B of int & float ] ] -
      -
      -
      -
      - module Z : sig ... end -
      -
      -
      -
      - module X : sig ... end -
      -
      -
      -
      - module type PolyS = sig ... end -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Recent_impl/index.html b/test/html/expect/test_package+ml/Recent_impl/index.html deleted file mode 100644 index bf8bc328fa..0000000000 --- a/test/html/expect/test_package+ml/Recent_impl/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - Recent_impl (test_package+ml.Recent_impl) - - - - - - - - - - -
      -

      - Module Recent_impl -

      -
      -
      -
      -
      - module Foo : sig ... end -
      -
      -
      -
      - module B : sig ... end -
      -
      -
      -
      - type u -
      -
      -
      -
      - module type S = sig ... end -
      -
      -
      -
      - module B' = Foo.B -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Section/index.html b/test/html/expect/test_package+ml/Section/index.html deleted file mode 100644 index af8e7fa834..0000000000 --- a/test/html/expect/test_package+ml/Section/index.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - Section (test_package+ml.Section) - - - - - - - - - - -
      -

      - Module Section -

      -

      - This is the module comment. Eventually, sections won't be allowed in it. -

      -
      - -
      -

      - Empty section -

      -

      - Text only -

      -

      - Foo bar. -

      -

      - Aside only -

      -

      - Foo bar. -

      -

      - Value only -

      -
      -
      - val foo : unit -
      -
      -

      - Empty section -

      -

      - within a comment -

      -

      - and one with a nested section -

      -

      - This section title has markup -

      -

      - But links are impossible thanks to the parser, so we never have trouble rendering a section title in a table of contents – no link will be nested inside another link. -

      -
      - - diff --git a/test/html/expect/test_package+ml/Stop/index.html b/test/html/expect/test_package+ml/Stop/index.html deleted file mode 100644 index 6036981a49..0000000000 --- a/test/html/expect/test_package+ml/Stop/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - Stop (test_package+ml.Stop) - - - - - - - - - - -
      -

      - Module Stop -

      -

      - This test cases exercises stop comments. -

      -
      -
      -
      -
      - val foo : int -
      -
      -

      - This is normal commented text. -

      -
      -
      -

      - The next value is bar, and it should be missing from the documentation. There is also an entire module, M, which should also be hidden. It contains a nested stop comment, but that stop comment should not turn documentation back on in this outer module, because stop comments respect scope. -

      -

      - Documentation is on again. -

      -

      - Now, we have a nested module, and it has a stop comment between its two items. We want to see that the first item is displayed, but the second is missing, and the stop comment disables documenation only in that module, and not in this outer module. -

      -
      -
      - module N : sig ... end -
      -
      -
      -
      - val lol : int -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Stop_dead_link_doc/index.html b/test/html/expect/test_package+ml/Stop_dead_link_doc/index.html deleted file mode 100644 index 5e466b451f..0000000000 --- a/test/html/expect/test_package+ml/Stop_dead_link_doc/index.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - Stop_dead_link_doc (test_package+ml.Stop_dead_link_doc) - - - - - - - - - - -
      -

      - Module Stop_dead_link_doc -

      -
      -
      -
      -
      - module Foo : sig ... end -
      -
      -
      -
      - type foo = - - - - - - -
      - | Bar of Foo.t -
      -
      -
      -
      -
      - type bar = - - - - - - -
      - | Bar of { - - - - - - -
      - field : Foo.t; -
      - } -
      -
      -
      -
      -
      - type foo_ = - - - - - - -
      - | Bar_ of int * Foo.t * int -
      -
      -
      -
      -
      - type bar_ = - - - - - - -
      - | Bar__ of Foo.t option -
      -
      -
      -
      -
      - type another_foo -
      -
      -
      -
      - type another_bar -
      -
      -
      -
      - type another_foo_ -
      -
      -
      -
      - type another_bar_ -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Toplevel_comments/Alias/index.html b/test/html/expect/test_package+ml/Toplevel_comments/Alias/index.html deleted file mode 100644 index 260d7d513b..0000000000 --- a/test/html/expect/test_package+ml/Toplevel_comments/Alias/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Alias (test_package+ml.Toplevel_comments.Alias) - - - - - - - - - - -
      -

      - Module Toplevel_comments.Alias -

      -

      - Doc of Alias. -

      -

      - Doc of T, part 2. -

      -
      -
      -
      -
      - type t -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Toplevel_comments/Include_inline'/index.html b/test/html/expect/test_package+ml/Toplevel_comments/Include_inline'/index.html deleted file mode 100644 index 8178bf1cb8..0000000000 --- a/test/html/expect/test_package+ml/Toplevel_comments/Include_inline'/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - Include_inline' (test_package+ml.Toplevel_comments.Include_inline') - - - - - - - - - - -
      -

      - Module Toplevel_comments.Include_inline' -

      -

      - Doc of Include_inline, part 1. -

      -

      - Doc of Include_inline, part 2. -

      -
      -
      -
      -
      -

      - part 3 -

      -
      -
      -
      - type t -
      -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Toplevel_comments/Include_inline/index.html b/test/html/expect/test_package+ml/Toplevel_comments/Include_inline/index.html deleted file mode 100644 index 35bf9703c8..0000000000 --- a/test/html/expect/test_package+ml/Toplevel_comments/Include_inline/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Include_inline (test_package+ml.Toplevel_comments.Include_inline) - - - - - - - - - - -
      -

      - Module Toplevel_comments.Include_inline -

      -

      - Doc of T, part 2. -

      -
      -
      -
      -
      -
      - type t -
      -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Toplevel_comments/M''/index.html b/test/html/expect/test_package+ml/Toplevel_comments/M''/index.html deleted file mode 100644 index c4ec998ba3..0000000000 --- a/test/html/expect/test_package+ml/Toplevel_comments/M''/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - M'' (test_package+ml.Toplevel_comments.M'') - - - - - - - - - - -
      -

      - Module Toplevel_comments.M'' -

      -

      - Doc of M'', part 1. -

      -

      - Doc of M'', part 2. -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Toplevel_comments/M'/index.html b/test/html/expect/test_package+ml/Toplevel_comments/M'/index.html deleted file mode 100644 index 82badb81af..0000000000 --- a/test/html/expect/test_package+ml/Toplevel_comments/M'/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - M' (test_package+ml.Toplevel_comments.M') - - - - - - - - - - -
      -

      - Module Toplevel_comments.M' -

      -

      - Doc of M' from outside -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Toplevel_comments/M/index.html b/test/html/expect/test_package+ml/Toplevel_comments/M/index.html deleted file mode 100644 index c5346d51da..0000000000 --- a/test/html/expect/test_package+ml/Toplevel_comments/M/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - M (test_package+ml.Toplevel_comments.M) - - - - - - - - - - -
      -

      - Module Toplevel_comments.M -

      -

      - Doc of M -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Toplevel_comments/Ref_in_synopsis/index.html b/test/html/expect/test_package+ml/Toplevel_comments/Ref_in_synopsis/index.html deleted file mode 100644 index 24a959fd92..0000000000 --- a/test/html/expect/test_package+ml/Toplevel_comments/Ref_in_synopsis/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Ref_in_synopsis (test_package+ml.Toplevel_comments.Ref_in_synopsis) - - - - - - - - - - -
      -

      - Module Toplevel_comments.Ref_in_synopsis -

      -

      - t. -

      -

      - This reference should resolve in the context of this module, even when used as a synopsis. -

      -
      -
      -
      -
      - type t -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Toplevel_comments/class-c1/index.html b/test/html/expect/test_package+ml/Toplevel_comments/class-c1/index.html deleted file mode 100644 index dd51569575..0000000000 --- a/test/html/expect/test_package+ml/Toplevel_comments/class-c1/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - c1 (test_package+ml.Toplevel_comments.c1) - - - - - - - - - - -
      -

      - Class Toplevel_comments.c1 -

      -

      - Doc of c1, part 1. -

      -

      - Doc of c1, part 2. -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Toplevel_comments/class-c2/index.html b/test/html/expect/test_package+ml/Toplevel_comments/class-c2/index.html deleted file mode 100644 index a416f31ed7..0000000000 --- a/test/html/expect/test_package+ml/Toplevel_comments/class-c2/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - c2 (test_package+ml.Toplevel_comments.c2) - - - - - - - - - - -
      -

      - Class Toplevel_comments.c2 -

      -

      - Doc of c2. -

      -

      - Doc of ct, part 2. -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Toplevel_comments/class-type-ct/index.html b/test/html/expect/test_package+ml/Toplevel_comments/class-type-ct/index.html deleted file mode 100644 index e4d4ea7f27..0000000000 --- a/test/html/expect/test_package+ml/Toplevel_comments/class-type-ct/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - ct (test_package+ml.Toplevel_comments.ct) - - - - - - - - - - -
      -

      - Class type Toplevel_comments.ct -

      -

      - Doc of ct, part 1. -

      -

      - Doc of ct, part 2. -

      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Toplevel_comments/index.html b/test/html/expect/test_package+ml/Toplevel_comments/index.html deleted file mode 100644 index 9d70529ddc..0000000000 --- a/test/html/expect/test_package+ml/Toplevel_comments/index.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - Toplevel_comments (test_package+ml.Toplevel_comments) - - - - - - - - - - -
      -

      - Module Toplevel_comments -

      -

      - A doc comment at the beginning of a module is considered to be that module's doc. -

      -
      -
      -
      -
      - module type T = sig ... end -
      -
      -

      - Doc of T, part 1. -

      -
      -
      -
      -
      - module Include_inline : sig ... end -
      -
      -

      - Doc of T, part 2. -

      -
      -
      -
      -
      - module Include_inline' : sig ... end -
      -
      -

      - Doc of Include_inline, part 1. -

      -
      -
      -
      -
      - module type Include_inline_T = sig ... end -
      -
      -

      - Doc of T, part 2. -

      -
      -
      -
      -
      - module type Include_inline_T' = sig ... end -
      -
      -

      - Doc of Include_inline_T', part 1. -

      -
      -
      -
      -
      - module M : sig ... end -
      -
      -

      - Doc of M -

      -
      -
      -
      -
      - module M' : sig ... end -
      -
      -

      - Doc of M' from outside -

      -
      -
      -
      -
      - module M'' : sig ... end -
      -
      -

      - Doc of M'', part 1. -

      -
      -
      -
      -
      - module Alias : T -
      -
      -

      - Doc of Alias. -

      -
      -
      -
      -
      - class c1 : int -> object ... end -
      -
      -

      - Doc of c1, part 1. -

      -
      -
      -
      -
      - class type ct = object ... end -
      -
      -

      - Doc of ct, part 1. -

      -
      -
      -
      -
      - class c2 : ct -
      -
      -

      - Doc of c2. -

      -
      -
      -
      -
      - module Ref_in_synopsis : sig ... end -
      -
      -

      - t. -

      -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Toplevel_comments/module-type-Include_inline_T'/index.html b/test/html/expect/test_package+ml/Toplevel_comments/module-type-Include_inline_T'/index.html deleted file mode 100644 index d0e264a753..0000000000 --- a/test/html/expect/test_package+ml/Toplevel_comments/module-type-Include_inline_T'/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - Include_inline_T' (test_package+ml.Toplevel_comments.Include_inline_T') - - - - - - - - - - -
      -

      - Module type Toplevel_comments.Include_inline_T' -

      -

      - Doc of Include_inline_T', part 1. -

      -

      - Doc of Include_inline_T', part 2. -

      -
      -
      -
      -
      -

      - part 3 -

      -
      -
      -
      - type t -
      -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Toplevel_comments/module-type-Include_inline_T/index.html b/test/html/expect/test_package+ml/Toplevel_comments/module-type-Include_inline_T/index.html deleted file mode 100644 index 22611a0a32..0000000000 --- a/test/html/expect/test_package+ml/Toplevel_comments/module-type-Include_inline_T/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Include_inline_T (test_package+ml.Toplevel_comments.Include_inline_T) - - - - - - - - - - -
      -

      - Module type Toplevel_comments.Include_inline_T -

      -

      - Doc of T, part 2. -

      -
      -
      -
      -
      -
      - type t -
      -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Toplevel_comments/module-type-T/index.html b/test/html/expect/test_package+ml/Toplevel_comments/module-type-T/index.html deleted file mode 100644 index c70e8597cf..0000000000 --- a/test/html/expect/test_package+ml/Toplevel_comments/module-type-T/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - T (test_package+ml.Toplevel_comments.T) - - - - - - - - - - -
      -

      - Module type Toplevel_comments.T -

      -

      - Doc of T, part 1. -

      -

      - Doc of T, part 2. -

      -
      -
      -
      -
      - type t -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Type/index.html b/test/html/expect/test_package+ml/Type/index.html deleted file mode 100644 index b55fa28a89..0000000000 --- a/test/html/expect/test_package+ml/Type/index.html +++ /dev/null @@ -1,548 +0,0 @@ - - - - - Type (test_package+ml.Type) - - - - - - - - - - -
      -

      - Module Type -

      -
      -
      -
      -
      - type abstract -
      -
      -

      - Some documentation. -

      -
      -
      -
      -
      - type alias = int -
      -
      -
      -
      - type private_ = private int -
      -
      -
      -
      - type 'a constructor = 'a -
      -
      -
      -
      - type arrow = int -> int -
      -
      -
      -
      - type higher_order = (int -> int) -> int -
      -
      -
      -
      - type labeled = l:int -> int -
      -
      -
      -
      - type optional = ?l:int -> int -
      -
      -
      -
      - type labeled_higher_order = (l:int -> int) -> (?l:int -> int) -> int -
      -
      -
      -
      - type pair = int * int -
      -
      -
      -
      - type parens_dropped = int * int -
      -
      -
      -
      - type triple = int * int * int -
      -
      -
      -
      - type nested_pair = (int * int) * int -
      -
      -
      -
      - type instance = int constructor -
      -
      -
      -
      - type long = labeled_higher_order -> [ `Bar | `Baz of triple ] -> pair -> labeled -> higher_order -> (string -> int) -> (int, float, char, string, char, unit) CamlinternalFormatBasics.fmtty -> nested_pair -> arrow -> string -> nested_pair array -
      -
      -
      -
      - type variant_e = { - - - - - - -
      - a : int; -
      - } -
      -
      -
      -
      - type variant = - - - - - - - - - - - - - - - - - - - - -
      - | A -
      - | B of int -
      - | C - - (* -

      - foo -

      - *) -
      - | D - - (* -

      - bar -

      - *) -
      - | E of variant_e -
      -
      -
      -
      -
      - type variant_c = { - - - - - - -
      - a : int; -
      - } -
      -
      -
      -
      - type _ gadt = - - - - - - - - - - - - -
      - | A : int gadt -
      - | B : int -> string gadt -
      - | C : variant_c -> unit gadt -
      -
      -
      -
      -
      - type degenerate_gadt = - - - - - - -
      - | A : degenerate_gadt -
      -
      -
      -
      -
      - type private_variant = private - - - - - - -
      - | A -
      -
      -
      -
      -
      - type record = { - - - - - - - - - - - - - - - - - - - - -
      - a : int; -
      - mutable b : int; -
      - c : int; - - (* -

      - foo -

      - *) -
      - d : int; - - (* -

      - bar -

      - *) -
      - e : a. 'a; -
      - } -
      -
      -
      -
      - type polymorphic_variant = [ - - - - - - - - - - - - - - - -
      - | `A -
      - | `B of int -
      - | `C of int * unit -
      - | `D -
      - ] -
      -
      -
      -
      - type polymorphic_variant_extension = [ - - - - - - - - - -
      - | polymorphic_variant -
      - | `E -
      - ] -
      -
      -
      -
      - type nested_polymorphic_variant = [ - - - - - - -
      - | `A of [ `B | `C ] -
      - ] -
      -
      -
      -
      - type private_extenion#row -
      -
      -
      -
      - and private_extenion = private [> - - - - - - -
      - | polymorphic_variant -
      - ] -
      -
      -
      -
      - type object_ = < a : int; b : int; c : int; > -
      -
      -
      -
      - module type X = sig ... end -
      -
      -
      -
      - type module_ = (module X) -
      -
      -
      -
      - type module_substitution = (module X with type t = int and type u = unit) -
      -
      -
      -
      - type +'a covariant -
      -
      -
      -
      - type -'a contravariant -
      -
      -
      -
      - type _ bivariant = int -
      -
      -
      -
      - type ('a, 'b) binary -
      -
      -
      -
      - type using_binary = (int, int) binary -
      -
      -
      -
      - type 'custom name -
      -
      -
      -
      - type 'a constrained = 'a constraint 'a = int -
      -
      -
      -
      - type 'a exact_variant = 'a constraint 'a = [ `A | `B of int ] -
      -
      -
      -
      - type 'a lower_variant = 'a constraint 'a = [> `A | `B of int ] -
      -
      -
      -
      - type 'a any_variant = 'a constraint 'a = [> ] -
      -
      -
      -
      - type 'a upper_variant = 'a constraint 'a = [< `A | `B of int ] -
      -
      -
      -
      - type 'a named_variant = 'a constraint 'a = [< polymorphic_variant ] -
      -
      -
      -
      - type 'a exact_object = 'a constraint 'a = < a : int; b : int; > -
      -
      -
      -
      - type 'a lower_object = 'a constraint 'a = < a : int; b : int; .. > -
      -
      -
      -
      - type 'a poly_object = 'a constraint 'a = < a : a. 'a; > -
      -
      -
      -
      - type ('a, 'b) double_constrained = 'a * 'b constraint 'a = int constraint 'b = unit -
      -
      -
      -
      - type as_ = int as 'a * 'a -
      -
      -
      -
      - type extensible = .. -
      -
      -
      -
      - type extensible += - - - - - - - - - - - -
      - | Extension - - (* -

      - Documentation for Extension. -

      - *) -
      - | Another_extension - - (* -

      - Documentation for Another_extension. -

      - *) -
      -
      -
      -
      -
      - type mutually = - - - - - - -
      - | A of recursive -
      -
      -
      -
      -
      - and recursive = - - - - - - -
      - | B of mutually -
      -
      -
      -
      -
      - exception Foo of int * int -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/Type/module-type-X/index.html b/test/html/expect/test_package+ml/Type/module-type-X/index.html deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/test/html/expect/test_package+ml/Val/index.html b/test/html/expect/test_package+ml/Val/index.html deleted file mode 100644 index d2e0dac64a..0000000000 --- a/test/html/expect/test_package+ml/Val/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - Val (test_package+ml.Val) - - - - - - - - - - -
      -

      - Module Val -

      -
      -
      -
      -
      - val documented : unit -
      -
      -

      - Foo. -

      -
      -
      -
      -
      - val undocumented : unit -
      -
      -
      -
      - val documented_above : unit -
      -
      -

      - Bar. -

      -
      -
      -
      - - diff --git a/test/html/expect/test_package+ml/mld.html b/test/html/expect/test_package+ml/mld.html deleted file mode 100644 index 114e38de66..0000000000 --- a/test/html/expect/test_package+ml/mld.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - mld (test_package+ml.mld) - - - - - - - - - - -
      -

      - Mld Page -

      -

      - This is an .mld file. It doesn't have an auto-generated title, like modules and other pages generated fully by odoc do. -

      -

      - It will have a TOC generated from section headings. -

      -
      - -
      -

      - Section -

      -

      - This is a section. -

      -

      - Another paragraph in section. -

      -

      - Another section -

      -

      - This is another section. -

      -

      - Another paragraph in section 2. -

      -

      - Subsection -

      -

      - This is a subsection. -

      -

      - Another paragraph in subsection. -

      -

      - Yet another paragraph in subsection. -

      -

      - Another Subsection -

      -

      - This is another subsection. -

      -

      - Another paragraph in subsection 2. -

      -

      - Yet another paragraph in subsection 2. -

      -
      - - diff --git a/test/html/expect/test_package+re/Alias/X/index.html b/test/html/expect/test_package+re/Alias/X/index.html deleted file mode 100644 index 02d4b66783..0000000000 --- a/test/html/expect/test_package+re/Alias/X/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - X (test_package+re.Alias.X) - - - - - - - - - - -
      -

      - Module Alias.X -

      -
      -
      -
      -
      - type t = int; -
      -
      -

      - Module Foo__X documentation. This should appear in the documentation for the alias to this module 'X' -

      -
      -
      -
      - - diff --git a/test/html/expect/test_package+re/Alias/index.html b/test/html/expect/test_package+re/Alias/index.html deleted file mode 100644 index cf3c56c18e..0000000000 --- a/test/html/expect/test_package+re/Alias/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Alias (test_package+re.Alias) - - - - - - - - - - -
      -

      - Module Alias -

      -
      -
      -
      -
      - module Foo__X: { ... }; -
      -
      -
      -
      - module X: { ... }; -
      -
      -
      - - diff --git a/test/html/expect/test_package+re/Bugs/index.html b/test/html/expect/test_package+re/Bugs/index.html deleted file mode 100644 index b6e7a85d17..0000000000 --- a/test/html/expect/test_package+re/Bugs/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Bugs (test_package+re.Bugs) - - - - - - - - - - -
      -

      - Module Bugs -

      -
      -
      -
      -
      - type opt('a) = option('a); -
      -
      -
      -
      - let foo: ?bar:'a => unit => unit; -
      -
      -

      - Triggers an assertion failure when https://github.com/ocaml/odoc/issues/101 is not fixed. -

      -
      -
      -
      - - diff --git a/test/html/expect/test_package+re/Bugs_post_406/index.html b/test/html/expect/test_package+re/Bugs_post_406/index.html deleted file mode 100644 index e2ecdf6703..0000000000 --- a/test/html/expect/test_package+re/Bugs_post_406/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Bugs_post_406 (test_package+re.Bugs_post_406) - - - - - - - - - - -
      -

      - Module Bugs_post_406 -

      -

      - Let-open in class types, https://github.com/ocaml/odoc/issues/543 This was added to the language in 4.06 -

      -
      -
      -
      -
      - class type let_open = { ... } -
      -
      -
      -
      - class let_open': { ... } -
      -
      -
      - - diff --git a/test/html/expect/test_package+re/Bugs_pre_410/index.html b/test/html/expect/test_package+re/Bugs_pre_410/index.html deleted file mode 100644 index 48e89703ec..0000000000 --- a/test/html/expect/test_package+re/Bugs_pre_410/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Bugs_pre_410 (test_package+re.Bugs_pre_410) - - - - - - - - - - -
      -

      - Module Bugs_pre_410 -

      -
      -
      -
      -
      - type opt'('a) = option(int); -
      -
      -
      -
      - let foo': ?bar:'a => unit => unit; -
      -
      -

      - Similar to Bugs, but the printed type of ~bar should be int, not 'a. This probably requires fixing in the compiler. See https://github.com/ocaml/odoc/pull/230#issuecomment-433226807. -

      -
      -
      -
      - - diff --git a/test/html/expect/test_package+re/Class/index.html b/test/html/expect/test_package+re/Class/index.html deleted file mode 100644 index 63a47e387c..0000000000 --- a/test/html/expect/test_package+re/Class/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - Class (test_package+re.Class) - - - - - - - - - - -
      -

      - Module Class -

      -
      -
      -
      -
      - class type empty = { ... } -
      -
      -
      -
      - class type mutually = { ... } -
      -
      -
      -
      - class type recursive = { ... } -
      -
      -
      -
      - class mutually': mutually -
      -
      -
      -
      - class recursive': recursive -
      -
      -
      -
      - class type virtual empty_virtual = { ... } -
      -
      -
      -
      - class virtual empty_virtual': empty -
      -
      -
      -
      - class type ('a) polymorphic = { ... } -
      -
      -
      -
      - class ('a) polymorphic': polymorphic('a) -
      -
      -
      - - diff --git a/test/html/expect/test_package+re/External/index.html b/test/html/expect/test_package+re/External/index.html deleted file mode 100644 index 4ef9a6b917..0000000000 --- a/test/html/expect/test_package+re/External/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - External (test_package+re.External) - - - - - - - - - - -
      -

      - Module External -

      -
      -
      -
      -
      - let foo: unit => unit; -
      -
      -

      - Foo bar. -

      -
      -
      -
      - - diff --git a/test/html/expect/test_package+re/Functor/index.html b/test/html/expect/test_package+re/Functor/index.html deleted file mode 100644 index 42ba894885..0000000000 --- a/test/html/expect/test_package+re/Functor/index.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - Functor (test_package+re.Functor) - - - - - - - - - - -
      -

      - Module Functor -

      -
      -
      -
      -
      - module type S = { ... }; -
      -
      -
      -
      - module type S1 = (_: S) => S; -
      -
      -
      -
      - module F1: (Arg: S) => S; -
      -
      -
      -
      - module F2: (Arg: S) => S with type t = Arg.t; -
      -
      -
      -
      - module F3: (Arg: S) => { ... }; -
      -
      -
      -
      - module F4: (Arg: S) => S; -
      -
      -
      -
      - module F5: () => S; -
      -
      -
      - - diff --git a/test/html/expect/test_package+re/Include/index.html b/test/html/expect/test_package+re/Include/index.html deleted file mode 100644 index c12e0a57ce..0000000000 --- a/test/html/expect/test_package+re/Include/index.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - Include (test_package+re.Include) - - - - - - - - - - -
      -

      - Module Include -

      -
      -
      -
      -
      - module type Not_inlined = { ... }; -
      -
      -
      -
      - - include Not_inlined; - -
      -
      - type t; -
      -
      -
      -
      -
      -
      - module type Inlined = { ... }; -
      -
      -
      -
      -
      - type u; -
      -
      -
      -
      -
      - module type Not_inlined_and_closed = { ... }; -
      -
      -
      -
      - - include Not_inlined_and_closed; - -
      -
      - type v; -
      -
      -
      -
      -
      -
      - module type Not_inlined_and_opened = { ... }; -
      -
      -
      -
      - - include Not_inlined_and_opened; - -
      -
      - type w; -
      -
      -
      -
      -
      -
      - module type Inherent_Module = { ... }; -
      -
      -
      -
      - - include Inherent_Module; - -
      -
      - let a: t; -
      -
      -
      -
      -
      -
      - module type Dorminant_Module = { ... }; -
      -
      -
      -
      - - include Dorminant_Module; - -
      -
      - - include Inherent_Module; - -
      -
      - let a: t; -
      -
      -
      -
      -
      -
      - let a: u; -
      -
      -
      -
      -
      - - diff --git a/test/html/expect/test_package+re/Include2/Y_include_doc/index.html b/test/html/expect/test_package+re/Include2/Y_include_doc/index.html deleted file mode 100644 index a553bbbc64..0000000000 --- a/test/html/expect/test_package+re/Include2/Y_include_doc/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - Y_include_doc (test_package+re.Include2.Y_include_doc) - - - - - - - - - - -
      -

      - Module Include2.Y_include_doc -

      -
      -
      -
      -
      -

      - Doc attached to include Y. Y's top-comment shouldn't appear here. -

      -
      -
      - - include module type of struct include Y end; - -
      -
      - type t = Y.t; -
      -
      -
      -
      -
      - - diff --git a/test/html/expect/test_package+re/Include2/Y_include_synopsis/index.html b/test/html/expect/test_package+re/Include2/Y_include_synopsis/index.html deleted file mode 100644 index c3ed070b04..0000000000 --- a/test/html/expect/test_package+re/Include2/Y_include_synopsis/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Y_include_synopsis (test_package+re.Include2.Y_include_synopsis) - - - - - - - - - - -
      -

      - Module Include2.Y_include_synopsis -

      -

      - The include Y below should have the synopsis from Y's top-comment attached to it. -

      -
      -
      -
      -
      - - include module type of struct include Y end; - -
      -
      - type t = Y.t; -
      -
      -
      -
      -
      - - diff --git a/test/html/expect/test_package+re/Include2/index.html b/test/html/expect/test_package+re/Include2/index.html deleted file mode 100644 index 1079c94b07..0000000000 --- a/test/html/expect/test_package+re/Include2/index.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - Include2 (test_package+re.Include2) - - - - - - - - - - -
      -

      - Module Include2 -

      -
      -
      -
      -
      - module X: { ... }; -
      -
      -

      - Comment about X that should not appear when including X below. -

      -
      -
      -
      -
      - - include module type of struct include X end; - -

      - Comment about X that should not appear when including X below. -

      -
      -
      - type t = int; -
      -
      -
      -
      -
      -
      - module Y: { ... }; -
      -
      -

      - Top-comment of Y. -

      -
      -
      -
      -
      - module Y_include_synopsis: { ... }; -
      -
      -

      - The include Y below should have the synopsis from Y's top-comment attached to it. -

      -
      -
      -
      -
      - module Y_include_doc: { ... }; -
      -
      -
      - - diff --git a/test/html/expect/test_package+re/Include_sections/index.html b/test/html/expect/test_package+re/Include_sections/index.html deleted file mode 100644 index 50c0ab8a35..0000000000 --- a/test/html/expect/test_package+re/Include_sections/index.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - Include_sections (test_package+re.Include_sections) - - - - - - - - - - -
      -

      - Module Include_sections -

      -
      - -
      -
      -
      - module type Something = { ... }; -
      -
      -

      - A module type. -

      -
      -
      -

      - Let's include Something once -

      -
      -
      -
      - let something: unit; -
      -
      -

      - Something 1 -

      -

      - foo -

      -
      -
      - let foo: unit; -
      -
      -

      - Something 2 -

      -
      -
      - let bar: unit; -
      -
      -

      - foo bar -

      -
      -
      -

      - Something 1-bis -

      -

      - Some text. -

      -
      -

      - Second include -

      -

      - Let's include Something a second time: the heading level should be shift here. -

      -
      -
      -
      - let something: unit; -
      -
      -

      - Something 1 -

      -

      - foo -

      -
      -
      - let foo: unit; -
      -
      -

      - Something 2 -

      -
      -
      - let bar: unit; -
      -
      -

      - foo bar -

      -
      -
      -

      - Something 1-bis -

      -

      - Some text. -

      -
      -

      - Third include -

      -

      - Shifted some more. -

      -
      -
      -
      - let something: unit; -
      -
      -

      - Something 1 -

      -

      - foo -

      -
      -
      - let foo: unit; -
      -
      -
      - Something 2 -
      -
      -
      - let bar: unit; -
      -
      -

      - foo bar -

      -
      -
      -

      - Something 1-bis -

      -

      - Some text. -

      -
      -

      - And let's include it again, but without inlining it this time: the ToC shouldn't grow. -

      -
      -
      - - include Something; - -
      -
      - let something: unit; -
      -
      -

      - Something 1 -

      -

      - foo -

      -
      -
      - let foo: unit; -
      -
      -

      - Something 2 -

      -
      -
      - let bar: unit; -
      -
      -

      - foo bar -

      -
      -
      -

      - Something 1-bis -

      -

      - Some text. -

      -
      -
      -
      - - diff --git a/test/html/expect/test_package+re/Include_sections/module-type-Something/index.html b/test/html/expect/test_package+re/Include_sections/module-type-Something/index.html deleted file mode 100644 index 2406c3857e..0000000000 --- a/test/html/expect/test_package+re/Include_sections/module-type-Something/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - Something (test_package+re.Include_sections.Something) - - - - - - - - - - -
      -

      - Module type Include_sections.Something -

      -

      - A module type. -

      -
      - -
      -
      -
      - let something: unit; -
      -
      -

      - Something 1 -

      -

      - foo -

      -
      -
      - let foo: unit; -
      -
      -

      - Something 2 -

      -
      -
      - let bar: unit; -
      -
      -

      - foo bar -

      -
      -
      -

      - Something 1-bis -

      -

      - Some text. -

      -
      - - diff --git a/test/html/expect/test_package+re/Interlude/index.html b/test/html/expect/test_package+re/Interlude/index.html deleted file mode 100644 index 2bbfa97f37..0000000000 --- a/test/html/expect/test_package+re/Interlude/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - Interlude (test_package+re.Interlude) - - - - - - - - - - -
      -

      - Module Interlude -

      -

      - This is the comment associated to the module. -

      -
      -
      -

      - Some separate stray text at the top of the module. -

      -
      -
      - let foo: unit; -
      -
      -

      - Foo. -

      -
      -
      -

      - Some stray text that is not associated with any signature item. -

      -

      - It has multiple paragraphs. -

      -

      - A separate block of stray text, adjacent to the preceding one. -

      -
      -
      - let bar: unit; -
      -
      -

      - Bar. -

      -
      -
      -
      -
      - let multiple: unit; -
      -
      -
      -
      - let signature: unit; -
      -
      -
      -
      - let items: unit; -
      -
      -

      - Stray text at the bottom of the module. -

      -
      - - diff --git a/test/html/expect/test_package+re/Labels/index.html b/test/html/expect/test_package+re/Labels/index.html deleted file mode 100644 index f9ca52b921..0000000000 --- a/test/html/expect/test_package+re/Labels/index.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - - Labels (test_package+re.Labels) - - - - - - - - - - -
      -

      - Module Labels -

      -
      - -
      -

      - Attached to unit -

      -

      - Attached to nothing -

      -
      -
      - module A: { ... }; -
      -
      -
      -
      - type t; -
      -
      -

      - Attached to type -

      -
      -
      -
      -
      - let f: t; -
      -
      -

      - Attached to value -

      -
      -
      -
      -
      - let e: unit => t; -
      -
      -

      - Attached to external -

      -
      -
      -
      -
      - module type S = { ... }; -
      -
      -
      -
      - class c: { ... } -
      -
      -
      -
      - class type cs = { ... } -
      -
      -
      -
      - exception E; -
      -
      -

      - Attached to exception -

      -
      -
      -
      -
      - type x = ..; -
      -
      -
      -
      - type x += - - - - - - -
      - | X -
      - ; -
      -
      -

      - Attached to extension -

      -
      -
      -
      -
      - module S := A -
      -
      -

      - Attached to module subst -

      -
      -
      -
      -
      - type s := t; -
      -
      -

      - Attached to type subst -

      -
      -
      -
      -
      - type u = - - - - - - - -
      - | A' - - /* -

      - Attached to constructor -

      - */ -
      - ; -
      -
      -
      -
      - type v = { - - - - - - - -
      - f: t, - - /* -

      - Attached to field -

      - */ -
      - }; -
      -
      -

      - Testing that labels can be referenced -

      - -
      - - diff --git a/test/html/expect/test_package+re/Markup/index.html b/test/html/expect/test_package+re/Markup/index.html deleted file mode 100644 index 075a552e7c..0000000000 --- a/test/html/expect/test_package+re/Markup/index.html +++ /dev/null @@ -1,378 +0,0 @@ - - - - - Markup (test_package+re.Markup) - - - - - - - - - - -
      -

      - Module Markup -

      -

      - Here, we test the rendering of comment markup. -

      -
      - -
      -

      - Sections -

      -

      - Let's get these done first, because sections will be used to break up the rest of this test. -

      -

      - Besides the section heading above, there are also -

      -

      - Subsection headings -

      -

      - and -

      -

      - Sub-subsection headings -

      -

      - but odoc has banned deeper headings. There are also title headings, but they are only allowed in mld files. -

      -

      - Anchors -

      -

      - Sections can have attached Anchors, and it is possible to link to them. Links to section headers should not be set in source code style. -

      -
      - Paragraph -
      -

      - Individual paragraphs can have a heading. -

      -
      - Subparagraph -
      -

      - Parts of a longer paragraph that can be considered alone can also have headings. -

      -

      - Styling -

      -

      - This paragraph has some styled elements: bold and italic, bold italic, emphasis, emphasis within emphasis, bold italic, superscript, subscript. The line spacing should be enough for superscripts and subscripts not to look odd. -

      -

      - Note: In italics emphasis is rendered as normal text while emphasis in emphasis is rendered in italics. It also work the same in links in italics with emphasis in emphasis. -

      -

      - code is a different kind of markup that doesn't allow nested markup. -

      -

      - It's possible for two markup elements to appear next to each other and have a space, and appear nextto each other with no space. It doesn't matter how much space it was in the source: in this sentence, it was two space characters. And in this one, there is a newline. -

      -

      - This is also true between non-code markup and code. -

      -

      - Code can appear inside other markup. Its display shouldn't be affected. -

      - -

      - This is a link. It sends you to the top of this page. Links can have markup inside them: bold, italics, emphasis, superscript, subscript, and code. Links can also be nested inside markup. Links cannot be nested inside each other. This link has no replacement text: #. The text is filled in by odoc. This is a shorthand link: #. The text is also filled in by odoc in this case. -

      -

      - This is a reference to foo. References can have replacement text: the value foo. Except for the special lookup support, references are pretty much just like links. The replacement text can have nested styles: bold, italic, emphasis, superscript, subscript, and code. It's also possible to surround a reference in a style: foo. References can't be nested inside references, and links and references can't be nested inside each other. -

      -

      - Preformatted text -

      -

      - This is a code block: -

      -
      let foo = ()
      -(** There are some nested comments in here, but an unpaired comment
      -    terminator would terminate the whole doc surrounding comment. It's
      -    best to keep code blocks no wider than 72 characters. *)
      -
      -let bar =
      -  ignore foo
      -

      - There are also verbatim blocks: -

      -
      The main difference is these don't get syntax highlighting.
      -

      - Lists -

      -
        -
      • - This is a -
      • -
      • - shorthand bulleted list, -
      • -
      • - and the paragraphs in each list item support styling. -
      • -
      -
        -
      1. - This is a -
      2. -
      3. - shorthand numbered list. -
      4. -
      -
        -
      • - Shorthand list items can span multiple lines, however trying to put two paragraphs into a shorthand list item using a double line break -
      • -
      -

      - just creates a paragraph outside the list. -

      -
        -
      • - Similarly, inserting a blank line between two list items -
      • -
      -
        -
      • - creates two separate lists. -
      • -
      -
        -
      • -

        - To get around this limitation, one -

        -

        - can use explicitly-delimited lists. -

        -
      • -
      • - This one is bulleted, -
      • -
      -
        -
      1. - but there is also the numbered variant. -
      2. -
      -
        -
      • -
          -
        • - lists -
        • -
        • - can be nested -
        • -
        • - and can include references -
        • -
        • - foo -
        • -
        -
      • -
      -

      - Unicode -

      -

      - The parser supports any ASCII-compatible encoding, in particuλar UTF-8. -

      -

      - Raw HTML -

      -

      - Raw HTML can be as inline elements into sentences. -

      -
      - If the raw HTML is the only thing in a paragraph, it is treated as a block - element, and won't be wrapped in paragraph tags by the HTML generator. -
      -

      - Modules -

      -
        -
          -
        • - X -
        • -
        -
          -
        • - X -
        • -
        • - Y -
        • -
        • - Z -
        • -
        -

        - Tags -

        -

        - Each comment can end with zero or more tags. Here are some examples: -

        -
          -
        • - author antron -
        • -
        -
          -
        • - deprecated -

          - a long time ago -

          -
        • -
        -
          -
        • - parameter foo -

          - unused -

          -
        • -
        -
          -
        • - raises Failure -

          - always -

          -
        • -
        -
          -
        • - returns -

          - never -

          -
        • -
        -
          -
        • - see # -

          - this url -

          -
        • -
        -
          -
        • - see foo.ml -

          - this file -

          -
        • -
        -
          -
        • - see Foo -

          - this document -

          -
        • -
        -
          -
        • - since 0 -
        • -
        -
          -
        • - before 1.0 -

          - it was in beta -

          -
        • -
        -
          -
        • - version -1 -
        • -
        -
        -
        - let foo: unit; -
        -
        -

        - Comments in structure items support markup, too. -

        -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Module/index.html b/test/html/expect/test_package+re/Module/index.html deleted file mode 100644 index 2a7dade220..0000000000 --- a/test/html/expect/test_package+re/Module/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - Module (test_package+re.Module) - - - - - - - - - - -
        -

        - Module Module -

        -

        - Foo. -

        -
        -
        -
        -
        - let foo: unit; -
        -
        -

        - The module needs at least one signature item, otherwise a bug causes the compiler to drop the module comment (above). See https://caml.inria.fr/mantis/view.php?id=7701. -

        -
        -
        -
        -
        - module type S = { ... }; -
        -
        -
        -
        - module type S1; -
        -
        -
        -
        - module type S2 = S; -
        -
        -
        -
        - module type S3 = S with type t = int and type u = string; -
        -
        -
        -
        - module type S4 = S with type t := int; -
        -
        -
        -
        - module type S5 = S with type v('a) := list('a); -
        -
        -
        -
        - type result('a, 'b); -
        -
        -
        -
        - module type S6 = S with type w('a, 'b) := result('a'b); -
        -
        -
        -
        - module M': { ... }; -
        -
        -
        -
        - module type S7 = S with module M = M'; -
        -
        -
        -
        - module type S8 = S with module M := M'; -
        -
        -
        -
        - module type S9 = module type of M'; -
        -
        -
        -
        - module Mutually: { ... }; -
        -
        -
        -
        - module Recursive: { ... }; -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Nested/F/argument-1-Arg1/index.html b/test/html/expect/test_package+re/Nested/F/argument-1-Arg1/index.html deleted file mode 100644 index 5c31813a5e..0000000000 --- a/test/html/expect/test_package+re/Nested/F/argument-1-Arg1/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - Arg1 (test_package+re.Nested.F.1-Arg1) - - - - - - - - - - -
        -

        - Parameter F.1-Arg1 -

        -
        - -
        -

        - Type -

        -
        -
        - type t; -
        -
        -

        - Some type. -

        -
        -
        -

        - Values -

        -
        -
        - let y: t; -
        -
        -

        - The value of y. -

        -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Nested/F/argument-2-Arg2/index.html b/test/html/expect/test_package+re/Nested/F/argument-2-Arg2/index.html deleted file mode 100644 index cd654a1c6a..0000000000 --- a/test/html/expect/test_package+re/Nested/F/argument-2-Arg2/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - Arg2 (test_package+re.Nested.F.2-Arg2) - - - - - - - - - - -
        -

        - Parameter F.2-Arg2 -

        -
        - -
        -

        - Type -

        -
        -
        - type t; -
        -
        -

        - Some type. -

        -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Nested/F/index.html b/test/html/expect/test_package+re/Nested/F/index.html deleted file mode 100644 index b49b213b22..0000000000 --- a/test/html/expect/test_package+re/Nested/F/index.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - F (test_package+re.Nested.F) - - - - - - - - - - -
        -

        - Module Nested.F -

        -

        - This is a functor F. -

        -

        - Some additional comments. -

        -
        - -
        -

        - Type -

        -

        - Parameters -

        -
        -
        - module Arg1: Y -
        -
        -
        -
        - module Arg2: { ... } -
        -
        -

        - Signature -

        -
        -
        - type t = (Arg1.t, Arg2.t); -
        -
        -

        - Some type. -

        -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Nested/X/index.html b/test/html/expect/test_package+re/Nested/X/index.html deleted file mode 100644 index de625410de..0000000000 --- a/test/html/expect/test_package+re/Nested/X/index.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - X (test_package+re.Nested.X) - - - - - - - - - - -
        -

        - Module Nested.X -

        -

        - This is module X. -

        -

        - Some additional comments. -

        -
        - -
        -

        - Type -

        -
        -
        - type t; -
        -
        -

        - Some type. -

        -
        -
        -

        - Values -

        -
        -
        - let x: t; -
        -
        -

        - The value of x. -

        -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Nested/class-inherits/index.html b/test/html/expect/test_package+re/Nested/class-inherits/index.html deleted file mode 100644 index 74d84d11c3..0000000000 --- a/test/html/expect/test_package+re/Nested/class-inherits/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - inherits (test_package+re.Nested.inherits) - - - - - - - - - - -
        -

        - Class Nested.inherits -

        -
        -
        -
        -
        - inherit z -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Nested/class-z/index.html b/test/html/expect/test_package+re/Nested/class-z/index.html deleted file mode 100644 index bb1f695cb1..0000000000 --- a/test/html/expect/test_package+re/Nested/class-z/index.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - z (test_package+re.Nested.z) - - - - - - - - - - -
        -

        - Class Nested.z -

        -

        - This is class z. -

        -

        - Some additional comments. -

        -
        - -
        -
        -
        - val y: int -
        -
        -

        - Some value. -

        -
        -
        -
        -
        - val mutable virtual y': int -
        -
        -

        - Methods -

        -
        -
        - method z: int -
        -
        -

        - Some method. -

        -
        -
        -
        -
        - method private virtual z': int -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Nested/index.html b/test/html/expect/test_package+re/Nested/index.html deleted file mode 100644 index 73bfd919c8..0000000000 --- a/test/html/expect/test_package+re/Nested/index.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - Nested (test_package+re.Nested) - - - - - - - - - - -
        -

        - Module Nested -

        -

        - This comment needs to be here before #235 is fixed. -

        -
        - -
        -

        - Module -

        -
        -
        - module X: { ... }; -
        -
        -

        - This is module X. -

        -
        -
        -

        - Module type -

        -
        -
        - module type Y = { ... }; -
        -
        -

        - This is module type Y. -

        -
        -
        -

        - Functor -

        -
        -
        - module F: (Arg1: Y) => (Arg2: { ... }) => { ... }; -
        -
        -

        - This is a functor F. -

        -
        -
        -

        - Class -

        -
        -
        - class virtual z: { ... } -
        -
        -

        - This is class z. -

        -
        -
        -
        -
        - class virtual inherits: { ... } -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Nested/module-type-Y/index.html b/test/html/expect/test_package+re/Nested/module-type-Y/index.html deleted file mode 100644 index 21bee76fa0..0000000000 --- a/test/html/expect/test_package+re/Nested/module-type-Y/index.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - Y (test_package+re.Nested.Y) - - - - - - - - - - -
        -

        - Module type Nested.Y -

        -

        - This is module type Y. -

        -

        - Some additional comments. -

        -
        - -
        -

        - Type -

        -
        -
        - type t; -
        -
        -

        - Some type. -

        -
        -
        -

        - Values -

        -
        -
        - let y: t; -
        -
        -

        - The value of y. -

        -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Ocamlary/index.html b/test/html/expect/test_package+re/Ocamlary/index.html deleted file mode 100644 index c8d5d74c69..0000000000 --- a/test/html/expect/test_package+re/Ocamlary/index.html +++ /dev/null @@ -1,2037 +0,0 @@ - - - - - Ocamlary (test_package+re.Ocamlary) - - - - - - - - - - -
        -

        - Module Ocamlary -

        -

        - This is an interface with all of the module system features. This documentation demonstrates: -

        -
          -
        • - comment formatting -
        • -
        • - unassociated comments -
        • -
        • - documentation sections -
        • -
        • -

          - module system documentation including -

          -
            -
          1. - submodules -
          2. -
          3. - module aliases -
          4. -
          5. - module types -
          6. -
          7. - module type aliases -
          8. -
          9. - modules with signatures -
          10. -
          11. - modules with aliased signatures -
          12. -
          -
        • -
        -

        - A numbered list: -

        -
          -
        1. - 3 -
        2. -
        3. - 2 -
        4. -
        5. - 1 -
        6. -
        -

        - David Sheets is the author. -

        -
          -
        • - author David Sheets -
        • -
        -
        - -
        -

        - You may find more information about this HTML documentation renderer at github.com/dsheets/ocamlary. -

        -

        - This is some verbatim text: -

        -
        verbatim
        -

        - This is some verbatim text: -

        -
        [][df[]]}}
        -

        - Here is some raw LaTeX: -

        -

        - Here is an index table of Empty modules: -

        -
          -
        • - Empty A plain, empty module -
        • -
        • - EmptyAlias A plain module alias of Empty -
        • -
        -

        - Here is a table of links to indexes: indexlist -

        -

        - Here is some superscript: x2 -

        -

        - Here is some subscript: x0 -

        -

        - Here are some escaped brackets: { [ @ ] } -

        -

        - Here is some emphasis followed by code. -

        -

        - An unassociated comment -

        -

        - Level 1 -

        -

        - Level 2 -

        -

        - Level 3 -

        -
        - Level 4 -
        -

        - Basic module stuff -

        -
        -
        - module Empty: { ... }; -
        -
        -

        - A plain, empty module -

        -
        -
        -
        -
        - module type Empty = { ... }; -
        -
        -

        - An ambiguous, misnamed module type -

        -
        -
        -
        -
        - module type MissingComment = { ... }; -
        -
        -

        - An ambiguous, misnamed module type -

        -
        -
        -

        - Section 9000 -

        -
        -
        - module EmptyAlias = Empty; -
        -
        -

        - A plain module alias of Empty -

        -
        -
        -

        - EmptySig -

        -
        -
        - module type EmptySig = { ... }; -
        -
        -

        - A plain, empty module signature -

        -
        -
        -
        -
        - module type EmptySigAlias = EmptySig; -
        -
        -

        - A plain, empty module signature alias of -

        -
        -
        -
        - -
        -

        - A plain module of a signature of EmptySig (reference) -

        -
        -
        -
        - -
        -

        - A plain module with an alias signature -

        -
        -
        -
        -
        - module One: { ... }; -
        -
        -
        -
        - module type SigForMod = { ... }; -
        -
        -

        - There's a signature in a module in this signature. -

        -
        -
        -
        -
        - module type SuperSig = { ... }; -
        -
        -

        - For a good time, see SuperSig.SubSigA.subSig or SuperSig.SubSigB.subSig or SuperSig.EmptySig. Section Section 9000 is also interesting. EmptySig is the section and EmptySig is the module signature. -

        -
        -
        - module Buffer: { ... }; -
        -
        -

        - Buffer.t -

        -
        -
        -

        - Some text before exception title. -

        -

        - Basic exception stuff -

        -

        - After exception title. -

        -
        -
        - exception Kaboom(unit); -
        -
        -

        - Unary exception constructor -

        -
        -
        -
        -
        - exception Kablam(unit, unit); -
        -
        -

        - Binary exception constructor -

        -
        -
        -
        -
        - exception Kapow((unit, unit)); -
        -
        -

        - Unary exception constructor over binary tuple -

        -
        -
        -
        -
        - exception EmptySig; -
        -
        -

        - EmptySig is a module and EmptySig is this exception. -

        -
        -
        -
        -
        - exception EmptySigAlias; -
        -
        -

        - EmptySigAlias is this exception. -

        -
        -
        -

        - Basic type and value stuff with advanced doc comments -

        -
        -
        - type a_function('a, 'b) = 'a => 'b; -
        -
        -

        - a_function is this type and a_function is the value below. -

        -
        -
        -
        -
        - let a_function: x:int => int; -
        -
        -

        - This is a_function with param and return type. -

        -
          -
        • - parameter x -

          - the x coordinate -

          -
        • -
        -
          -
        • - returns -

          - the y coordinate -

          -
        • -
        -
        -
        -
        -
        - let fun_fun_fun: a_function(a_function(int, int)a_function(unit, unit)); -
        -
        -
        -
        - let fun_maybe: ?yes:unit => unit => int; -
        -
        -
        -
        - let not_found: unit => unit; -
        -
        -
          -
        • - raises Not_found -

          - That's all it does -

          -
        • -
        -
        -
        -
        -
        - let ocaml_org: string; -
        -
        - -
        -
        -
        -
        - let some_file: string; -
        -
        -
          -
        • - see some_file -

          - The file called some_file -

          -
        • -
        -
        -
        -
        -
        - let some_doc: string; -
        -
        -
          -
        • - see some_doc -

          - The document called some_doc -

          -
        • -
        -
        -
        -
        -
        - let since_mesozoic: unit; -
        -
        -

        - This value was introduced in the Mesozoic era. -

        -
          -
        • - since mesozoic -
        • -
        -
        -
        -
        -
        - let changing: unit; -
        -
        -

        - This value has had changes in 1.0.0, 1.1.0, and 1.2.0. -

        -
          -
        • - before 1.0.0 -

          - before 1.0.0 -

          -
        • -
        -
          -
        • - before 1.1.0 -

          - before 1.1.0 -

          -
        • -
        -
          -
        • - version 1.2.0 -
        • -
        -
        -
        -

        - Some Operators -

        -
        -
        - let (~-): unit; -
        -
        -
        -
        - let (!): unit; -
        -
        -
        -
        - let (@): unit; -
        -
        -
        -
        - let ($): unit; -
        -
        -
        -
        - let (%): unit; -
        -
        -
        -
        - let (&): unit; -
        -
        -
        -
        - let (*): unit; -
        -
        -
        -
        - let (-): unit; -
        -
        -
        -
        - let (+): unit; -
        -
        -
        -
        - let (-?): unit; -
        -
        -
        -
        - let (/): unit; -
        -
        -
        -
        - let (:=): unit; -
        -
        -
        -
        - let (=): unit; -
        -
        -
        -
        - let (land): unit; -
        -
        -

        - Advanced Module Stuff -

        -
        -
        - module CollectionModule: { ... }; -
        -
        -

        - This comment is for CollectionModule. -

        -
        -
        -
        -
        - module type COLLECTION = module type of CollectionModule; -
        -
        -

        - module type of -

        -
        -
        -
        -
        - module Recollection: (C: COLLECTION) => COLLECTION with type collection = list(C.element) and type element = C.collection; -
        -
        -
        -
        - module type MMM = { ... }; -
        -
        -
        -
        - module type RECOLLECTION = MMM with module C = Recollection(CollectionModule); -
        -
        -
        -
        - module type RecollectionModule = { ... }; -
        -
        -
        -
        - module type A = { ... }; -
        -
        -
        -
        - module type B = { ... }; -
        -
        -
        -
        - module type C = { ... }; -
        -
        -

        - This module type includes two signatures. -

        -
        -
        -
        -
        - module FunctorTypeOf: (Collection: module type of CollectionModule) => { ... }; -
        -
        -

        - This comment is for FunctorTypeOf. -

        -
        -
        -
        -
        - module type IncludeModuleType = { ... }; -
        -
        -

        - This comment is for IncludeModuleType. -

        -
        -
        -
        -
        - module type ToInclude = { ... }; -
        -
        -
        -
        - - include ToInclude; - -
        -
        - module IncludedA: { ... }; -
        -
        -
        -
        - module type IncludedB = { ... }; -
        -
        -
        -
        -

        - Advanced Type Stuff -

        -
        -
        - type record = { - - - - - - - - - - - -
        - field1: int, - - /* -

        - This comment is for field1. -

        - */ -
        - field2: int, - - /* -

        - This comment is for field2. -

        - */ -
        - }; -
        -
        -

        - This comment is for record. -

        -

        - This comment is also for record. -

        -
        -
        -
        -
        - type mutable_record = { - - - - - - - - - - - - - - - -
        - mutable a: int, - - /* -

        - a is first and mutable -

        - */ -
        - b: unit, - - /* -

        - b is second and immutable -

        - */ -
        - mutable c: int, - - /* -

        - c is third and mutable -

        - */ -
        - }; -
        -
        -
        -
        - type universe_record = { - - - - - - -
        - nihilate: a. 'a => unit, -
        - }; -
        -
        -
        -
        - type variant = - - - - - - - - - - - - - - - - - - - -
        - | TagA - - /* -

        - This comment is for TagA. -

        - */ -
        - | ConstrB(int) - - /* -

        - This comment is for ConstrB. -

        - */ -
        - | ConstrC(int, int) - - /* -

        - This comment is for binary ConstrC. -

        - */ -
        - | ConstrD((int, int)) - - /* -

        - This comment is for unary ConstrD of binary tuple. -

        - */ -
        - ; -
        -
        -

        - This comment is for variant. -

        -

        - This comment is also for variant. -

        -
        -
        -
        -
        - type poly_variant = [ - - - - - - - - - -
        - | `TagA -
        - | `ConstrB(int) -
        - ]; -
        -
        -

        - This comment is for poly_variant. -

        -

        - Wow! It was a polymorphic variant! -

        -
        -
        -
        -
        - type full_gadt(_, _) = - - - - - - - - - - - - - - - -
        - | Tag : full_gadt(unit, unit) -
        - | First('a) : full_gadt('a, unit) -
        - | Second('a) : full_gadt(unit, 'a) -
        - | Exist('a, 'b) : full_gadt('b, unit) -
        - ; -
        -
        -

        - This comment is for full_gadt. -

        -

        - Wow! It was a GADT! -

        -
        -
        -
        -
        - type partial_gadt('a) = - - - - - - - - - - - - -
        - | AscribeTag : partial_gadt('a) -
        - | OfTag(partial_gadt('a)) -
        - | ExistGadtTag(('a => 'b)) : partial_gadt('a) -
        - ; -
        -
        -

        - This comment is for partial_gadt. -

        -

        - Wow! It was a mixed GADT! -

        -
        -
        -
        -
        - type alias = variant; -
        -
        -

        - This comment is for alias. -

        -
        -
        -
        -
        - type tuple = ((alias, alias), alias, (alias, alias)); -
        -
        -

        - This comment is for tuple. -

        -
        -
        -
        -
        - type variant_alias = variant = - - - - - - - - - - - - - - - -
        - | TagA -
        - | ConstrB(int) -
        - | ConstrC(int, int) -
        - | ConstrD((int, int)) -
        - ; -
        -
        -

        - This comment is for variant_alias. -

        -
        -
        -
        -
        - type record_alias = record = { - - - - - - - - - -
        - field1: int, -
        - field2: int, -
        - }; -
        -
        -

        - This comment is for record_alias. -

        -
        -
        -
        -
        - type poly_variant_union = [ - - - - - - - - - -
        - | poly_variant -
        - | `TagC -
        - ]; -
        -
        -

        - This comment is for poly_variant_union. -

        -
        -
        -
        -
        - type poly_poly_variant('a) = [ - - - - - - -
        - | `TagA('a) -
        - ]; -
        -
        -
        -
        - type bin_poly_poly_variant('a, 'b) = [ - - - - - - - - - -
        - | `TagA('a) -
        - | `ConstrB('b) -
        - ]; -
        -
        -
        -
        - type open_poly_variant('a) = [> `TagA ] as 'a; -
        -
        -
        -
        - type open_poly_variant2('a) = [> `ConstrB(int) ] as 'a; -
        -
        -
        -
        - type open_poly_variant_alias('a) = open_poly_variant2(open_poly_variant('a)); -
        -
        -
        -
        - type poly_fun('a) = [> `ConstrB(int) ] as 'a => 'a; -
        -
        -
        -
        - type poly_fun_constraint('a) = 'a => 'a constraint 'a = [> `TagA ]; -
        -
        -
        -
        - type closed_poly_variant('a) = [< `One | `Two ] as 'a; -
        -
        -
        -
        - type clopen_poly_variant('a) = [< `One | `Two(int) | `Three Two Three ] as 'a; -
        -
        -
        -
        - type nested_poly_variant = [ - - - - - - - - - - - - - - - -
        - | `A -
        - | `B([ `B1 | `B2 ]) -
        - | `C -
        - | `D([ `D1([ `D1a ]) ]) -
        - ]; -
        -
        -
        -
        - type full_gadt_alias('a, 'b) = full_gadt('a'b) = - - - - - - - - - - - - - - - -
        - | Tag : full_gadt_alias(unit, unit) -
        - | First('a) : full_gadt_alias('a, unit) -
        - | Second('a) : full_gadt_alias(unit, 'a) -
        - | Exist('a, 'b) : full_gadt_alias('b, unit) -
        - ; -
        -
        -

        - This comment is for full_gadt_alias. -

        -
        -
        -
        -
        - type partial_gadt_alias('a) = partial_gadt('a) = - - - - - - - - - - - - -
        - | AscribeTag : partial_gadt_alias('a) -
        - | OfTag(partial_gadt_alias('a)) -
        - | ExistGadtTag(('a => 'b)) : partial_gadt_alias('a) -
        - ; -
        -
        -

        - This comment is for partial_gadt_alias. -

        -
        -
        -
        -
        - exception Exn_arrow(unit) : exn; -
        -
        -

        - This comment is for Exn_arrow. -

        -
        -
        -
        -
        - type mutual_constr_a = - - - - - - - - - - -
        - | A -
        - | B_ish(mutual_constr_b) - - /* -

        - This comment is between mutual_constr_a and mutual_constr_b. -

        - */ -
        - ; -
        -
        -

        - This comment is for mutual_constr_a then mutual_constr_b. -

        -
        -
        -
        -
        - and mutual_constr_b = - - - - - - - - - - -
        - | B -
        - | A_ish(mutual_constr_a) - - /* -

        - This comment must be here for the next to associate correctly. -

        - */ -
        - ; -
        -
        -

        - This comment is for mutual_constr_b then mutual_constr_a. -

        -
        -
        -
        -
        - type rec_obj = {. f: int, g: unit => unit, h: rec_obj, }; -
        -
        -
        -
        - type open_obj('a) = {.. f: int, g: unit => unit, } as 'a; -
        -
        -
        -
        - type oof('a) = {.. a: unit, } as 'a => 'a; -
        -
        -
        -
        - type any_obj('a) = {.. } as 'a; -
        -
        -
        -
        - type empty_obj = {. }; -
        -
        -
        -
        - type one_meth = {. meth: unit, }; -
        -
        -
        -
        - type ext = ..; -
        -
        -

        - A mystery wrapped in an ellipsis -

        -
        -
        -
        -
        - type ext += - - - - - - -
        - | ExtA -
        - ; -
        -
        -
        -
        - type ext += - - - - - - -
        - | ExtB -
        - ; -
        -
        -
        -
        - type ext += - - - - - - - - - -
        - | ExtC(unit) -
        - | ExtD(ext) -
        - ; -
        -
        -
        -
        - type ext += - - - - - - -
        - | ExtE -
        - ; -
        -
        -
        -
        - type ext += - - - - - - -
        - | ExtF -
        - ; -
        -
        -
        -
        - type poly_ext('a) = ..; -
        -
        -

        - 'a poly_ext -

        -
        -
        -
        -
        - type poly_ext += - - - - - - - - - - -
        - | Foo('b) -
        - | Bar('b, 'b) - - /* -

        - 'b poly_ext -

        - */ -
        - ; -
        -
        -
        -
        - type poly_ext += - - - - - - - -
        - | Quux('c) - - /* -

        - 'c poly_ext -

        - */ -
        - ; -
        -
        -
        -
        - module ExtMod: { ... }; -
        -
        -
        -
        - type ExtMod.t += - - - - - - - -
        - | ZzzTop0 - - /* -

        - It's got the rock -

        - */ -
        - ; -
        -
        -
        -
        - type ExtMod.t += - - - - - - - -
        - | ZzzTop(unit) - - /* -

        - and it packs a unit. -

        - */ -
        - ; -
        -
        -
        -
        - let launch_missiles: unit => unit; -
        -
        -

        - Rotate keys on my mark... -

        -
        -
        -
        -
        - type my_mod = (module COLLECTION); -
        -
        -

        - A brown paper package tied up with string -

        -
        -
        -
        -
        - class empty_class: { ... } -
        -
        -
        -
        - class one_method_class: { ... } -
        -
        -
        -
        - class two_method_class: { ... } -
        -
        -
        -
        - class ('a) param_class: 'a => { ... } -
        -
        -
        -
        - type my_unit_object = param_class(unit); -
        -
        -
        -
        - type my_unit_class('a) = param_class(unit) as 'a; -
        -
        -
        -
        - module Dep1: { ... }; -
        -
        -
        -
        - module Dep2: (Arg: { ... }) => { ... }; -
        -
        -
        -
        - type dep1 = Dep2(Dep1).B.c; -
        -
        -
        -
        - module Dep3: { ... }; -
        -
        -
        -
        - module Dep4: { ... }; -
        -
        -
        -
        - module Dep5: (Arg: { ... }) => { ... }; -
        -
        -
        -
        - type dep2 = Dep5(Dep4).Z.X.b; -
        -
        -
        -
        - type dep3 = Dep5(Dep4).Z.Y.a; -
        -
        -
        -
        - module Dep6: { ... }; -
        -
        -
        -
        - module Dep7: (Arg: { ... }) => { ... }; -
        -
        -
        -
        - type dep4 = Dep7(Dep6).M.Y.d; -
        -
        -
        -
        - module Dep8: { ... }; -
        -
        -
        -
        - module Dep9: (X: { ... }) => { ... }; -
        -
        -
        -
        - module type Dep10 = Dep9(Dep8).T with type t = int; -
        -
        -
        -
        - module Dep11: { ... }; -
        -
        -
        -
        - module Dep12: (Arg: { ... }) => { ... }; -
        -
        -
        -
        - module Dep13: Dep12(Dep11).T; -
        -
        -
        -
        - type dep5 = Dep13.c; -
        -
        -
        -
        - module type With1 = { ... }; -
        -
        -
        -
        - module With2: { ... }; -
        -
        -
        -
        - module With3: With1 with module M = With2; -
        -
        -
        -
        - type with1 = With3.N.t; -
        -
        -
        -
        - module With4: With1 with module M := With2; -
        -
        -
        -
        - type with2 = With4.N.t; -
        -
        -
        -
        - module With5: { ... }; -
        -
        -
        -
        - module With6: { ... }; -
        -
        -
        -
        - module With7: (X: { ... }) => { ... }; -
        -
        -
        -
        - module type With8 = With7(With6).T with module M = With5 and type M.N.t = With5.N.t; -
        -
        -
        -
        - module With9: { ... }; -
        -
        -
        -
        - module With10: { ... }; -
        -
        -
        -
        - module type With11 = With7(With10).T with module M = With9 and type N.t = int; -
        -
        -
        -
        - module type NestedInclude1 = { ... }; -
        -
        -
        -
        - - include NestedInclude1; - -
        -
        - module type NestedInclude2 = { ... }; -
        -
        -
        -
        -
        -
        - - include NestedInclude2 with type nested_include = int; - -
        -
        - type nested_include = int; -
        -
        -
        -
        -
        -
        - module DoubleInclude1: { ... }; -
        -
        -
        -
        - module DoubleInclude3: { ... }; -
        -
        -
        -
        - - include module type of DoubleInclude3.DoubleInclude2; - -
        -
        - type double_include; -
        -
        -
        -
        -
        -
        - module IncludeInclude1: { ... }; -
        -
        -
        -
        - - include module type of IncludeInclude1; - -
        -
        - module type IncludeInclude2 = { ... }; -
        -
        -
        -
        -
        -
        - - include IncludeInclude2; - -
        -
        - type include_include; -
        -
        -
        -
        -

        - Trying the {!modules: ...} command. -

        -

        - With ocamldoc, toplevel units will be linked and documented, while submodules will behave as simple references. -

        -

        - With odoc, everything should be resolved (and linked) but only toplevel units will be documented. -

        - -

        - Weirder usages involving module types -

        -
          -
        • - IncludeInclude1.IncludeInclude2 -
        • -
        • - Dep4.T -
        • -
        • - A.Q -
        • -
        -

        - Playing with @canonical paths -

        -
        -
        - module CanonicalTest: { ... }; -
        -
        - -

        - Aliases again -

        -
        -
        - module Aliases: { ... }; -
        -
        -

        - Let's imitate jst's layout. -

        -
        -
        -

        - Section title splicing -

        -

        - I can refer to -

        - -

        - But also to things in submodules: -

        -
          -
        • - {!section:SuperSig.SubSigA.subSig} : SuperSig.SubSigA.subSig -
        • -
        • - {!Aliases.incl} : Aliases:incl -
        • -
        -

        - And just to make sure we do not mess up: -

        -
          -
        • - {{!section:indexmodules}A} : A -
        • -
        • - {{!aliases}B} : B -
        • -
        • - {{!section:SuperSig.SubSigA.subSig}C} : C -
        • -
        • - {{!Aliases.incl}D} : D -
        • -
        -

        - New reference syntax -

        -
        -
        - module type M = { ... }; -
        -
        -
        -
        - module M: { ... }; -
        -
        -

        - Here goes: -

        -
          -
        • - {!module-M.t} : M.t -
        • -
        • - {!module-type-M.t} : M.t -
        • -
        -
        -
        - module Only_a_module: { ... }; -
        -
        -

        - Some here should fail: -

        -
          -
        • - {!Only_a_module.t} : Only_a_module.t -
        • -
        • - {!module-Only_a_module.t} : Only_a_module.t -
        • -
        • - {!module-type-Only_a_module.t} : Only_a_module.t : test -
        • -
        -
        -
        - module type TypeExt = { ... }; -
        -
        -
        -
        - type new_t = ..; -
        -
        -
        -
        - type new_t += - - - - - - -
        - | C -
        - ; -
        -
        -
        -
        - module type TypeExtPruned = TypeExt with type t := new_t; -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Recent/X/index.html b/test/html/expect/test_package+re/Recent/X/index.html deleted file mode 100644 index c6fb745abc..0000000000 --- a/test/html/expect/test_package+re/Recent/X/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - X (test_package+re.Recent.X) - - - - - - - - - - -
        -

        - Module Recent.X -

        -
        -
        -
        -
        - module L := Z.Y -
        -
        -
        -
        - type t = Z.Y.X.t(int); -
        -
        -
        -
        - type u := int; -
        -
        -
        -
        - type v = Z.Y.X.t(u); -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Recent/index.html b/test/html/expect/test_package+re/Recent/index.html deleted file mode 100644 index cfb590ce4d..0000000000 --- a/test/html/expect/test_package+re/Recent/index.html +++ /dev/null @@ -1,248 +0,0 @@ - - - - - Recent (test_package+re.Recent) - - - - - - - - - - -
        -

        - Module Recent -

        -
        -
        -
        -
        - module type S = { ... }; -
        -
        -
        -
        - module type S1 = (_: S) => S; -
        -
        -
        -
        - type variant = - - - - - - - - - - - - - - - - - - - - -
        - | A -
        - | B(int) -
        - | C - - /* -

        - foo -

        - */ -
        - | D - - /* -

        - bar -

        - */ -
        - | E of { - - - - - - -
        - a: int, -
        - } -
        - ; -
        -
        -
        -
        - type gadt(_) = - - - - - - - - - - - - - -
        - | A : gadt(int) -
        - | B(int) : gadt(string) - - /* -

        - foo -

        - */ -
        - | C: { - - - - - - -
        - a: int, -
        - } : gadt(unit) -
        - ; -
        -
        -
        -
        - type polymorphic_variant = [ - - - - - - - - - - - - - - - - - -
        - | `A -
        - | `B(int) -
        - | `C - - /* -

        - foo -

        - */ -
        - | `D - - /* -

        - bar -

        - */ -
        - ]; -
        -
        -
        -
        - type empty_variant = |; -
        -
        -
        -
        - type nonrec nonrec_ = int; -
        -
        -
        -
        - type empty_conj = - - - - - - -
        - | X([< `X& ('a) & ((int, float)) ]) : empty_conj -
        - ; -
        -
        -
        -
        - type conj = - - - - - - -
        - | X([< `X(int) & ([< `B(int) & (float) ]) ]) : conj -
        - ; -
        -
        -
        -
        - let empty_conj: [< `X& ('a) & ((int, float)) ]; -
        -
        -
        -
        - let conj: [< `X(int) & ([< `B(int) & (float) ]) ]; -
        -
        -
        -
        - module Z: { ... }; -
        -
        -
        -
        - module X: { ... }; -
        -
        -
        -
        - module type PolyS = { ... }; -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Recent_impl/index.html b/test/html/expect/test_package+re/Recent_impl/index.html deleted file mode 100644 index 801363b044..0000000000 --- a/test/html/expect/test_package+re/Recent_impl/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - Recent_impl (test_package+re.Recent_impl) - - - - - - - - - - -
        -

        - Module Recent_impl -

        -
        -
        -
        -
        - module Foo: { ... }; -
        -
        -
        -
        - module B: { ... }; -
        -
        -
        -
        - type u; -
        -
        -
        -
        - module type S = { ... }; -
        -
        -
        -
        - module B' = Foo.B; -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Section/index.html b/test/html/expect/test_package+re/Section/index.html deleted file mode 100644 index df1cb6e2d0..0000000000 --- a/test/html/expect/test_package+re/Section/index.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - Section (test_package+re.Section) - - - - - - - - - - -
        -

        - Module Section -

        -

        - This is the module comment. Eventually, sections won't be allowed in it. -

        -
        - -
        -

        - Empty section -

        -

        - Text only -

        -

        - Foo bar. -

        -

        - Aside only -

        -

        - Foo bar. -

        -

        - Value only -

        -
        -
        - let foo: unit; -
        -
        -

        - Empty section -

        -

        - within a comment -

        -

        - and one with a nested section -

        -

        - This section title has markup -

        -

        - But links are impossible thanks to the parser, so we never have trouble rendering a section title in a table of contents – no link will be nested inside another link. -

        -
        - - diff --git a/test/html/expect/test_package+re/Stop/index.html b/test/html/expect/test_package+re/Stop/index.html deleted file mode 100644 index bbee100c37..0000000000 --- a/test/html/expect/test_package+re/Stop/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - Stop (test_package+re.Stop) - - - - - - - - - - -
        -

        - Module Stop -

        -

        - This test cases exercises stop comments. -

        -
        -
        -
        -
        - let foo: int; -
        -
        -

        - This is normal commented text. -

        -
        -
        -

        - The next value is bar, and it should be missing from the documentation. There is also an entire module, M, which should also be hidden. It contains a nested stop comment, but that stop comment should not turn documentation back on in this outer module, because stop comments respect scope. -

        -

        - Documentation is on again. -

        -

        - Now, we have a nested module, and it has a stop comment between its two items. We want to see that the first item is displayed, but the second is missing, and the stop comment disables documenation only in that module, and not in this outer module. -

        -
        -
        - module N: { ... }; -
        -
        -
        -
        - let lol: int; -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Stop_dead_link_doc/index.html b/test/html/expect/test_package+re/Stop_dead_link_doc/index.html deleted file mode 100644 index c8a34efc8c..0000000000 --- a/test/html/expect/test_package+re/Stop_dead_link_doc/index.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - Stop_dead_link_doc (test_package+re.Stop_dead_link_doc) - - - - - - - - - - -
        -

        - Module Stop_dead_link_doc -

        -
        -
        -
        -
        - module Foo: { ... }; -
        -
        -
        -
        - type foo = - - - - - - -
        - | Bar(Foo.t) -
        - ; -
        -
        -
        -
        - type bar = - - - - - - -
        - | Bar of { - - - - - - -
        - field: Foo.t, -
        - } -
        - ; -
        -
        -
        -
        - type foo_ = - - - - - - -
        - | Bar_((int, Foo.t), int) -
        - ; -
        -
        -
        -
        - type bar_ = - - - - - - -
        - | Bar__(option(Foo.t)) -
        - ; -
        -
        -
        -
        - type another_foo; -
        -
        -
        -
        - type another_bar; -
        -
        -
        -
        - type another_foo_; -
        -
        -
        -
        - type another_bar_; -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Toplevel_comments/Alias/index.html b/test/html/expect/test_package+re/Toplevel_comments/Alias/index.html deleted file mode 100644 index cb75db16c6..0000000000 --- a/test/html/expect/test_package+re/Toplevel_comments/Alias/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Alias (test_package+re.Toplevel_comments.Alias) - - - - - - - - - - -
        -

        - Module Toplevel_comments.Alias -

        -

        - Doc of Alias. -

        -

        - Doc of T, part 2. -

        -
        -
        -
        -
        - type t; -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Toplevel_comments/Include_inline'/index.html b/test/html/expect/test_package+re/Toplevel_comments/Include_inline'/index.html deleted file mode 100644 index fa7f8be9de..0000000000 --- a/test/html/expect/test_package+re/Toplevel_comments/Include_inline'/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - Include_inline' (test_package+re.Toplevel_comments.Include_inline') - - - - - - - - - - -
        -

        - Module Toplevel_comments.Include_inline' -

        -

        - Doc of Include_inline, part 1. -

        -

        - Doc of Include_inline, part 2. -

        -
        -
        -
        -
        -

        - part 3 -

        -
        -
        -
        - type t; -
        -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Toplevel_comments/Include_inline/index.html b/test/html/expect/test_package+re/Toplevel_comments/Include_inline/index.html deleted file mode 100644 index 695ea70d77..0000000000 --- a/test/html/expect/test_package+re/Toplevel_comments/Include_inline/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Include_inline (test_package+re.Toplevel_comments.Include_inline) - - - - - - - - - - -
        -

        - Module Toplevel_comments.Include_inline -

        -

        - Doc of T, part 2. -

        -
        -
        -
        -
        -
        - type t; -
        -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Toplevel_comments/M''/index.html b/test/html/expect/test_package+re/Toplevel_comments/M''/index.html deleted file mode 100644 index afecb069bf..0000000000 --- a/test/html/expect/test_package+re/Toplevel_comments/M''/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - M'' (test_package+re.Toplevel_comments.M'') - - - - - - - - - - -
        -

        - Module Toplevel_comments.M'' -

        -

        - Doc of M'', part 1. -

        -

        - Doc of M'', part 2. -

        -
        -
        - - diff --git a/test/html/expect/test_package+re/Toplevel_comments/M'/index.html b/test/html/expect/test_package+re/Toplevel_comments/M'/index.html deleted file mode 100644 index 1d13e2c76c..0000000000 --- a/test/html/expect/test_package+re/Toplevel_comments/M'/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - M' (test_package+re.Toplevel_comments.M') - - - - - - - - - - -
        -

        - Module Toplevel_comments.M' -

        -

        - Doc of M' from outside -

        -
        -
        - - diff --git a/test/html/expect/test_package+re/Toplevel_comments/M/index.html b/test/html/expect/test_package+re/Toplevel_comments/M/index.html deleted file mode 100644 index a016b4a977..0000000000 --- a/test/html/expect/test_package+re/Toplevel_comments/M/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - M (test_package+re.Toplevel_comments.M) - - - - - - - - - - -
        -

        - Module Toplevel_comments.M -

        -

        - Doc of M -

        -
        -
        - - diff --git a/test/html/expect/test_package+re/Toplevel_comments/Ref_in_synopsis/index.html b/test/html/expect/test_package+re/Toplevel_comments/Ref_in_synopsis/index.html deleted file mode 100644 index 0829ecb92d..0000000000 --- a/test/html/expect/test_package+re/Toplevel_comments/Ref_in_synopsis/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Ref_in_synopsis (test_package+re.Toplevel_comments.Ref_in_synopsis) - - - - - - - - - - -
        -

        - Module Toplevel_comments.Ref_in_synopsis -

        -

        - t. -

        -

        - This reference should resolve in the context of this module, even when used as a synopsis. -

        -
        -
        -
        -
        - type t; -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Toplevel_comments/class-c1/index.html b/test/html/expect/test_package+re/Toplevel_comments/class-c1/index.html deleted file mode 100644 index 80219902be..0000000000 --- a/test/html/expect/test_package+re/Toplevel_comments/class-c1/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - c1 (test_package+re.Toplevel_comments.c1) - - - - - - - - - - -
        -

        - Class Toplevel_comments.c1 -

        -

        - Doc of c1, part 1. -

        -

        - Doc of c1, part 2. -

        -
        -
        - - diff --git a/test/html/expect/test_package+re/Toplevel_comments/class-c2/index.html b/test/html/expect/test_package+re/Toplevel_comments/class-c2/index.html deleted file mode 100644 index b0d3517d1b..0000000000 --- a/test/html/expect/test_package+re/Toplevel_comments/class-c2/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - c2 (test_package+re.Toplevel_comments.c2) - - - - - - - - - - -
        -

        - Class Toplevel_comments.c2 -

        -

        - Doc of c2. -

        -

        - Doc of ct, part 2. -

        -
        -
        - - diff --git a/test/html/expect/test_package+re/Toplevel_comments/class-type-ct/index.html b/test/html/expect/test_package+re/Toplevel_comments/class-type-ct/index.html deleted file mode 100644 index 02cc3df7fe..0000000000 --- a/test/html/expect/test_package+re/Toplevel_comments/class-type-ct/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - ct (test_package+re.Toplevel_comments.ct) - - - - - - - - - - -
        -

        - Class type Toplevel_comments.ct -

        -

        - Doc of ct, part 1. -

        -

        - Doc of ct, part 2. -

        -
        -
        - - diff --git a/test/html/expect/test_package+re/Toplevel_comments/index.html b/test/html/expect/test_package+re/Toplevel_comments/index.html deleted file mode 100644 index e18e2e6639..0000000000 --- a/test/html/expect/test_package+re/Toplevel_comments/index.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - Toplevel_comments (test_package+re.Toplevel_comments) - - - - - - - - - - -
        -

        - Module Toplevel_comments -

        -

        - A doc comment at the beginning of a module is considered to be that module's doc. -

        -
        -
        -
        -
        - module type T = { ... }; -
        -
        -

        - Doc of T, part 1. -

        -
        -
        -
        -
        - module Include_inline: { ... }; -
        -
        -

        - Doc of T, part 2. -

        -
        -
        -
        -
        - module Include_inline': { ... }; -
        -
        -

        - Doc of Include_inline, part 1. -

        -
        -
        -
        -
        - module type Include_inline_T = { ... }; -
        -
        -

        - Doc of T, part 2. -

        -
        -
        -
        -
        - module type Include_inline_T' = { ... }; -
        -
        -

        - Doc of Include_inline_T', part 1. -

        -
        -
        -
        -
        - module M: { ... }; -
        -
        -

        - Doc of M -

        -
        -
        -
        -
        - module M': { ... }; -
        -
        -

        - Doc of M' from outside -

        -
        -
        -
        -
        - module M'': { ... }; -
        -
        -

        - Doc of M'', part 1. -

        -
        -
        -
        -
        - module Alias: T; -
        -
        -

        - Doc of Alias. -

        -
        -
        -
        -
        - class c1: int => { ... } -
        -
        -

        - Doc of c1, part 1. -

        -
        -
        -
        -
        - class type ct = { ... } -
        -
        -

        - Doc of ct, part 1. -

        -
        -
        -
        -
        - class c2: ct -
        -
        -

        - Doc of c2. -

        -
        -
        -
        -
        - module Ref_in_synopsis: { ... }; -
        -
        -

        - t. -

        -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Toplevel_comments/module-type-Include_inline_T'/index.html b/test/html/expect/test_package+re/Toplevel_comments/module-type-Include_inline_T'/index.html deleted file mode 100644 index f13d1700df..0000000000 --- a/test/html/expect/test_package+re/Toplevel_comments/module-type-Include_inline_T'/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - Include_inline_T' (test_package+re.Toplevel_comments.Include_inline_T') - - - - - - - - - - -
        -

        - Module type Toplevel_comments.Include_inline_T' -

        -

        - Doc of Include_inline_T', part 1. -

        -

        - Doc of Include_inline_T', part 2. -

        -
        -
        -
        -
        -

        - part 3 -

        -
        -
        -
        - type t; -
        -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Toplevel_comments/module-type-Include_inline_T/index.html b/test/html/expect/test_package+re/Toplevel_comments/module-type-Include_inline_T/index.html deleted file mode 100644 index d5f6651bc8..0000000000 --- a/test/html/expect/test_package+re/Toplevel_comments/module-type-Include_inline_T/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Include_inline_T (test_package+re.Toplevel_comments.Include_inline_T) - - - - - - - - - - -
        -

        - Module type Toplevel_comments.Include_inline_T -

        -

        - Doc of T, part 2. -

        -
        -
        -
        -
        -
        - type t; -
        -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Toplevel_comments/module-type-T/index.html b/test/html/expect/test_package+re/Toplevel_comments/module-type-T/index.html deleted file mode 100644 index b008e3d1cb..0000000000 --- a/test/html/expect/test_package+re/Toplevel_comments/module-type-T/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - T (test_package+re.Toplevel_comments.T) - - - - - - - - - - -
        -

        - Module type Toplevel_comments.T -

        -

        - Doc of T, part 1. -

        -

        - Doc of T, part 2. -

        -
        -
        -
        -
        - type t; -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Type/index.html b/test/html/expect/test_package+re/Type/index.html deleted file mode 100644 index 4d67c3bd3c..0000000000 --- a/test/html/expect/test_package+re/Type/index.html +++ /dev/null @@ -1,555 +0,0 @@ - - - - - Type (test_package+re.Type) - - - - - - - - - - -
        -

        - Module Type -

        -
        -
        -
        -
        - type abstract; -
        -
        -

        - Some documentation. -

        -
        -
        -
        -
        - type alias = int; -
        -
        -
        -
        - type private_ = pri int; -
        -
        -
        -
        - type constructor('a) = 'a; -
        -
        -
        -
        - type arrow = int => int; -
        -
        -
        -
        - type higher_order = (int => int) => int; -
        -
        -
        -
        - type labeled = l:int => int; -
        -
        -
        -
        - type optional = ?l:int => int; -
        -
        -
        -
        - type labeled_higher_order = (l:int => int) => (?l:int => int) => int; -
        -
        -
        -
        - type pair = (int, int); -
        -
        -
        -
        - type parens_dropped = (int, int); -
        -
        -
        -
        - type triple = (int, int, int); -
        -
        -
        -
        - type nested_pair = ((int, int), int); -
        -
        -
        -
        - type instance = constructor(int); -
        -
        -
        -
        - type long = labeled_higher_order => [ `Bar | `Baz(triple) ] => pair => labeled => higher_order => (string => int) => CamlinternalFormatBasics.fmtty(int, float, char, string, char, unit) => nested_pair => arrow => string => array(nested_pair); -
        -
        -
        -
        - type variant_e = { - - - - - - -
        - a: int, -
        - }; -
        -
        -
        -
        - type variant = - - - - - - - - - - - - - - - - - - - - -
        - | A -
        - | B(int) -
        - | C - - /* -

        - foo -

        - */ -
        - | D - - /* -

        - bar -

        - */ -
        - | E(variant_e) -
        - ; -
        -
        -
        -
        - type variant_c = { - - - - - - -
        - a: int, -
        - }; -
        -
        -
        -
        - type gadt(_) = - - - - - - - - - - - - -
        - | A : gadt(int) -
        - | B(int) : gadt(string) -
        - | C(variant_c) : gadt(unit) -
        - ; -
        -
        -
        -
        - type degenerate_gadt = - - - - - - -
        - | A : degenerate_gadt -
        - ; -
        -
        -
        -
        - type private_variant = pri - - - - - - -
        - | A -
        - ; -
        -
        -
        -
        - type record = { - - - - - - - - - - - - - - - - - - - - -
        - a: int, -
        - mutable b: int, -
        - c: int, - - /* -

        - foo -

        - */ -
        - d: int, - - /* -

        - bar -

        - */ -
        - e: a. 'a, -
        - }; -
        -
        -
        -
        - type polymorphic_variant = [ - - - - - - - - - - - - - - - -
        - | `A -
        - | `B(int) -
        - | `C((int, unit)) -
        - | `D -
        - ]; -
        -
        -
        -
        - type polymorphic_variant_extension = [ - - - - - - - - - -
        - | polymorphic_variant -
        - | `E -
        - ]; -
        -
        -
        -
        - type nested_polymorphic_variant = [ - - - - - - -
        - | `A([ `B | `C ]) -
        - ]; -
        -
        -
        -
        - type private_extenion#row; -
        -
        -
        -
        - and private_extenion = pri [> - - - - - - -
        - | polymorphic_variant -
        - ]; -
        -
        -
        -
        - type object_ = {. a: int, b: int, c: int, }; -
        -
        -
        -
        - module type X = { ... }; -
        -
        -
        -
        - type module_ = (module X); -
        -
        -
        -
        - type module_substitution = (module X with type t = int and type u = unit); -
        -
        -
        -
        - type covariant(+'a); -
        -
        -
        -
        - type contravariant(-'a); -
        -
        -
        -
        - type bivariant(_) = int; -
        -
        -
        -
        - type binary('a, 'b); -
        -
        -
        -
        - type using_binary = binary(int, int); -
        -
        -
        -
        - type name('custom); -
        -
        -
        -
        - type constrained('a) = 'a constraint 'a = int; -
        -
        -
        -
        - type exact_variant('a) = 'a constraint 'a = [ `A | `B(int) ]; -
        -
        -
        -
        - type lower_variant('a) = 'a constraint 'a = [> `A | `B(int) ]; -
        -
        -
        -
        - type any_variant('a) = 'a constraint 'a = [> ]; -
        -
        -
        -
        - type upper_variant('a) = 'a constraint 'a = [< `A | `B(int) ]; -
        -
        -
        -
        - type named_variant('a) = 'a constraint 'a = [< polymorphic_variant ]; -
        -
        -
        -
        - type exact_object('a) = 'a constraint 'a = {. a: int, b: int, }; -
        -
        -
        -
        - type lower_object('a) = 'a constraint 'a = {.. a: int, b: int, }; -
        -
        -
        -
        - type poly_object('a) = 'a constraint 'a = {. a: a. 'a, }; -
        -
        -
        -
        - type double_constrained('a, 'b) = ('a, 'b) constraint 'a = int constraint 'b = unit; -
        -
        -
        -
        - type as_ = (int as 'a, 'a); -
        -
        -
        -
        - type extensible = ..; -
        -
        -
        -
        - type extensible += - - - - - - - - - - - -
        - | Extension - - /* -

        - Documentation for Extension. -

        - */ -
        - | Another_extension - - /* -

        - Documentation for Another_extension. -

        - */ -
        - ; -
        -
        -
        -
        - type mutually = - - - - - - -
        - | A(recursive) -
        - ; -
        -
        -
        -
        - and recursive = - - - - - - -
        - | B(mutually) -
        - ; -
        -
        -
        -
        - exception Foo(int, int); -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/Val/index.html b/test/html/expect/test_package+re/Val/index.html deleted file mode 100644 index e38127e88c..0000000000 --- a/test/html/expect/test_package+re/Val/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - Val (test_package+re.Val) - - - - - - - - - - -
        -

        - Module Val -

        -
        -
        -
        -
        - let documented: unit; -
        -
        -

        - Foo. -

        -
        -
        -
        -
        - let undocumented: unit; -
        -
        -
        -
        - let documented_above: unit; -
        -
        -

        - Bar. -

        -
        -
        -
        - - diff --git a/test/html/expect/test_package+re/mld.html b/test/html/expect/test_package+re/mld.html deleted file mode 100644 index 04af7d66cc..0000000000 --- a/test/html/expect/test_package+re/mld.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - mld (test_package+re.mld) - - - - - - - - - - -
        -

        - Mld Page -

        -

        - This is an .mld file. It doesn't have an auto-generated title, like modules and other pages generated fully by odoc do. -

        -

        - It will have a TOC generated from section headings. -

        -
        - -
        -

        - Section -

        -

        - This is a section. -

        -

        - Another paragraph in section. -

        -

        - Another section -

        -

        - This is another section. -

        -

        - Another paragraph in section 2. -

        -

        - Subsection -

        -

        - This is a subsection. -

        -

        - Another paragraph in subsection. -

        -

        - Yet another paragraph in subsection. -

        -

        - Another Subsection -

        -

        - This is another subsection. -

        -

        - Another paragraph in subsection 2. -

        -

        - Yet another paragraph in subsection 2. -

        -
        - - diff --git a/test/html/flat.t/run.t b/test/html/flat.t/run.t deleted file mode 100644 index 685562db29..0000000000 --- a/test/html/flat.t/run.t +++ /dev/null @@ -1,55 +0,0 @@ -Normally when outputting HTML, the resulting files are organised into a -directory tree based on the modules, module types, classes and class types, -with each filename being 'index.html'. These are organised such that they -are placed underneath the hierarchy of pages and parent pages that the -modules have been 'odoc compiled' with. - -In flat mode, we still use the pages to organise the output, but within that -page directory, there are no further directories, and the output is simply -files named similarly to how the directory structure would have been. So -for example, where we normally have - -foo/Test/index.html - -we would now have - -foo/Test.html - - $ ocamlc -c -bin-annot test.mli - $ odoc compile --package foo test.cmti - $ odoc link test.odoc - $ odoc html-generate test.odocl -o html - $ find html -name "*" | sort - html - html/foo - html/foo/Test - html/foo/Test/M - html/foo/Test/M/index.html - html/foo/Test/M/module-type-N - html/foo/Test/M/module-type-N/index.html - html/foo/Test/class-foo - html/foo/Test/class-foo/index.html - html/foo/Test/class-type-t - html/foo/Test/class-type-t/index.html - html/foo/Test/index.html - - $ odoc html-generate test.odocl -o html_flat --flat - $ find html_flat -name "*" | sort - html_flat - html_flat/foo - html_flat/foo/Test-M-module-type-N.html - html_flat/foo/Test-M.html - html_flat/foo/Test-class-foo.html - html_flat/foo/Test-class-type-t.html - html_flat/foo/Test.html - - $ odoc html-generate test.odocl -o html_suffix --flat --extra-suffix gen - $ find html_suffix -name "*" | sort - html_suffix - html_suffix/foo - html_suffix/foo/Test-M-module-type-N.html.gen - html_suffix/foo/Test-M.html.gen - html_suffix/foo/Test-class-foo.html.gen - html_suffix/foo/Test-class-type-t.html.gen - html_suffix/foo/Test.html.gen - diff --git a/test/html/flat.t/test.mli b/test/html/flat.t/test.mli deleted file mode 100644 index 08ab98d736..0000000000 --- a/test/html/flat.t/test.mli +++ /dev/null @@ -1,10 +0,0 @@ -module M : sig - module type N = sig - type t - end -end - -class type t = object val v : int end - -class foo : object val v : int end - diff --git a/test/html/test.ml b/test/html/test.ml deleted file mode 100644 index 46556b6c1d..0000000000 --- a/test/html/test.ml +++ /dev/null @@ -1,400 +0,0 @@ -open Printf - -(* Utils *) - -let ( // ) = Filename.concat - -let command label = - Printf.ksprintf (fun s -> - let exit_code = Sys.command s in - if exit_code <> 0 then - Alcotest.failf "'%s' exited with %i" label exit_code) - -(* Filename.extension is only available on 4.04. *) -module Filename = struct - include Filename - - let extension filename = - let dot_index = String.rindex filename '.' in - String.sub filename dot_index (String.length filename - dot_index) -end - -(* Testing environment *) - -module Env = struct - let package = "test_package" - - let odoc = "../../src/odoc/bin/main.exe" - - let path ?(from_root = false) = function - | `scratch when from_root -> "_build/default/test/html/_scratch" - | `scratch -> "_scratch" - | `expect when from_root -> "test/html/expect" - | `expect -> "expect" - | `cases when from_root -> "test/cases" - | `cases -> "../cases" - - let running_in_travis_tidy_row = - match (Sys.getenv "TRAVIS", Sys.getenv "TIDY") with - | "true", "YES" -> true - | _ -> false - | exception Not_found -> false - - let init () = - if running_in_travis_tidy_row && not Tidy.is_present_in_path then - Alcotest.failf "Could not find `tidy` in $PATH in a CI environment"; - - Unix.mkdir (path `scratch) 0o755 -end - -(* Test case type and helpers *) - -(* A test case is a description of an input source file with a specific set of - options to be tested. Each test case results in a unique generated output to - be compared with an actually produced one. - - All paths defined in this module are relative to the build directory. *) -module Case = struct - type t = { - name : string; - kind : [ `mli | `mld | `ml ]; - theme_uri : string option; - syntax : [ `ml | `re ]; - outputs : string list; - } - - let make ?theme_uri ?(syntax = `ml) (input, outputs) = - let name = Filename.chop_extension input in - let kind = - match Filename.extension input with - | ".mli" -> `mli - | ".mld" -> `mld - | ".ml" -> `ml - | _ -> - invalid_arg (sprintf "Expected mli, mld, or ml files, got %s" input) - in - { name; kind; theme_uri; syntax; outputs } - - let name case = case.name - - let kind case = case.kind - - let theme_uri case = case.theme_uri - - let string_of_syntax = function `re -> "re" | `ml -> "ml" - - (* The package name is enriched with test case options. *) - let package case = - let opts = [ string_of_syntax case.syntax ] in - let opts = - match case.theme_uri with - | Some _ -> "custom_theme" :: opts - | None -> opts - in - let opts = String.concat "," (List.sort compare opts) in - Env.package ^ "+" ^ opts - - let cmi_file case = Env.path `scratch // (case.name ^ ".cmi") - - let cmti_file case = Env.path `scratch // (case.name ^ ".cmti") - - let cmo_file case = Env.path `scratch // (case.name ^ ".cmo") - - let cmt_file case = Env.path `scratch // (case.name ^ ".cmt") - - let odoc_file case = - match case.kind with - | `mli | `ml -> Env.path `scratch // (case.name ^ ".odoc") - | `mld -> Env.path `scratch // ("page-" ^ case.name ^ ".odoc") - - let source_file case = - match case.kind with - | `mli -> (Env.path `cases // case.name) ^ ".mli" - | `mld -> (Env.path `cases // case.name) ^ ".mld" - | `ml -> (Env.path `cases // case.name) ^ ".ml" - - let outputs case = List.map (fun o -> package case // o) case.outputs -end - -let pretty_print_html_in_place html_file = - let temporary_pretty_printed_file = html_file ^ ".pretty" in - let html_stream, close_html_file = Markup.file html_file in - - html_stream |> Markup.parse_html |> Markup.signals |> Markup.pretty_print - |> Markup.write_html - |> Markup.to_file temporary_pretty_printed_file; - - close_html_file (); - - Sys.rename temporary_pretty_printed_file html_file - -let generate_html case = - let theme_uri_option = - match Case.theme_uri case with - | Some theme_uri -> "--theme-uri=" ^ theme_uri - | None -> "" - in - match Case.kind case with - | `mli -> - command "ocamlfind c" "ocamlfind c -bin-annot -o %s -c %s" - (Case.cmi_file case) (Case.source_file case); - - command "odoc compile" "%s compile --package=%s %s" Env.odoc - (Case.package case) (Case.cmti_file case); - - command "odoc html" "%s html %s --syntax=%s --output-dir=%s %s" Env.odoc - theme_uri_option - (Case.string_of_syntax case.syntax) - (Env.path `scratch) - (Case.odoc_file case) - | `mld -> - command "odoc compile" "%s compile --package=%s -o %s %s" Env.odoc - (Case.package case) (Case.odoc_file case) (Case.source_file case); - - command "odoc html" "%s html %s --output-dir=%s %s" Env.odoc - theme_uri_option - (Env.path `scratch) - (Case.odoc_file case) - | `ml -> - command "ocamlfind c" "ocamlfind c -bin-annot -o %s -c %s" - (Case.cmo_file case) (Case.source_file case); - - command "odoc compile" "%s compile --package=%s %s" Env.odoc - (Case.package case) (Case.cmt_file case); - - command "odoc html" "%s html %s --syntax=%s --output-dir=%s %s" Env.odoc - theme_uri_option - (Case.string_of_syntax case.syntax) - (Env.path `scratch) - (Case.odoc_file case) - -let diff = - (* Alcotest will run all tests. We need to know when something fails for the - first time to stop diffing and generating promotion files. *) - let already_failed = ref false in - fun output -> - let actual_file = Env.path `scratch // output in - let expected_file = Env.path `expect // output in - let cmd = sprintf "diff -N -u -b %S %S" expected_file actual_file in - match Sys.command cmd with - | 0 -> () - | 1 when !already_failed -> - (* Don't run diff for other failing tests as only one at time is shown. *) - Alcotest.fail "generated HTML should match expected" - | 1 -> - (* If the diff command exits with 1, the two HTML files are different. - diff has already written its output to STDOUT. - - Also provide the command for overwriting the expected output with the - actual output, in case it is the actual output that is correct. - The paths are defined relative to the project's root. *) - let root_actual_file = Env.path `scratch ~from_root:true // output in - let root_expected_file = Env.path `expect ~from_root:true // output in - let write_file filename data = - Markup.string data |> Markup.to_file filename - in - write_file Env.(path `scratch // "actual") root_actual_file; - write_file Env.(path `scratch // "expected") root_expected_file; - - prerr_endline "\nTo promote the actual output to expected, run:"; - prerr_endline "make promote-html && make test\n"; - - already_failed := true; - Alcotest.fail "generated HTML should match expected" - | exit_code -> Alcotest.failf "'diff' exited with %i" exit_code - -(* Actual Tests *) - -let output_support_files = - let run () = - command "odoc support-files" "%s support-files --output-dir %s" Env.odoc - (Env.path `scratch) - in - ("support-files", `Slow, run) - -let make_test_case ?theme_uri ?syntax case = - let case = Case.make ?theme_uri ?syntax case in - let run () = - (* Compile the source file and generate HTML. *) - generate_html case; - - List.iter - (fun output -> - let actual_file = Env.path `scratch // output in - - if Sys.file_exists actual_file then ( - (* Pretty-print output HTML for better diffing. *) - pretty_print_html_in_place actual_file; - - (* Run HTML validation on output files. *) - if Tidy.is_present_in_path then - let issues = Tidy.validate actual_file in - if issues <> [] then ( - List.iter prerr_endline issues; - Alcotest.fail "Tidy validation error")); - - (* Diff the actual outputs with the expected outputs. *) - diff output) - (Case.outputs case) - in - (Case.name case, `Slow, run) - -let make_input file sub_modules = - let base = Astring.String.Ascii.capitalize (Filename.chop_extension file) in - let index p = String.concat Filename.dir_sep (p @ [ "index.html" ]) in - (file, index [ base ] :: List.map (fun m -> index [ base; m ]) sub_modules) - -let source_files_all = - [ - ("val.mli", [ "Val/index.html" ]); - ("markup.mli", [ "Markup/index.html" ]); - ("section.mli", [ "Section/index.html" ]); - ("module.mli", [ "Module/index.html" ]); - ("interlude.mli", [ "Interlude/index.html" ]); - ("include.mli", [ "Include/index.html" ]); - make_input "include2.ml" [ "Y_include_synopsis"; "Y_include_doc" ]; - ( "include_sections.mli", - [ - "Include_sections/index.html"; - "Include_sections/module-type-Something/index.html"; - ] ); - ("mld.mld", [ "mld.html" ]); - ( "nested.mli", - [ - "Nested/index.html"; - "Nested/F/index.html"; - "Nested/F/argument-1-Arg1/index.html"; - "Nested/F/argument-2-Arg2/index.html"; - "Nested/X/index.html"; - "Nested/class-z/index.html"; - "Nested/class-inherits/index.html"; - "Nested/module-type-Y/index.html"; - ] ); - ("ocamlary.mli", [ "Ocamlary/index.html" ]); - ("type.mli", [ "Type/index.html" ]); - ("external.mli", [ "External/index.html" ]); - ("functor.mli", [ "Functor/index.html" ]); - ("class.mli", [ "Class/index.html" ]); - ("stop.mli", [ "Stop/index.html" ]); - ("bugs.ml", [ "Bugs/index.html" ]); - ("alias.ml", [ "Alias/index.html"; "Alias/X/index.html" ]); - make_input "toplevel_comments.mli" - [ - "module-type-T"; - "Include_inline"; - "Include_inline'"; - "module-type-Include_inline_T"; - "module-type-Include_inline_T'"; - "M"; - "M'"; - "M''"; - "Alias"; - "class-c1"; - "class-type-ct"; - "class-c2"; - "Ref_in_synopsis"; - ]; - ] - -let source_files_post406 = - [ ("bugs_post_406.mli", [ "Bugs_post_406/index.html" ]) ] - -let source_files_post408 = - [ - ("recent.mli", [ "Recent/index.html"; "Recent/X/index.html" ]); - ("recent_impl.ml", [ "Recent_impl/index.html" ]); - ("labels.mli", [ "Labels/index.html" ]); - ] - -let source_files_pre410 = [ ("bugs_pre_410.ml", [ "Bugs_pre_410/index.html" ]) ] - -let source_files_post404 = - [ ("stop_dead_link_doc.mli", [ "Stop_dead_link_doc/index.html" ]) ] - -let source_files_post413 = - [ - ( "module_type_subst.mli", - [ - "Module_type_subst/index.html"; - "Module_type_subst/Basic/index.html"; - "Module_type_subst/Basic/module-type-a/index.html"; - "Module_type_subst/Basic/module-type-a/M/index.html"; - "Module_type_subst/Basic/module-type-a/module-type-b/index.html"; - "Module_type_subst/Basic/module-type-c/index.html"; - "Module_type_subst/Basic/module-type-c/M/index.html"; - "Module_type_subst/Basic/module-type-u/index.html"; - "Module_type_subst/Basic/module-type-u/module-type-T/index.html"; - "Module_type_subst/Basic/module-type-u2/index.html"; - "Module_type_subst/Basic/module-type-u2/module-type-T/index.html"; - "Module_type_subst/Basic/module-type-u2/M/index.html"; - "Module_type_subst/Basic/module-type-with_/index.html"; - "Module_type_subst/Basic/module-type-with_/module-type-T/index.html"; - "Module_type_subst/Basic/module-type-with_2/index.html"; - "Module_type_subst/Basic/module-type-with_2/module-type-T/index.html"; - "Module_type_subst/Basic/module-type-with_2/M/index.html"; - "Module_type_subst/Local/index.html"; - "Module_type_subst/Local/module-type-s/index.html"; - "Module_type_subst/Local/module-type-local/index.html"; - "Module_type_subst/Local/module-type-w/index.html"; - "Module_type_subst/Nested/index.html"; - "Module_type_subst/Nested/module-type-nested/index.html"; - "Module_type_subst/Nested/module-type-nested/N/index.html"; - "Module_type_subst/Nested/module-type-nested/N/module-type-t/index.html"; - "Module_type_subst/Nested//module-type-with_/index.html"; - "Module_type_subst/Nested/module-type-with_/N/index.html"; - "Module_type_subst/Nested/module-type-with_/N/module-type-t/index.html"; - "Module_type_subst/Nested//module-type-with_subst/index.html"; - "Module_type_subst/Nested/module-type-with_subst/N/index.html"; - "Module_type_subst/Structural/index.html"; - "Module_type_subst/Structural/module-type-u/index.html"; - "Module_type_subst/Structural/module-type-u/module-type-a/index.html"; - "Module_type_subst/Structural/module-type-u/module-type-a/module-type-b/index.html"; - "Module_type_subst/Structural/module-type-u/module-type-a/module-type-b/module-type-c/index.html"; - "Module_type_subst/Structural/module-type-w/index.html"; - "Module_type_subst/Structural/module-type-w/module-type-a/index.html"; - "Module_type_subst/Structural/module-type-w/module-type-a/module-type-b/index.html"; - "Module_type_subst/Structural/module-type-w/module-type-a/module-type-b/module-type-c/index.html"; - ] ); - ] - -let source_files ~syntax = - let cur = - Astring.String.cuts ~sep:"." Sys.ocaml_version - |> List.map (fun i -> try Some (int_of_string i) with _ -> None) - in - match cur with - | Some major :: Some minor :: _ -> - List.concat - [ - (if major = 4 && minor >= 13 && syntax = `ml then source_files_post413 - else []); - (if major = 4 && minor < 10 then source_files_pre410 else []); - (if major = 4 && minor > 8 then source_files_post408 else []); - (if major = 4 && minor >= 6 then source_files_post406 else []); - (if major = 4 && minor >= 4 then source_files_post404 else []); - source_files_all; - ] - | _ -> source_files_all - -let () = - Env.init (); - - Alcotest.run "html" - [ - ("support_files", [ output_support_files ]); - ( "html_ml", - List.map (make_test_case ~syntax:`ml) (source_files ~syntax:`ml) ); - ( "html_re", - List.map (make_test_case ~syntax:`re) (source_files ~syntax:`re) ); - ( "custom_theme", - [ - make_test_case ~theme_uri:"/a/b/c" - ("module.mli", [ "Module/index.html" ]); - make_test_case ~theme_uri:"https://foo.com/a/b/c/" - ("val.mli", [ "Val/index.html" ]); - make_test_case ~theme_uri:"../b/c" - ("include.mli", [ "Include/index.html" ]); - make_test_case ~theme_uri:"b/c" - ("section.mli", [ "Section/index.html" ]); - ] ); - ] diff --git a/test/html/tidy.ml b/test/html/tidy.ml deleted file mode 100644 index 875d9b5e97..0000000000 --- a/test/html/tidy.ml +++ /dev/null @@ -1,55 +0,0 @@ -let muted_warnings = - [ - (* NOTE: see https://github.com/ocaml/odoc/issues/188 *) - "NESTED_EMPHASIS"; - (* NOTE: see https://github.com/ocaml/odoc/pull/185#discussion_r217906131 *) - "MISSING_STARTTAG"; - "DISCARDING_UNEXPECTED"; - (* NOTE: see https://github.com/ocaml/odoc/issues/186 *) - "ANCHOR_NOT_UNIQUE"; - "TRIM_EMPTY_ELEMENT"; - ] - -let is_present_in_path = - Sys.command "which tidy > /dev/null" = 0 - && Sys.command "tidy -show-config < /dev/null | grep '^mute' > /dev/null" = 0 - -(* Returns a list of errors and warnings. *) -let validate file = - if not (Sys.file_exists file) then - invalid_arg ("tidy: file `" ^ file ^ "` does not exist"); - let muted_warnings = String.concat "," muted_warnings in - let options = - String.concat " " - [ - "-quiet"; - "--mute " ^ muted_warnings; - "--mute-id yes"; - "--show-errors 200"; - "-errors"; - "-ashtml"; - ] - in - let cmd = Printf.sprintf "tidy %s %S" options file in - let ((_, _, stderr) as proc) = Unix.open_process_full cmd [||] in - - let errors_and_warnings = - let rec loop acc = - match input_line stderr with - | message -> loop (message :: acc) - | exception End_of_file -> List.rev acc - in - loop [] - in - - match Unix.close_process_full proc with - (* All input files were processed successfully. *) - | WEXITED 0 -> [] - (* There were warnings. *) - | WEXITED 1 - (* There were errors. *) - | WEXITED 2 -> - errors_and_warnings - | _ -> - let msg = "Unexpected process termination while running: " ^ cmd in - raise (Failure msg) diff --git a/test/latex/dune b/test/latex/dune deleted file mode 100644 index 0ddf0a06f1..0000000000 --- a/test/latex/dune +++ /dev/null @@ -1,13 +0,0 @@ -(executable - (name test) - (libraries alcotest)) - -(rule - (alias runtest) - (action - (run %{exe:test.exe})) - (deps - test.exe - %{workspace_root}/src/odoc/bin/main.exe - (source_tree ../cases) - (source_tree expect))) diff --git a/test/latex/expect/test_package+ml/Alias.X.tex b/test/latex/expect/test_package+ml/Alias.X.tex deleted file mode 100644 index 4d000a5cdc..0000000000 --- a/test/latex/expect/test_package+ml/Alias.X.tex +++ /dev/null @@ -1,5 +0,0 @@ -\section{Module \ocamlinlinecode{Alias.\allowbreak{}X}}\label{page-test+u+package+++ml-module-Alias-module-X}% -\label{page-test+u+package+++ml-module-Alias-module-X-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int}\begin{ocamlindent}Module Foo\_\_X documentation. This should appear in the documentation for the alias to this module 'X'\end{ocamlindent}% -\medbreak - - diff --git a/test/latex/expect/test_package+ml/Alias.tex b/test/latex/expect/test_package+ml/Alias.tex deleted file mode 100644 index 3e8bc9fee0..0000000000 --- a/test/latex/expect/test_package+ml/Alias.tex +++ /dev/null @@ -1,8 +0,0 @@ -\section{Module \ocamlinlinecode{Alias}}\label{page-test+u+package+++ml-module-Alias}% -\label{page-test+u+package+++ml-module-Alias-module-Foo+u++u+X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Alias-module-Foo+u++u+X]{\ocamlinlinecode{Foo\_\allowbreak{}\_\allowbreak{}X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Alias-module-Foo+u++u+X-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[xref-unresolved]{\ocamlinlinecode{int}}}\begin{ocamlindent}Module Foo\_\_X documentation. This should appear in the documentation for the alias to this module 'X'\end{ocamlindent}% -\medbreak -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Alias-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Alias-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ - -\input{test_package+ml/Alias.X.tex} diff --git a/test/latex/expect/test_package+ml/Bugs.tex b/test/latex/expect/test_package+ml/Bugs.tex deleted file mode 100644 index 5aaef6e385..0000000000 --- a/test/latex/expect/test_package+ml/Bugs.tex +++ /dev/null @@ -1,6 +0,0 @@ -\section{Module \ocamlinlinecode{Bugs}}\label{page-test+u+package+++ml-module-Bugs}% -\label{page-test+u+package+++ml-module-Bugs-type-opt}\ocamlcodefragment{\ocamltag{keyword}{type} 'a opt = \ocamltag{type-var}{'a} option}\\ -\label{page-test+u+package+++ml-module-Bugs-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : ?bar:\ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} unit \ocamltag{arrow}{$\rightarrow$} unit}\begin{ocamlindent}Triggers an assertion failure when \href{https://github.com/ocaml/odoc/issues/101}{https://github.com/ocaml/odoc/issues/101}\footnote{\url{https://github.com/ocaml/odoc/issues/101}} is not fixed.\end{ocamlindent}% -\medbreak - - diff --git a/test/latex/expect/test_package+ml/Bugs_pre_410.tex b/test/latex/expect/test_package+ml/Bugs_pre_410.tex deleted file mode 100644 index 98f7d6cb41..0000000000 --- a/test/latex/expect/test_package+ml/Bugs_pre_410.tex +++ /dev/null @@ -1,6 +0,0 @@ -\section{Module \ocamlinlinecode{Bugs\_\allowbreak{}pre\_\allowbreak{}410}}\label{page-test+u+package+++ml-module-Bugs+u+pre+u+410}% -\label{page-test+u+package+++ml-module-Bugs+u+pre+u+410-type-opt'}\ocamlcodefragment{\ocamltag{keyword}{type} 'a opt' = int option}\\ -\label{page-test+u+package+++ml-module-Bugs+u+pre+u+410-val-foo'}\ocamlcodefragment{\ocamltag{keyword}{val} foo' : ?bar:\ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} unit \ocamltag{arrow}{$\rightarrow$} unit}\begin{ocamlindent}Similar to \ocamlinlinecode{Bugs}, but the printed type of \ocamlinlinecode{\textasciitilde{}bar} should be \ocamlinlinecode{int}, not \ocamlinlinecode{'a}. This probably requires fixing in the compiler. See \href{https://github.com/ocaml/odoc/pull/230\#issuecomment-433226807}{https://github.com/ocaml/odoc/pull/230\#issuecomment-433226807}\footnote{\url{https://github.com/ocaml/odoc/pull/230\#issuecomment-433226807}}.\end{ocamlindent}% -\medbreak - - diff --git a/test/latex/expect/test_package+ml/Class.empty_virtual'.tex b/test/latex/expect/test_package+ml/Class.empty_virtual'.tex deleted file mode 100644 index c4b6dcf937..0000000000 --- a/test/latex/expect/test_package+ml/Class.empty_virtual'.tex +++ /dev/null @@ -1,3 +0,0 @@ -\section{Class \ocamlinlinecode{Class.\allowbreak{}empty\_\allowbreak{}virtual'}}\label{package-test+u+package+++ml-module-Class-class-empty+u+virtual'}% - - diff --git a/test/latex/expect/test_package+ml/Class.mutually'.tex b/test/latex/expect/test_package+ml/Class.mutually'.tex deleted file mode 100644 index 82792c2704..0000000000 --- a/test/latex/expect/test_package+ml/Class.mutually'.tex +++ /dev/null @@ -1,3 +0,0 @@ -\section{Class \ocamlinlinecode{Class.\allowbreak{}mutually'}}\label{package-test+u+package+++ml-module-Class-class-mutually'}% - - diff --git a/test/latex/expect/test_package+ml/Class.polymorphic'.tex b/test/latex/expect/test_package+ml/Class.polymorphic'.tex deleted file mode 100644 index a470185953..0000000000 --- a/test/latex/expect/test_package+ml/Class.polymorphic'.tex +++ /dev/null @@ -1,3 +0,0 @@ -\section{Class \ocamlinlinecode{Class.\allowbreak{}polymorphic'}}\label{package-test+u+package+++ml-module-Class-class-polymorphic'}% - - diff --git a/test/latex/expect/test_package+ml/Class.recursive'.tex b/test/latex/expect/test_package+ml/Class.recursive'.tex deleted file mode 100644 index 395e5f9388..0000000000 --- a/test/latex/expect/test_package+ml/Class.recursive'.tex +++ /dev/null @@ -1,3 +0,0 @@ -\section{Class \ocamlinlinecode{Class.\allowbreak{}recursive'}}\label{package-test+u+package+++ml-module-Class-class-recursive'}% - - diff --git a/test/latex/expect/test_package+ml/Class.tex b/test/latex/expect/test_package+ml/Class.tex deleted file mode 100644 index aeec77081d..0000000000 --- a/test/latex/expect/test_package+ml/Class.tex +++ /dev/null @@ -1,20 +0,0 @@ -\section{Module \ocamlinlinecode{Class}}\label{page-test+u+package+++ml-module-Class}% -\label{page-test+u+package+++ml-module-Class-class-type-empty}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Class-class-type-empty]{\ocamlinlinecode{empty}}}\ocamlcodefragment{ = \ocamltag{keyword}{object}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Class-class-type-mutually}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Class-class-type-mutually]{\ocamlinlinecode{mutually}}}\ocamlcodefragment{ = \ocamltag{keyword}{object}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Class-class-type-recursive}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Class-class-type-recursive]{\ocamlinlinecode{recursive}}}\ocamlcodefragment{ = \ocamltag{keyword}{object}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Class-class-mutually'}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[page-test+u+package+++ml-module-Class-class-mutually']{\ocamlinlinecode{mutually'}}}\ocamlcodefragment{ : \hyperref[page-test+u+package+++ml-module-Class-class-type-mutually]{\ocamlinlinecode{mutually}}}\\ -\label{page-test+u+package+++ml-module-Class-class-recursive'}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[page-test+u+package+++ml-module-Class-class-recursive']{\ocamlinlinecode{recursive'}}}\ocamlcodefragment{ : \hyperref[page-test+u+package+++ml-module-Class-class-type-recursive]{\ocamlinlinecode{recursive}}}\\ -\label{page-test+u+package+++ml-module-Class-class-type-empty+u+virtual}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{type} \ocamltag{keyword}{virtual} \hyperref[page-test+u+package+++ml-module-Class-class-type-empty+u+virtual]{\ocamlinlinecode{empty\_\allowbreak{}virtual}}}\ocamlcodefragment{ = \ocamltag{keyword}{object}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Class-class-empty+u+virtual'}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{virtual} \hyperref[page-test+u+package+++ml-module-Class-class-empty+u+virtual']{\ocamlinlinecode{empty\_\allowbreak{}virtual'}}}\ocamlcodefragment{ : \hyperref[page-test+u+package+++ml-module-Class-class-type-empty]{\ocamlinlinecode{empty}}}\\ -\label{page-test+u+package+++ml-module-Class-class-type-polymorphic}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{type} 'a \hyperref[page-test+u+package+++ml-module-Class-class-type-polymorphic]{\ocamlinlinecode{polymorphic}}}\ocamlcodefragment{ = \ocamltag{keyword}{object}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Class-class-polymorphic'}\ocamlcodefragment{\ocamltag{keyword}{class} 'a \hyperref[page-test+u+package+++ml-module-Class-class-polymorphic']{\ocamlinlinecode{polymorphic'}}}\ocamlcodefragment{ : \ocamltag{type-var}{'a} \hyperref[page-test+u+package+++ml-module-Class-class-type-polymorphic]{\ocamlinlinecode{polymorphic}}}\\ - -\input{test_package+ml/Class.mutually'.tex} -\input{test_package+ml/Class.recursive'.tex} -\input{test_package+ml/Class.empty_virtual'.tex} -\input{test_package+ml/Class.polymorphic'.tex} diff --git a/test/latex/expect/test_package+ml/External.tex b/test/latex/expect/test_package+ml/External.tex deleted file mode 100644 index 5c66d20674..0000000000 --- a/test/latex/expect/test_package+ml/External.tex +++ /dev/null @@ -1,5 +0,0 @@ -\section{Module \ocamlinlinecode{External}}\label{page-test+u+package+++ml-module-External}% -\label{page-test+u+package+++ml-module-External-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit \ocamltag{arrow}{$\rightarrow$} unit}\begin{ocamlindent}Foo \emph{bar}.\end{ocamlindent}% -\medbreak - - diff --git a/test/latex/expect/test_package+ml/Functor.F1.tex b/test/latex/expect/test_package+ml/Functor.F1.tex deleted file mode 100644 index 8e27ad3d2b..0000000000 --- a/test/latex/expect/test_package+ml/Functor.F1.tex +++ /dev/null @@ -1,9 +0,0 @@ -\section{Module \ocamlinlinecode{Functor.\allowbreak{}F1}}\label{page-test+u+package+++ml-module-Functor-module-F1}% -\subsection{Parameters\label{parameters}}% -\label{page-test+u+package+++ml-module-Functor-module-F1-argument-1-Arg}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Functor-module-F1-argument-1-Arg]{\ocamlinlinecode{Arg}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Functor-module-F1-argument-1-Arg-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\subsection{Signature\label{signature}}% -\label{page-test+u+package+++ml-module-Functor-module-F1-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ - - diff --git a/test/latex/expect/test_package+ml/Functor.F2.tex b/test/latex/expect/test_package+ml/Functor.F2.tex deleted file mode 100644 index 9b6aa833e2..0000000000 --- a/test/latex/expect/test_package+ml/Functor.F2.tex +++ /dev/null @@ -1,9 +0,0 @@ -\section{Module \ocamlinlinecode{Functor.\allowbreak{}F2}}\label{page-test+u+package+++ml-module-Functor-module-F2}% -\subsection{Parameters\label{parameters}}% -\label{page-test+u+package+++ml-module-Functor-module-F2-argument-1-Arg}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Functor-module-F2-argument-1-Arg]{\ocamlinlinecode{Arg}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Functor-module-F2-argument-1-Arg-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\subsection{Signature\label{signature}}% -\label{page-test+u+package+++ml-module-Functor-module-F2-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[page-test+u+package+++ml-module-Functor-module-F2-argument-1-Arg-type-t]{\ocamlinlinecode{Arg.\allowbreak{}t}}}\\ - - diff --git a/test/latex/expect/test_package+ml/Functor.F3.tex b/test/latex/expect/test_package+ml/Functor.F3.tex deleted file mode 100644 index c0e0625691..0000000000 --- a/test/latex/expect/test_package+ml/Functor.F3.tex +++ /dev/null @@ -1,9 +0,0 @@ -\section{Module \ocamlinlinecode{Functor.\allowbreak{}F3}}\label{page-test+u+package+++ml-module-Functor-module-F3}% -\subsection{Parameters\label{parameters}}% -\label{page-test+u+package+++ml-module-Functor-module-F3-argument-1-Arg}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Functor-module-F3-argument-1-Arg]{\ocamlinlinecode{Arg}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Functor-module-F3-argument-1-Arg-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\subsection{Signature\label{signature}}% -\label{page-test+u+package+++ml-module-Functor-module-F3-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[page-test+u+package+++ml-module-Functor-module-F3-argument-1-Arg-type-t]{\ocamlinlinecode{Arg.\allowbreak{}t}}}\\ - - diff --git a/test/latex/expect/test_package+ml/Functor.F4.tex b/test/latex/expect/test_package+ml/Functor.F4.tex deleted file mode 100644 index 8901992b6e..0000000000 --- a/test/latex/expect/test_package+ml/Functor.F4.tex +++ /dev/null @@ -1,9 +0,0 @@ -\section{Module \ocamlinlinecode{Functor.\allowbreak{}F4}}\label{page-test+u+package+++ml-module-Functor-module-F4}% -\subsection{Parameters\label{parameters}}% -\label{page-test+u+package+++ml-module-Functor-module-F4-argument-1-Arg}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Functor-module-F4-argument-1-Arg]{\ocamlinlinecode{Arg}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Functor-module-F4-argument-1-Arg-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\subsection{Signature\label{signature}}% -\label{page-test+u+package+++ml-module-Functor-module-F4-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ - - diff --git a/test/latex/expect/test_package+ml/Functor.F5.tex b/test/latex/expect/test_package+ml/Functor.F5.tex deleted file mode 100644 index 54dd46e75e..0000000000 --- a/test/latex/expect/test_package+ml/Functor.F5.tex +++ /dev/null @@ -1,6 +0,0 @@ -\section{Module \ocamlinlinecode{Functor.\allowbreak{}F5}}\label{package-test+u+package+++ml-module-Functor-module-F5}% -\subsection{Parameters\label{parameters}}% -\subsection{Signature\label{signature}}% -\label{package-test+u+package+++ml-module-Functor-module-F5-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ - - diff --git a/test/latex/expect/test_package+ml/Functor.tex b/test/latex/expect/test_package+ml/Functor.tex deleted file mode 100644 index c4bd18d8c7..0000000000 --- a/test/latex/expect/test_package+ml/Functor.tex +++ /dev/null @@ -1,23 +0,0 @@ -\section{Module \ocamlinlinecode{Functor}}\label{page-test+u+package+++ml-module-Functor}% -\label{page-test+u+package+++ml-module-Functor-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Functor-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Functor-module-type-S-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Functor-module-type-S1}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Functor-module-type-S1]{\ocamlinlinecode{S1}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Parameters\label{parameters}}% -\label{page-test+u+package+++ml-module-Functor-module-type-S1-argument-1-+u+}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Functor-module-type-S1-argument-1-+u+]{\ocamlinlinecode{\_\allowbreak{}}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Functor-module-type-S1-argument-1-+u+-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\subsubsection{Signature\label{signature}}% -\label{page-test+u+package+++ml-module-Functor-module-type-S1-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Functor-module-F1}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Functor-module-F1]{\ocamlinlinecode{F1}}}\ocamlcodefragment{ (\hyperref[page-test+u+package+++ml-module-Functor-module-F1-argument-1-Arg]{\ocamlinlinecode{Arg}} : \hyperref[page-test+u+package+++ml-module-Functor-module-type-S]{\ocamlinlinecode{S}}) : \hyperref[page-test+u+package+++ml-module-Functor-module-type-S]{\ocamlinlinecode{S}}}\\ -\label{page-test+u+package+++ml-module-Functor-module-F2}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Functor-module-F2]{\ocamlinlinecode{F2}}}\ocamlcodefragment{ (\hyperref[page-test+u+package+++ml-module-Functor-module-F2-argument-1-Arg]{\ocamlinlinecode{Arg}} : \hyperref[page-test+u+package+++ml-module-Functor-module-type-S]{\ocamlinlinecode{S}}) : \hyperref[page-test+u+package+++ml-module-Functor-module-type-S]{\ocamlinlinecode{S}} \ocamltag{keyword}{with} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Functor-module-type-S-type-t]{\ocamlinlinecode{t}} = \hyperref[page-test+u+package+++ml-module-Functor-module-F2-argument-1-Arg-type-t]{\ocamlinlinecode{Arg.\allowbreak{}t}}}\\ -\label{page-test+u+package+++ml-module-Functor-module-F3}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Functor-module-F3]{\ocamlinlinecode{F3}}}\ocamlcodefragment{ (\hyperref[page-test+u+package+++ml-module-Functor-module-F3-argument-1-Arg]{\ocamlinlinecode{Arg}} : \hyperref[page-test+u+package+++ml-module-Functor-module-type-S]{\ocamlinlinecode{S}}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Functor-module-F4}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Functor-module-F4]{\ocamlinlinecode{F4}}}\ocamlcodefragment{ (\hyperref[page-test+u+package+++ml-module-Functor-module-F4-argument-1-Arg]{\ocamlinlinecode{Arg}} : \hyperref[page-test+u+package+++ml-module-Functor-module-type-S]{\ocamlinlinecode{S}}) : \hyperref[page-test+u+package+++ml-module-Functor-module-type-S]{\ocamlinlinecode{S}}}\\ -\label{page-test+u+package+++ml-module-Functor-module-F5}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Functor-module-F5]{\ocamlinlinecode{F5}}}\ocamlcodefragment{ () : \hyperref[page-test+u+package+++ml-module-Functor-module-type-S]{\ocamlinlinecode{S}}}\\ - -\input{test_package+ml/Functor.F1.tex} -\input{test_package+ml/Functor.F2.tex} -\input{test_package+ml/Functor.F3.tex} -\input{test_package+ml/Functor.F4.tex} -\input{test_package+ml/Functor.F5.tex} diff --git a/test/latex/expect/test_package+ml/Include.tex b/test/latex/expect/test_package+ml/Include.tex deleted file mode 100644 index 32eb94b317..0000000000 --- a/test/latex/expect/test_package+ml/Include.tex +++ /dev/null @@ -1,29 +0,0 @@ -\section{Module \ocamlinlinecode{Include}}\label{page-test+u+package+++ml-module-Include}% -\label{page-test+u+package+++ml-module-Include-module-type-Not+u+inlined}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Include-module-type-Not+u+inlined]{\ocamlinlinecode{Not\_\allowbreak{}inlined}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Include-module-type-Not+u+inlined-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\ocamltag{keyword}{include} \hyperref[page-test+u+package+++ml-module-Include-module-type-Not+u+inlined]{\ocamlinlinecode{Not\_\allowbreak{}inlined}}\label{page-test+u+package+++ml-module-Include-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\label{page-test+u+package+++ml-module-Include-module-type-Inlined}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Include-module-type-Inlined]{\ocamlinlinecode{Inlined}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Include-module-type-Inlined-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\ocamltag{keyword}{include} \hyperref[page-test+u+package+++ml-module-Include-module-type-Inlined]{\ocamlinlinecode{Inlined}}\label{page-test+u+package+++ml-module-Include-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ -\label{page-test+u+package+++ml-module-Include-module-type-Not+u+inlined+u+and+u+closed}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Include-module-type-Not+u+inlined+u+and+u+closed]{\ocamlinlinecode{Not\_\allowbreak{}inlined\_\allowbreak{}and\_\allowbreak{}closed}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Include-module-type-Not+u+inlined+u+and+u+closed-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} v}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\ocamltag{keyword}{include} \hyperref[page-test+u+package+++ml-module-Include-module-type-Not+u+inlined+u+and+u+closed]{\ocamlinlinecode{Not\_\allowbreak{}inlined\_\allowbreak{}and\_\allowbreak{}closed}}\label{page-test+u+package+++ml-module-Include-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} v}\\ -\label{page-test+u+package+++ml-module-Include-module-type-Not+u+inlined+u+and+u+opened}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Include-module-type-Not+u+inlined+u+and+u+opened]{\ocamlinlinecode{Not\_\allowbreak{}inlined\_\allowbreak{}and\_\allowbreak{}opened}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Include-module-type-Not+u+inlined+u+and+u+opened-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} w}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\ocamltag{keyword}{include} \hyperref[page-test+u+package+++ml-module-Include-module-type-Not+u+inlined+u+and+u+opened]{\ocamlinlinecode{Not\_\allowbreak{}inlined\_\allowbreak{}and\_\allowbreak{}opened}}\label{page-test+u+package+++ml-module-Include-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} w}\\ -\label{page-test+u+package+++ml-module-Include-module-type-Inherent+u+Module}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Include-module-type-Inherent+u+Module]{\ocamlinlinecode{Inherent\_\allowbreak{}Module}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Include-module-type-Inherent+u+Module-val-a}\ocamlcodefragment{\ocamltag{keyword}{val} a : \hyperref[page-test+u+package+++ml-module-Include-type-t]{\ocamlinlinecode{t}}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\ocamltag{keyword}{include} \hyperref[page-test+u+package+++ml-module-Include-module-type-Inherent+u+Module]{\ocamlinlinecode{Inherent\_\allowbreak{}Module}}\label{page-test+u+package+++ml-module-Include-val-a}\ocamlcodefragment{\ocamltag{keyword}{val} a : \hyperref[page-test+u+package+++ml-module-Include-type-t]{\ocamlinlinecode{t}}}\\ -\label{page-test+u+package+++ml-module-Include-module-type-Dorminant+u+Module}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Include-module-type-Dorminant+u+Module]{\ocamlinlinecode{Dorminant\_\allowbreak{}Module}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \hyperref[page-test+u+package+++ml-module-Include-module-type-Inherent+u+Module]{\ocamlinlinecode{Inherent\_\allowbreak{}Module}}\label{page-test+u+package+++ml-module-Include-module-type-Dorminant+u+Module-val-a}\ocamlcodefragment{\ocamltag{keyword}{val} a : \hyperref[page-test+u+package+++ml-module-Include-type-t]{\ocamlinlinecode{t}}}\\ -\label{page-test+u+package+++ml-module-Include-module-type-Dorminant+u+Module-val-a}\ocamlcodefragment{\ocamltag{keyword}{val} a : \hyperref[page-test+u+package+++ml-module-Include-type-u]{\ocamlinlinecode{u}}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\ocamltag{keyword}{include} \hyperref[page-test+u+package+++ml-module-Include-module-type-Dorminant+u+Module]{\ocamlinlinecode{Dorminant\_\allowbreak{}Module}}\ocamltag{keyword}{include} \hyperref[page-test+u+package+++ml-module-Include-module-type-Inherent+u+Module]{\ocamlinlinecode{Inherent\_\allowbreak{}Module}}\label{page-test+u+package+++ml-module-Include-val-a}\ocamlcodefragment{\ocamltag{keyword}{val} a : \hyperref[page-test+u+package+++ml-module-Include-type-t]{\ocamlinlinecode{t}}}\\ -\label{page-test+u+package+++ml-module-Include-val-a}\ocamlcodefragment{\ocamltag{keyword}{val} a : \hyperref[page-test+u+package+++ml-module-Include-type-u]{\ocamlinlinecode{u}}}\\ - - diff --git a/test/latex/expect/test_package+ml/Include2.tex b/test/latex/expect/test_package+ml/Include2.tex deleted file mode 100644 index 7c8c157079..0000000000 --- a/test/latex/expect/test_package+ml/Include2.tex +++ /dev/null @@ -1,21 +0,0 @@ -\section{Module \ocamlinlinecode{Include2}}\label{page-test+u+package+++ml-module-Include2}% -\label{page-test+u+package+++ml-module-Include2-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Include2-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Include2-module-X-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Comment about X that should not appear when including X below.\end{ocamlindent}% -\medbreak -\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \ocamltag{keyword}{struct} \ocamltag{keyword}{include} \hyperref[page-test+u+package+++ml-module-Include2-module-X]{\ocamlinlinecode{X}} \ocamltag{keyword}{end}Comment about X that should not appear when including X below. - -\label{page-test+u+package+++ml-module-Include2-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int}\\ -\label{page-test+u+package+++ml-module-Include2-module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Include2-module-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Include2-module-Y-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Top-comment of Y.\end{ocamlindent}% -\medbreak -\label{page-test+u+package+++ml-module-Include2-module-Y+u+include+u+synopsis}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Include2-module-Y+u+include+u+synopsis]{\ocamlinlinecode{Y\_\allowbreak{}include\_\allowbreak{}synopsis}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \ocamltag{keyword}{struct} \ocamltag{keyword}{include} \hyperref[page-test+u+package+++ml-module-Include2-module-Y]{\ocamlinlinecode{Y}} \ocamltag{keyword}{end}\label{page-test+u+package+++ml-module-Include2-module-Y+u+include+u+synopsis-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[page-test+u+package+++ml-module-Include2-module-Y-type-t]{\ocamlinlinecode{Y.\allowbreak{}t}}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}The \ocamlinlinecode{include Y} below should have the synopsis from \ocamlinlinecode{Y}'s top-comment attached to it.\end{ocamlindent}% -\medbreak -\label{page-test+u+package+++ml-module-Include2-module-Y+u+include+u+doc}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Include2-module-Y+u+include+u+doc]{\ocamlinlinecode{Y\_\allowbreak{}include\_\allowbreak{}doc}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}Doc attached to \ocamlinlinecode{include Y}. \ocamlinlinecode{Y}'s top-comment shouldn't appear here.\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \ocamltag{keyword}{struct} \ocamltag{keyword}{include} \hyperref[page-test+u+package+++ml-module-Include2-module-Y]{\ocamlinlinecode{Y}} \ocamltag{keyword}{end}\label{page-test+u+package+++ml-module-Include2-module-Y+u+include+u+doc-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[page-test+u+package+++ml-module-Include2-module-Y-type-t]{\ocamlinlinecode{Y.\allowbreak{}t}}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ - - diff --git a/test/latex/expect/test_package+ml/Include_sections.tex b/test/latex/expect/test_package+ml/Include_sections.tex deleted file mode 100644 index f9350ec022..0000000000 --- a/test/latex/expect/test_package+ml/Include_sections.tex +++ /dev/null @@ -1,71 +0,0 @@ -\section{Module \ocamlinlinecode{Include\_\allowbreak{}sections}}\label{page-test+u+package+++ml-module-Include+u+sections}% -\label{page-test+u+package+++ml-module-Include+u+sections-module-type-Something}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Include+u+sections-module-type-Something]{\ocamlinlinecode{Something}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Include+u+sections-module-type-Something-val-something}\ocamlcodefragment{\ocamltag{keyword}{val} something : unit}\\ -\subsubsection{Something 1\label{something-1}}% -foo - -\label{page-test+u+package+++ml-module-Include+u+sections-module-type-Something-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\\ -\subsubsection{Something 2\label{something-2}}% -\label{page-test+u+package+++ml-module-Include+u+sections-module-type-Something-val-bar}\ocamlcodefragment{\ocamltag{keyword}{val} bar : unit}\begin{ocamlindent}foo bar\end{ocamlindent}% -\medbreak -\subsubsection{Something 1-bis\label{something-1-bis}}% -Some text. - -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}A module type.\end{ocamlindent}% -\medbreak -Let's include \hyperref[page-test+u+package+++ml-module-Include+u+sections-module-type-Something]{\ocamlinlinecode{\ocamlinlinecode{Something}}[p\pageref*{page-test+u+package+++ml-module-Include+u+sections-module-type-Something}]} once - -\ocamltag{keyword}{include} \hyperref[page-test+u+package+++ml-module-Include+u+sections-module-type-Something]{\ocamlinlinecode{Something}}\label{page-test+u+package+++ml-module-Include+u+sections-val-something}\ocamlcodefragment{\ocamltag{keyword}{val} something : unit}\\ -\subsection{Something 1\label{something-1}}% -foo - -\label{page-test+u+package+++ml-module-Include+u+sections-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\\ -\subsubsection{Something 2\label{something-2}}% -\label{page-test+u+package+++ml-module-Include+u+sections-val-bar}\ocamlcodefragment{\ocamltag{keyword}{val} bar : unit}\begin{ocamlindent}foo bar\end{ocamlindent}% -\medbreak -\subsection{Something 1-bis\label{something-1-bis}}% -Some text. - -\subsection{Second include\label{second-include}}% -Let's include \hyperref[page-test+u+package+++ml-module-Include+u+sections-module-type-Something]{\ocamlinlinecode{\ocamlinlinecode{Something}}[p\pageref*{page-test+u+package+++ml-module-Include+u+sections-module-type-Something}]} a second time: the heading level should be shift here. - -\ocamltag{keyword}{include} \hyperref[page-test+u+package+++ml-module-Include+u+sections-module-type-Something]{\ocamlinlinecode{Something}}\label{page-test+u+package+++ml-module-Include+u+sections-val-something}\ocamlcodefragment{\ocamltag{keyword}{val} something : unit}\\ -\subsection{Something 1\label{something-1}}% -foo - -\label{page-test+u+package+++ml-module-Include+u+sections-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\\ -\subsubsection{Something 2\label{something-2}}% -\label{page-test+u+package+++ml-module-Include+u+sections-val-bar}\ocamlcodefragment{\ocamltag{keyword}{val} bar : unit}\begin{ocamlindent}foo bar\end{ocamlindent}% -\medbreak -\subsection{Something 1-bis\label{something-1-bis}}% -Some text. - -\subsubsection{Third include\label{third-include}}% -Shifted some more. - -\ocamltag{keyword}{include} \hyperref[page-test+u+package+++ml-module-Include+u+sections-module-type-Something]{\ocamlinlinecode{Something}}\label{page-test+u+package+++ml-module-Include+u+sections-val-something}\ocamlcodefragment{\ocamltag{keyword}{val} something : unit}\\ -\subsection{Something 1\label{something-1}}% -foo - -\label{page-test+u+package+++ml-module-Include+u+sections-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\\ -\subsubsection{Something 2\label{something-2}}% -\label{page-test+u+package+++ml-module-Include+u+sections-val-bar}\ocamlcodefragment{\ocamltag{keyword}{val} bar : unit}\begin{ocamlindent}foo bar\end{ocamlindent}% -\medbreak -\subsection{Something 1-bis\label{something-1-bis}}% -Some text. - -And let's include it again, but without inlining it this time: the ToC shouldn't grow. - -\ocamltag{keyword}{include} \hyperref[page-test+u+package+++ml-module-Include+u+sections-module-type-Something]{\ocamlinlinecode{Something}}\label{page-test+u+package+++ml-module-Include+u+sections-val-something}\ocamlcodefragment{\ocamltag{keyword}{val} something : unit}\\ -\subsection{Something 1\label{something-1}}% -foo - -\label{page-test+u+package+++ml-module-Include+u+sections-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\\ -\subsubsection{Something 2\label{something-2}}% -\label{page-test+u+package+++ml-module-Include+u+sections-val-bar}\ocamlcodefragment{\ocamltag{keyword}{val} bar : unit}\begin{ocamlindent}foo bar\end{ocamlindent}% -\medbreak -\subsection{Something 1-bis\label{something-1-bis}}% -Some text. - - - diff --git a/test/latex/expect/test_package+ml/Interlude.tex b/test/latex/expect/test_package+ml/Interlude.tex deleted file mode 100644 index 293282afac..0000000000 --- a/test/latex/expect/test_package+ml/Interlude.tex +++ /dev/null @@ -1,22 +0,0 @@ -\section{Module \ocamlinlinecode{Interlude}}\label{page-test+u+package+++ml-module-Interlude}% -This is the comment associated to the module. - -Some separate stray text at the top of the module. - -\label{page-test+u+package+++ml-module-Interlude-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\begin{ocamlindent}Foo.\end{ocamlindent}% -\medbreak -Some stray text that is not associated with any signature item. - -It has multiple paragraphs. - -A separate block of stray text, adjacent to the preceding one. - -\label{page-test+u+package+++ml-module-Interlude-val-bar}\ocamlcodefragment{\ocamltag{keyword}{val} bar : unit}\begin{ocamlindent}Bar.\end{ocamlindent}% -\medbreak -\label{page-test+u+package+++ml-module-Interlude-val-multiple}\ocamlcodefragment{\ocamltag{keyword}{val} multiple : unit}\\ -\label{page-test+u+package+++ml-module-Interlude-val-signature}\ocamlcodefragment{\ocamltag{keyword}{val} signature : unit}\\ -\label{page-test+u+package+++ml-module-Interlude-val-items}\ocamlcodefragment{\ocamltag{keyword}{val} items : unit}\\ -Stray text at the bottom of the module. - - - diff --git a/test/latex/expect/test_package+ml/Markup.tex b/test/latex/expect/test_package+ml/Markup.tex deleted file mode 100644 index 1fcb786ce2..0000000000 --- a/test/latex/expect/test_package+ml/Markup.tex +++ /dev/null @@ -1,149 +0,0 @@ -\section{Module \ocamlinlinecode{Markup}}\label{page-test+u+package+++ml-module-Markup}% -Here, we test the rendering of comment markup. - -\subsection{Sections\label{sections}}% -Let's get these done first, because sections will be used to break up the rest of this test. - -Besides the section heading above, there are also - -\subsubsection{Subsection headings\label{subsection-headings}}% -and - -\subsubsection{Sub-subsection headings\label{sub-subsection-headings}}% -but odoc has banned deeper headings. There are also title headings, but they are only allowed in mld files. - -\subsubsection{Anchors\label{anchors}}% -Sections can have attached \hyperref[page-test+u+package+++ml-module-Markup-anchors]{\ocamlinlinecode{Anchors}[p\pageref*{page-test+u+package+++ml-module-Markup-anchors}]}, and it is possible to \hyperref[page-test+u+package+++ml-module-Markup-anchors]{\ocamlinlinecode{link}[p\pageref*{page-test+u+package+++ml-module-Markup-anchors}]} to them. Links to section headers should not be set in source code style. - -\subsubsection{Paragraph\label{paragraph}}% -Individual paragraphs can have a heading. - -\subsubsection{Subparagraph\label{subparagraph}}% -Parts of a longer paragraph that can be considered alone can also have headings. - -\subsection{Styling\label{styling}}% -This paragraph has some styled elements: \bold{bold} and \emph{italic}, \bold{\emph{bold italic}}, \emph{emphasis}, \emph{\emph{emphasis} within emphasis}, \bold{\emph{bold italic}}, super\textsuperscript{script}, sub\textsubscript{script}. The line spacing should be enough for superscripts and subscripts not to look odd. - -Note: \emph{In italics \emph{emphasis} is rendered as normal text while \emph{emphasis \emph{in} emphasis} is rendered in italics.} \emph{It also work the same in \href{\#}{links in italics with \emph{emphasis \emph{in} emphasis}.}\footnote{\url{\#}}} - -\ocamlinlinecode{code} is a different kind of markup that doesn't allow nested markup. - -It's possible for two markup elements to appear \bold{next} \emph{to} each other and have a space, and appear \bold{next}\emph{to} each other with no space. It doesn't matter \bold{how} \emph{much} space it was in the source: in this sentence, it was two space characters. And in this one, there is \bold{a} \emph{newline}. - -This is also true between \emph{non-}\ocamlinlinecode{code} markup \emph{and} \ocamlinlinecode{code}. - -Code can appear \bold{inside \ocamlinlinecode{other} markup}. Its display shouldn't be affected. - -\subsection{Links and references\label{links-and-references}}% -This is a \href{\#}{link}\footnote{\url{\#}}. It sends you to the top of this page. Links can have markup inside them: \href{\#}{\bold{bold}}\footnote{\url{\#}}, \href{\#}{\emph{italics}}\footnote{\url{\#}}, \href{\#}{\emph{emphasis}}\footnote{\url{\#}}, \href{\#}{super\textsuperscript{script}}\footnote{\url{\#}}, \href{\#}{sub\textsubscript{script}}\footnote{\url{\#}}, and \href{\#}{\ocamlinlinecode{code}}\footnote{\url{\#}}. Links can also be nested \emph{\href{\#}{inside}\footnote{\url{\#}}} markup. Links cannot be nested inside each other. This link has no replacement text: \href{\#}{\#}\footnote{\url{\#}}. The text is filled in by odoc. This is a shorthand link: \href{\#}{\#}\footnote{\url{\#}}. The text is also filled in by odoc in this case. - -This is a reference to \hyperref[page-test+u+package+++ml-module-Markup-val-foo]{\ocamlinlinecode{\ocamlinlinecode{foo}}[p\pageref*{page-test+u+package+++ml-module-Markup-val-foo}]}. References can have replacement text: \hyperref[page-test+u+package+++ml-module-Markup-val-foo]{\ocamlinlinecode{the value foo}[p\pageref*{page-test+u+package+++ml-module-Markup-val-foo}]}. Except for the special lookup support, references are pretty much just like links. The replacement text can have nested styles: \hyperref[page-test+u+package+++ml-module-Markup-val-foo]{\ocamlinlinecode{\bold{bold}}[p\pageref*{page-test+u+package+++ml-module-Markup-val-foo}]}, \hyperref[page-test+u+package+++ml-module-Markup-val-foo]{\ocamlinlinecode{\emph{italic}}[p\pageref*{page-test+u+package+++ml-module-Markup-val-foo}]}, \hyperref[page-test+u+package+++ml-module-Markup-val-foo]{\ocamlinlinecode{\emph{emphasis}}[p\pageref*{page-test+u+package+++ml-module-Markup-val-foo}]}, \hyperref[page-test+u+package+++ml-module-Markup-val-foo]{\ocamlinlinecode{super\textsuperscript{script}}[p\pageref*{page-test+u+package+++ml-module-Markup-val-foo}]}, \hyperref[page-test+u+package+++ml-module-Markup-val-foo]{\ocamlinlinecode{sub\textsubscript{script}}[p\pageref*{page-test+u+package+++ml-module-Markup-val-foo}]}, and \hyperref[page-test+u+package+++ml-module-Markup-val-foo]{\ocamlinlinecode{\ocamlinlinecode{code}}[p\pageref*{page-test+u+package+++ml-module-Markup-val-foo}]}. It's also possible to surround a reference in a style: \bold{\hyperref[page-test+u+package+++ml-module-Markup-val-foo]{\ocamlinlinecode{\ocamlinlinecode{foo}}[p\pageref*{page-test+u+package+++ml-module-Markup-val-foo}]}}. References can't be nested inside references, and links and references can't be nested inside each other. - -\subsection{Preformatted text\label{preformatted-text}}% -This is a code block:\medbreak -\begin{ocamlcodeblock} -let foo = () -(** There are some nested comments in here, but an unpaired comment - terminator would terminate the whole doc surrounding comment. It's - best to keep code blocks no wider than 72 characters. *) - -let bar = - ignore foo -\end{ocamlcodeblock}\medbreak -There are also verbatim blocks: - -\begin{verbatim}The main difference is these don't get syntax highlighting.\end{verbatim}% -\subsection{Lists\label{lists}}% -\begin{itemize}\item{This is a}% -\item{shorthand bulleted list,}% -\item{and the paragraphs in each list item support \emph{styling}.}\end{itemize}% -\begin{enumerate}\item{This is a}% -\item{shorthand numbered list.}\end{enumerate}% -\begin{itemize}\item{Shorthand list items can span multiple lines, however trying to put two paragraphs into a shorthand list item using a double line break}\end{itemize}% -just creates a paragraph outside the list. - -\begin{itemize}\item{Similarly, inserting a blank line between two list items}\end{itemize}% -\begin{itemize}\item{creates two separate lists.}\end{itemize}% -\begin{itemize}\item{To get around this limitation, one - -can use explicitly-delimited lists. - -}% -\item{This one is bulleted,}\end{itemize}% -\begin{enumerate}\item{but there is also the numbered variant.}\end{enumerate}% -\begin{itemize}\item{\begin{itemize}\item{lists}% -\item{can be nested}% -\item{and can include references}% -\item{\hyperref[page-test+u+package+++ml-module-Markup-val-foo]{\ocamlinlinecode{\ocamlinlinecode{foo}}[p\pageref*{page-test+u+package+++ml-module-Markup-val-foo}]}}\end{itemize}% -}\end{itemize}% -\subsection{Unicode\label{unicode}}% -The parser supports any ASCII-compatible encoding, in particuλar UTF-8. - -\subsection{Raw HTML\label{raw-html}}% -Raw HTML can be as inline elements into sentences. - -\subsection{Modules\label{modules}}% -\begin{description}\kern-\topsep -\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded -\item[{\ocamlinlinecode{X}}]{}\end{description}% -\begin{description}\kern-\topsep -\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded -\item[{\ocamlinlinecode{X}}]{}% -\item[{\ocamlinlinecode{Y}}]{}% -\item[{\ocamlinlinecode{Z}}]{}\end{description}% -\subsection{Tags\label{tags}}% -Each comment can end with zero or more tags. Here are some examples: - -\begin{description}\kern-\topsep -\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded -\item[{author}]{antron}\end{description}% -\begin{description}\kern-\topsep -\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded -\item[{deprecated}]{a \emph{long} time ago - -}\end{description}% -\begin{description}\kern-\topsep -\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded -\item[{parameter foo}]{unused - -}\end{description}% -\begin{description}\kern-\topsep -\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded -\item[{raises Failure}]{always - -}\end{description}% -\begin{description}\kern-\topsep -\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded -\item[{returns}]{never - -}\end{description}% -\begin{description}\kern-\topsep -\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded -\item[{see \href{\#}{\#}\footnote{\url{\#}}}]{this url - -}\end{description}% -\begin{description}\kern-\topsep -\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded -\item[{see \ocamlinlinecode{foo.\allowbreak{}ml}}]{this file - -}\end{description}% -\begin{description}\kern-\topsep -\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded -\item[{see Foo}]{this document - -}\end{description}% -\begin{description}\kern-\topsep -\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded -\item[{since}]{0}\end{description}% -\begin{description}\kern-\topsep -\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded -\item[{before 1.0}]{it was in b\textsuperscript{e}t\textsubscript{a} - -}\end{description}% -\begin{description}\kern-\topsep -\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded -\item[{version}]{-1}\end{description}% -\label{page-test+u+package+++ml-module-Markup-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\begin{ocamlindent}Comments in structure items \bold{support} \emph{markup}, t\textsuperscript{o}\textsubscript{o}.\end{ocamlindent}% -\medbreak - - diff --git a/test/latex/expect/test_package+ml/Module.tex b/test/latex/expect/test_package+ml/Module.tex deleted file mode 100644 index c613af9dbe..0000000000 --- a/test/latex/expect/test_package+ml/Module.tex +++ /dev/null @@ -1,75 +0,0 @@ -\section{Module \ocamlinlinecode{Module}}\label{page-test+u+package+++ml-module-Module}% -Foo. - -\label{page-test+u+package+++ml-module-Module-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\begin{ocamlindent}The module needs at least one signature item, otherwise a bug causes the compiler to drop the module comment (above). See \href{https://caml.inria.fr/mantis/view.php?id=7701}{https://caml.inria.fr/mantis/view.php?id=7701}\footnote{\url{https://caml.inria.fr/mantis/view.php?id=7701}}.\end{ocamlindent}% -\medbreak -\label{page-test+u+package+++ml-module-Module-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Module-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Module-module-type-S-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Module-module-type-S-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S1}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} S1}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S2}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Module-module-type-S2]{\ocamlinlinecode{S2}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Module-module-type-S2-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S2-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S2-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S2-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S2-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Module-module-type-S2-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S3}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Module-module-type-S3]{\ocamlinlinecode{S3}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Module-module-type-S3-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S3-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u = string}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S3-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S3-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S3-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Module-module-type-S3-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S4}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Module-module-type-S4]{\ocamlinlinecode{S4}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Module-module-type-S4-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S4-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S4-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S4-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Module-module-type-S4-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S5}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Module-module-type-S5]{\ocamlinlinecode{S5}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Module-module-type-S5-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S5-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S5-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S5-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Module-module-type-S5-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Module-type-result}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) result}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S6}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Module-module-type-S6]{\ocamlinlinecode{S6}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Module-module-type-S6-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S6-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S6-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S6-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Module-module-type-S6-module-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Module-module-M'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Module-module-M']{\ocamlinlinecode{M'}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S7}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Module-module-type-S7]{\ocamlinlinecode{S7}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Module-module-type-S7-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S7-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S7-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S7-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S7-module-M}\ocamlcodefragment{\ocamltag{keyword}{module} M = \hyperref[page-test+u+package+++ml-module-Module-module-M']{\ocamlinlinecode{M'}}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S8}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Module-module-type-S8]{\ocamlinlinecode{S8}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Module-module-type-S8-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S8-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S8-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S8-type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Module-module-type-S9}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Module-module-type-S9]{\ocamlinlinecode{S9}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Module-module-Mutually}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Module-module-Mutually]{\ocamlinlinecode{Mutually}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Module-module-Recursive}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Module-module-Recursive]{\ocamlinlinecode{Recursive}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ - - diff --git a/test/latex/expect/test_package+ml/Nested.F.tex b/test/latex/expect/test_package+ml/Nested.F.tex deleted file mode 100644 index 5ac85bbcf1..0000000000 --- a/test/latex/expect/test_package+ml/Nested.F.tex +++ /dev/null @@ -1,25 +0,0 @@ -\section{Module \ocamlinlinecode{Nested.\allowbreak{}F}}\label{page-test+u+package+++ml-module-Nested-module-F}% -This is a functor F. - -Some additional comments. - -\subsection{Type\label{type}}% -\subsection{Parameters\label{parameters}}% -\label{page-test+u+package+++ml-module-Nested-module-F-argument-1-Arg1}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Nested-module-F-argument-1-Arg1]{\ocamlinlinecode{Arg1}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Type\label{type}}% -\label{page-test+u+package+++ml-module-Nested-module-F-argument-1-Arg1-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\begin{ocamlindent}Some type.\end{ocamlindent}% -\medbreak -\subsubsection{Values\label{values}}% -\label{page-test+u+package+++ml-module-Nested-module-F-argument-1-Arg1-val-y}\ocamlcodefragment{\ocamltag{keyword}{val} y : \hyperref[page-test+u+package+++ml-module-Nested-module-F-argument-1-Arg1-type-t]{\ocamlinlinecode{t}}}\begin{ocamlindent}The value of y.\end{ocamlindent}% -\medbreak -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Nested-module-F-argument-2-Arg2}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Nested-module-F-argument-2-Arg2]{\ocamlinlinecode{Arg2}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Type\label{type}}% -\label{page-test+u+package+++ml-module-Nested-module-F-argument-2-Arg2-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\begin{ocamlindent}Some type.\end{ocamlindent}% -\medbreak -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\subsection{Signature\label{signature}}% -\label{page-test+u+package+++ml-module-Nested-module-F-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[page-test+u+package+++ml-module-Nested-module-F-argument-1-Arg1-type-t]{\ocamlinlinecode{Arg1.\allowbreak{}t}} * \hyperref[page-test+u+package+++ml-module-Nested-module-F-argument-2-Arg2-type-t]{\ocamlinlinecode{Arg2.\allowbreak{}t}}}\begin{ocamlindent}Some type.\end{ocamlindent}% -\medbreak - - diff --git a/test/latex/expect/test_package+ml/Nested.inherits.tex b/test/latex/expect/test_package+ml/Nested.inherits.tex deleted file mode 100644 index 7a996d6060..0000000000 --- a/test/latex/expect/test_package+ml/Nested.inherits.tex +++ /dev/null @@ -1,4 +0,0 @@ -\section{Class \ocamlinlinecode{Nested.\allowbreak{}inherits}}\label{page-test+u+package+++ml-module-Nested-class-inherits}% -\ocamlcodefragment{\ocamltag{keyword}{inherit} \hyperref[page-test+u+package+++ml-module-Nested-class-z]{\ocamlinlinecode{z}}}\\ - - diff --git a/test/latex/expect/test_package+ml/Nested.tex b/test/latex/expect/test_package+ml/Nested.tex deleted file mode 100644 index 63b14482a4..0000000000 --- a/test/latex/expect/test_package+ml/Nested.tex +++ /dev/null @@ -1,34 +0,0 @@ -\section{Module \ocamlinlinecode{Nested}}\label{page-test+u+package+++ml-module-Nested}% -This comment needs to be here before \#235 is fixed. - -\subsection{Module\label{module}}% -\label{page-test+u+package+++ml-module-Nested-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Nested-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Type\label{type}}% -\label{page-test+u+package+++ml-module-Nested-module-X-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\begin{ocamlindent}Some type.\end{ocamlindent}% -\medbreak -\subsubsection{Values\label{values}}% -\label{page-test+u+package+++ml-module-Nested-module-X-val-x}\ocamlcodefragment{\ocamltag{keyword}{val} x : \hyperref[page-test+u+package+++ml-module-Nested-module-X-type-t]{\ocamlinlinecode{t}}}\begin{ocamlindent}The value of x.\end{ocamlindent}% -\medbreak -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This is module X.\end{ocamlindent}% -\medbreak -\subsection{Module type\label{module-type}}% -\label{page-test+u+package+++ml-module-Nested-module-type-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Nested-module-type-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Type\label{type}}% -\label{page-test+u+package+++ml-module-Nested-module-type-Y-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\begin{ocamlindent}Some type.\end{ocamlindent}% -\medbreak -\subsubsection{Values\label{values}}% -\label{page-test+u+package+++ml-module-Nested-module-type-Y-val-y}\ocamlcodefragment{\ocamltag{keyword}{val} y : \hyperref[page-test+u+package+++ml-module-Nested-module-type-Y-type-t]{\ocamlinlinecode{t}}}\begin{ocamlindent}The value of y.\end{ocamlindent}% -\medbreak -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This is module type Y.\end{ocamlindent}% -\medbreak -\subsection{Functor\label{functor}}% -\label{page-test+u+package+++ml-module-Nested-module-F}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Nested-module-F]{\ocamlinlinecode{F}}}\ocamlcodefragment{ (\hyperref[page-test+u+package+++ml-module-Nested-module-F-argument-1-Arg1]{\ocamlinlinecode{Arg1}} : \hyperref[page-test+u+package+++ml-module-Nested-module-type-Y]{\ocamlinlinecode{Y}}) (\hyperref[page-test+u+package+++ml-module-Nested-module-F-argument-2-Arg2]{\ocamlinlinecode{Arg2}} : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\begin{ocamlindent}This is a functor F.\end{ocamlindent}% -\medbreak -\subsection{Class\label{class}}% -\label{page-test+u+package+++ml-module-Nested-class-z}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{virtual} \hyperref[page-test+u+package+++ml-module-Nested-class-z]{\ocamlinlinecode{z}}}\ocamlcodefragment{ : \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\begin{ocamlindent}This is class z.\end{ocamlindent}% -\medbreak -\label{page-test+u+package+++ml-module-Nested-class-inherits}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{virtual} \hyperref[page-test+u+package+++ml-module-Nested-class-inherits]{\ocamlinlinecode{inherits}}}\ocamlcodefragment{ : \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ - -\input{test_package+ml/Nested.F.tex} -\input{test_package+ml/Nested.z.tex} -\input{test_package+ml/Nested.inherits.tex} diff --git a/test/latex/expect/test_package+ml/Nested.z.tex b/test/latex/expect/test_package+ml/Nested.z.tex deleted file mode 100644 index f5bd177dab..0000000000 --- a/test/latex/expect/test_package+ml/Nested.z.tex +++ /dev/null @@ -1,14 +0,0 @@ -\section{Class \ocamlinlinecode{Nested.\allowbreak{}z}}\label{page-test+u+package+++ml-module-Nested-class-z}% -This is class z. - -Some additional comments. - -\label{page-test+u+package+++ml-module-Nested-class-z-val-y}\ocamlcodefragment{\ocamltag{keyword}{val} y : int}\begin{ocamlindent}Some value.\end{ocamlindent}% -\medbreak -\label{page-test+u+package+++ml-module-Nested-class-z-val-y'}\ocamlcodefragment{\ocamltag{keyword}{val} \ocamltag{keyword}{mutable} \ocamltag{keyword}{virtual} y' : int}\\ -\subsection{Methods\label{methods}}% -\label{page-test+u+package+++ml-module-Nested-class-z-method-z}\ocamlcodefragment{\ocamltag{keyword}{method} z : int}\begin{ocamlindent}Some method.\end{ocamlindent}% -\medbreak -\label{page-test+u+package+++ml-module-Nested-class-z-method-z'}\ocamlcodefragment{\ocamltag{keyword}{method} \ocamltag{keyword}{private} \ocamltag{keyword}{virtual} z' : int}\\ - - diff --git a/test/latex/expect/test_package+ml/Recent.tex b/test/latex/expect/test_package+ml/Recent.tex deleted file mode 100644 index 3b49c8bdd4..0000000000 --- a/test/latex/expect/test_package+ml/Recent.tex +++ /dev/null @@ -1,78 +0,0 @@ -\section{Module \ocamlinlinecode{Recent}}\label{page-test+u+package+++ml-module-Recent}% -\label{page-test+u+package+++ml-module-Recent-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Recent-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Recent-module-type-S1}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Recent-module-type-S1]{\ocamlinlinecode{S1}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Parameters\label{parameters}}% -\label{page-test+u+package+++ml-module-Recent-module-type-S1-argument-1-+u+}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Recent-module-type-S1-argument-1-+u+]{\ocamlinlinecode{\_\allowbreak{}}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\subsubsection{Signature\label{signature}}% -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Recent-type-variant}\ocamlcodefragment{\ocamltag{keyword}{type} variant = }\begin{ocamlindent}\ocamlcodefragment{| \ocamltag{constructor}{A}}\label{page-test+u+package+++ml-module-Recent-type-variant.A}% -\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{| \ocamltag{constructor}{B} \ocamltag{keyword}{of} int}\label{page-test+u+package+++ml-module-Recent-type-variant.B}% -\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{| \ocamltag{constructor}{C}}\label{page-test+u+package+++ml-module-Recent-type-variant.C}% -\begin{ocamlindent}foo\end{ocamlindent}% -\ocamlcodefragment{| \ocamltag{constructor}{D}}\label{page-test+u+package+++ml-module-Recent-type-variant.D}% -\begin{ocamlindent}\emph{bar}\end{ocamlindent}% -\ocamlcodefragment{| \ocamltag{constructor}{E} \ocamltag{keyword}{of} \{}\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{a : int;\allowbreak{}}\label{page-test+u+package+++ml-module-Recent-type-variant.a}\\ -\end{ocamltabular}% -\\ -\ocamlcodefragment{\}}\label{page-test+u+package+++ml-module-Recent-type-variant.E}% -\begin{ocamlindent}\end{ocamlindent}% -\end{ocamlindent}% -\label{page-test+u+package+++ml-module-Recent-type-gadt}\ocamlcodefragment{\ocamltag{keyword}{type} \_\allowbreak{} gadt = }\begin{ocamlindent}\ocamlcodefragment{| \ocamltag{constructor}{A} : int \hyperref[page-test+u+package+++ml-module-Recent-type-gadt]{\ocamlinlinecode{gadt}}}\label{page-test+u+package+++ml-module-Recent-type-gadt.A}% -\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{| \ocamltag{constructor}{B} : int \ocamltag{arrow}{$\rightarrow$} string \hyperref[page-test+u+package+++ml-module-Recent-type-gadt]{\ocamlinlinecode{gadt}}}\label{page-test+u+package+++ml-module-Recent-type-gadt.B}% -\begin{ocamlindent}foo\end{ocamlindent}% -\ocamlcodefragment{| \ocamltag{constructor}{C} : \{}\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{a : int;\allowbreak{}}\label{page-test+u+package+++ml-module-Recent-type-gadt.a}\\ -\end{ocamltabular}% -\\ -\ocamlcodefragment{\} \ocamltag{arrow}{$\rightarrow$} unit \hyperref[page-test+u+package+++ml-module-Recent-type-gadt]{\ocamlinlinecode{gadt}}}\label{page-test+u+package+++ml-module-Recent-type-gadt.C}% -\begin{ocamlindent}\end{ocamlindent}% -\end{ocamlindent}% -\label{page-test+u+package+++ml-module-Recent-type-polymorphic+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} polymorphic\_\allowbreak{}variant = [ }\\ -\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{`A}\label{page-test+u+package+++ml-module-Recent-type-polymorphic+u+variant.A}& \\ -\ocamlinlinecode{| }\ocamlinlinecode{`B \ocamltag{keyword}{of} int}\label{page-test+u+package+++ml-module-Recent-type-polymorphic+u+variant.B}& \\ -\ocamlinlinecode{| }\ocamlinlinecode{`C}\label{page-test+u+package+++ml-module-Recent-type-polymorphic+u+variant.C}& foo\\ -\ocamlinlinecode{| }\ocamlinlinecode{`D}\label{page-test+u+package+++ml-module-Recent-type-polymorphic+u+variant.D}& bar\\ -\end{ocamltabular}% -\\ -\ocamlcodefragment{ ]}\\ -\label{page-test+u+package+++ml-module-Recent-type-empty+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} empty\_\allowbreak{}variant = |}\\ -\label{page-test+u+package+++ml-module-Recent-type-nonrec+u+}\ocamlcodefragment{\ocamltag{keyword}{type} \ocamltag{keyword}{nonrec} nonrec\_\allowbreak{} = int}\\ -\label{page-test+u+package+++ml-module-Recent-type-empty+u+conj}\ocamlcodefragment{\ocamltag{keyword}{type} empty\_\allowbreak{}conj = }\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{X} : [< `X of \& \ocamltag{type-var}{'a} \& int * float ] \ocamltag{arrow}{$\rightarrow$} \hyperref[page-test+u+package+++ml-module-Recent-type-empty+u+conj]{\ocamlinlinecode{empty\_\allowbreak{}conj}}}\label{page-test+u+package+++ml-module-Recent-type-empty+u+conj.X}\\ -\end{ocamltabular}% -\\ -\label{page-test+u+package+++ml-module-Recent-type-conj}\ocamlcodefragment{\ocamltag{keyword}{type} conj = }\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{X} : [< `X of int \& [< `B of int \& float ] ] \ocamltag{arrow}{$\rightarrow$} \hyperref[page-test+u+package+++ml-module-Recent-type-conj]{\ocamlinlinecode{conj}}}\label{page-test+u+package+++ml-module-Recent-type-conj.X}\\ -\end{ocamltabular}% -\\ -\label{page-test+u+package+++ml-module-Recent-val-empty+u+conj}\ocamlcodefragment{\ocamltag{keyword}{val} empty\_\allowbreak{}conj : [< `X of \& \ocamltag{type-var}{'a} \& int * float ]}\\ -\label{page-test+u+package+++ml-module-Recent-val-conj}\ocamlcodefragment{\ocamltag{keyword}{val} conj : [< `X of int \& [< `B of int \& float ] ]}\\ -\label{page-test+u+package+++ml-module-Recent-module-Z}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Recent-module-Z]{\ocamlinlinecode{Z}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Recent-module-Z-module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Recent-module-Z-module-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Recent-module-Z-module-Y-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Recent-module-Z-module-Y-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Recent-module-Z-module-Y-module-X-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} 'a t}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Recent-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Recent-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Recent-module-X-module-L}\ocamlcodefragment{\ocamltag{keyword}{module} L := \hyperref[page-test+u+package+++ml-module-Recent-module-Z-module-Y]{\ocamlinlinecode{Z.\allowbreak{}Y}}}\\ -\label{page-test+u+package+++ml-module-Recent-module-X-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int \hyperref[page-test+u+package+++ml-module-Recent-module-Z-module-Y-module-X-type-t]{\ocamlinlinecode{Z.\allowbreak{}Y.\allowbreak{}X.\allowbreak{}t}}}\\ -\label{page-test+u+package+++ml-module-Recent-module-X-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u := int}\\ -\label{page-test+u+package+++ml-module-Recent-module-X-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} v = \hyperref[page-test+u+package+++ml-module-Recent-module-X-type-u]{\ocamlinlinecode{u}} \hyperref[page-test+u+package+++ml-module-Recent-module-Z-module-Y-module-X-type-t]{\ocamlinlinecode{Z.\allowbreak{}Y.\allowbreak{}X.\allowbreak{}t}}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Recent-module-type-PolyS}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Recent-module-type-PolyS]{\ocamlinlinecode{PolyS}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Recent-module-type-PolyS-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = [ }\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{`A}\label{page-test+u+package+++ml-module-Recent-module-type-PolyS-type-t.A}\\ -\ocamlinlinecode{| }\ocamlinlinecode{`B}\label{page-test+u+package+++ml-module-Recent-module-type-PolyS-type-t.B}\\ -\end{ocamltabular}% -\\ -\ocamlcodefragment{ ]}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ - - diff --git a/test/latex/expect/test_package+ml/Recent_impl.B.tex b/test/latex/expect/test_package+ml/Recent_impl.B.tex deleted file mode 100644 index 39d2de5adc..0000000000 --- a/test/latex/expect/test_package+ml/Recent_impl.B.tex +++ /dev/null @@ -1,7 +0,0 @@ -\section{Module \ocamlinlinecode{Recent\_\allowbreak{}impl.\allowbreak{}B}}\label{page-test+u+package+++ml-module-Recent+u+impl-module-B}% -\label{page-test+u+package+++ml-module-Recent+u+impl-module-B-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = }\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{B}}\label{page-test+u+package+++ml-module-Recent+u+impl-module-B-type-t.B}\\ -\end{ocamltabular}% -\\ - - diff --git a/test/latex/expect/test_package+ml/Recent_impl.tex b/test/latex/expect/test_package+ml/Recent_impl.tex deleted file mode 100644 index 88e37d72fa..0000000000 --- a/test/latex/expect/test_package+ml/Recent_impl.tex +++ /dev/null @@ -1,32 +0,0 @@ -\section{Module \ocamlinlinecode{Recent\_\allowbreak{}impl}}\label{page-test+u+package+++ml-module-Recent+u+impl}% -\label{page-test+u+package+++ml-module-Recent+u+impl-module-Foo}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Recent+u+impl-module-Foo]{\ocamlinlinecode{Foo}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Recent+u+impl-module-Foo-module-A}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Recent+u+impl-module-Foo-module-A]{\ocamlinlinecode{A}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Recent+u+impl-module-Foo-module-A-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = }\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A}}\label{page-test+u+package+++ml-module-Recent+u+impl-module-Foo-module-A-type-t.A}\\ -\end{ocamltabular}% -\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Recent+u+impl-module-Foo-module-B}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Recent+u+impl-module-Foo-module-B]{\ocamlinlinecode{B}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Recent+u+impl-module-Foo-module-B-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = }\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{B}}\label{page-test+u+package+++ml-module-Recent+u+impl-module-Foo-module-B-type-t.B}\\ -\end{ocamltabular}% -\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Recent+u+impl-module-B}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Recent+u+impl-module-B]{\ocamlinlinecode{B}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Recent+u+impl-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ -\label{page-test+u+package+++ml-module-Recent+u+impl-module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Recent+u+impl-module-type-S]{\ocamlinlinecode{S}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Recent+u+impl-module-type-S-module-F}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Recent+u+impl-module-type-S-module-F]{\ocamlinlinecode{F}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Parameters\label{parameters}}% -\label{page-test+u+package+++ml-module-Recent+u+impl-module-type-S-module-F-argument-1-+u+}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Recent+u+impl-module-type-S-module-F-argument-1-+u+]{\ocamlinlinecode{\_\allowbreak{}}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\subsubsection{Signature\label{signature}}% -\label{page-test+u+package+++ml-module-Recent+u+impl-module-type-S-module-F-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Recent+u+impl-module-type-S-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Recent+u+impl-module-type-S-module-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Recent+u+impl-module-type-S-val-f}\ocamlcodefragment{\ocamltag{keyword}{val} f : \hyperref[page-test+u+package+++ml-module-Recent+u+impl-module-type-S-module-F-type-t]{\ocamlinlinecode{F(X).\allowbreak{}t}}}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Recent+u+impl-module-B'}\ocamlcodefragment{\ocamltag{keyword}{module} B' = \hyperref[page-test+u+package+++ml-module-Recent+u+impl-module-Foo-module-B]{\ocamlinlinecode{Foo.\allowbreak{}B}}}\\ - -\input{test_package+ml/Recent_impl.B.tex} diff --git a/test/latex/expect/test_package+ml/Section.tex b/test/latex/expect/test_package+ml/Section.tex deleted file mode 100644 index 0298b3f415..0000000000 --- a/test/latex/expect/test_package+ml/Section.tex +++ /dev/null @@ -1,20 +0,0 @@ -\section{Module \ocamlinlinecode{Section}}\label{page-test+u+package+++ml-module-Section}% -This is the module comment. Eventually, sections won't be allowed in it. - -\subsection{Empty section\label{empty-section}}% -\subsection{Text only\label{text-only}}% -Foo bar. - -\subsection{Aside only\label{aside-only}}% -Foo bar. - -\subsection{Value only\label{value-only}}% -\label{page-test+u+package+++ml-module-Section-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\\ -\subsection{Empty section\label{empty-section}}% -\subsection{within a comment\label{within-a-comment}}% -\subsubsection{and one with a nested section\label{and-one-with-a-nested-section}}% -\subsection{\emph{This} \ocamlinlinecode{section} \bold{title} \textsubscript{has} \textsuperscript{markup}\label{this-section-title-has-markup}}% -But links are impossible thanks to the parser, so we never have trouble rendering a section title in a table of contents – no link will be nested inside another link. - - - diff --git a/test/latex/expect/test_package+ml/Stop.tex b/test/latex/expect/test_package+ml/Stop.tex deleted file mode 100644 index ff838bdcef..0000000000 --- a/test/latex/expect/test_package+ml/Stop.tex +++ /dev/null @@ -1,17 +0,0 @@ -\section{Module \ocamlinlinecode{Stop}}\label{page-test+u+package+++ml-module-Stop}% -This test cases exercises stop comments. - -\label{page-test+u+package+++ml-module-Stop-val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : int}\begin{ocamlindent}This is normal commented text.\end{ocamlindent}% -\medbreak -The next value is \ocamlinlinecode{bar}, and it should be missing from the documentation. There is also an entire module, \ocamlinlinecode{M}, which should also be hidden. It contains a nested stop comment, but that stop comment should not turn documentation back on in this outer module, because stop comments respect scope. - -Documentation is on again. - -Now, we have a nested module, and it has a stop comment between its two items. We want to see that the first item is displayed, but the second is missing, and the stop comment disables documenation only in that module, and not in this outer module. - -\label{page-test+u+package+++ml-module-Stop-module-N}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Stop-module-N]{\ocamlinlinecode{N}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Stop-module-N-val-quux}\ocamlcodefragment{\ocamltag{keyword}{val} quux : int}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Stop-val-lol}\ocamlcodefragment{\ocamltag{keyword}{val} lol : int}\\ - - diff --git a/test/latex/expect/test_package+ml/Type.tex b/test/latex/expect/test_package+ml/Type.tex deleted file mode 100644 index ec385789dd..0000000000 --- a/test/latex/expect/test_package+ml/Type.tex +++ /dev/null @@ -1,124 +0,0 @@ -\section{Module \ocamlinlinecode{Type}}\label{page-test+u+package+++ml-module-Type}% -\label{page-test+u+package+++ml-module-Type-type-abstract}\ocamlcodefragment{\ocamltag{keyword}{type} abstract}\begin{ocamlindent}Some \emph{documentation}.\end{ocamlindent}% -\medbreak -\label{page-test+u+package+++ml-module-Type-type-alias}\ocamlcodefragment{\ocamltag{keyword}{type} alias = int}\\ -\label{page-test+u+package+++ml-module-Type-type-private+u+}\ocamlcodefragment{\ocamltag{keyword}{type} private\_\allowbreak{} = \ocamltag{keyword}{private} int}\\ -\label{page-test+u+package+++ml-module-Type-type-constructor}\ocamlcodefragment{\ocamltag{keyword}{type} 'a constructor = \ocamltag{type-var}{'a}}\\ -\label{page-test+u+package+++ml-module-Type-type-arrow}\ocamlcodefragment{\ocamltag{keyword}{type} arrow = int \ocamltag{arrow}{$\rightarrow$} int}\\ -\label{page-test+u+package+++ml-module-Type-type-higher+u+order}\ocamlcodefragment{\ocamltag{keyword}{type} higher\_\allowbreak{}order = (int \ocamltag{arrow}{$\rightarrow$} int) \ocamltag{arrow}{$\rightarrow$} int}\\ -\label{page-test+u+package+++ml-module-Type-type-labeled}\ocamlcodefragment{\ocamltag{keyword}{type} labeled = l:int \ocamltag{arrow}{$\rightarrow$} int}\\ -\label{page-test+u+package+++ml-module-Type-type-optional}\ocamlcodefragment{\ocamltag{keyword}{type} optional = ?l:int \ocamltag{arrow}{$\rightarrow$} int}\\ -\label{page-test+u+package+++ml-module-Type-type-labeled+u+higher+u+order}\ocamlcodefragment{\ocamltag{keyword}{type} labeled\_\allowbreak{}higher\_\allowbreak{}order = (l:int \ocamltag{arrow}{$\rightarrow$} int) \ocamltag{arrow}{$\rightarrow$} (?l:int \ocamltag{arrow}{$\rightarrow$} int) \ocamltag{arrow}{$\rightarrow$} int}\\ -\label{page-test+u+package+++ml-module-Type-type-pair}\ocamlcodefragment{\ocamltag{keyword}{type} pair = int * int}\\ -\label{page-test+u+package+++ml-module-Type-type-parens+u+dropped}\ocamlcodefragment{\ocamltag{keyword}{type} parens\_\allowbreak{}dropped = int * int}\\ -\label{page-test+u+package+++ml-module-Type-type-triple}\ocamlcodefragment{\ocamltag{keyword}{type} triple = int * int * int}\\ -\label{page-test+u+package+++ml-module-Type-type-nested+u+pair}\ocamlcodefragment{\ocamltag{keyword}{type} nested\_\allowbreak{}pair = (int * int) * int}\\ -\label{page-test+u+package+++ml-module-Type-type-instance}\ocamlcodefragment{\ocamltag{keyword}{type} instance = int \hyperref[page-test+u+package+++ml-module-Type-type-constructor]{\ocamlinlinecode{constructor}}}\\ -\label{page-test+u+package+++ml-module-Type-type-long}\ocamlcodefragment{\ocamltag{keyword}{type} long = \hyperref[page-test+u+package+++ml-module-Type-type-labeled+u+higher+u+order]{\ocamlinlinecode{labeled\_\allowbreak{}higher\_\allowbreak{}order}} \ocamltag{arrow}{$\rightarrow$} [ `Bar | `Baz of \hyperref[page-test+u+package+++ml-module-Type-type-triple]{\ocamlinlinecode{triple}} ] \ocamltag{arrow}{$\rightarrow$} \hyperref[page-test+u+package+++ml-module-Type-type-pair]{\ocamlinlinecode{pair}} \ocamltag{arrow}{$\rightarrow$} \hyperref[page-test+u+package+++ml-module-Type-type-labeled]{\ocamlinlinecode{labeled}} \ocamltag{arrow}{$\rightarrow$} \hyperref[page-test+u+package+++ml-module-Type-type-higher+u+order]{\ocamlinlinecode{higher\_\allowbreak{}order}} \ocamltag{arrow}{$\rightarrow$} (string \ocamltag{arrow}{$\rightarrow$} int) \ocamltag{arrow}{$\rightarrow$} (int,\allowbreak{} float,\allowbreak{} char,\allowbreak{} string,\allowbreak{} char,\allowbreak{} unit) \hyperref[xref-unresolved]{\ocamlinlinecode{CamlinternalFormatBasics}}.\allowbreak{}fmtty \ocamltag{arrow}{$\rightarrow$} \hyperref[page-test+u+package+++ml-module-Type-type-nested+u+pair]{\ocamlinlinecode{nested\_\allowbreak{}pair}} \ocamltag{arrow}{$\rightarrow$} \hyperref[page-test+u+package+++ml-module-Type-type-arrow]{\ocamlinlinecode{arrow}} \ocamltag{arrow}{$\rightarrow$} string \ocamltag{arrow}{$\rightarrow$} \hyperref[page-test+u+package+++ml-module-Type-type-nested+u+pair]{\ocamlinlinecode{nested\_\allowbreak{}pair}} array}\\ -\label{page-test+u+package+++ml-module-Type-type-variant+u+e}\ocamlcodefragment{\ocamltag{keyword}{type} variant\_\allowbreak{}e = \{}\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{a : int;\allowbreak{}}\label{page-test+u+package+++ml-module-Type-type-variant+u+e.a}\\ -\end{ocamltabular}% -\\ -\ocamlcodefragment{\}}\\ -\label{page-test+u+package+++ml-module-Type-type-variant}\ocamlcodefragment{\ocamltag{keyword}{type} variant = }\\ -\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A}}\label{page-test+u+package+++ml-module-Type-type-variant.A}& \\ -\ocamlcodefragment{| \ocamltag{constructor}{B} \ocamltag{keyword}{of} int}\label{page-test+u+package+++ml-module-Type-type-variant.B}& \\ -\ocamlcodefragment{| \ocamltag{constructor}{C}}\label{page-test+u+package+++ml-module-Type-type-variant.C}& foo\\ -\ocamlcodefragment{| \ocamltag{constructor}{D}}\label{page-test+u+package+++ml-module-Type-type-variant.D}& \emph{bar}\\ -\ocamlcodefragment{| \ocamltag{constructor}{E} \ocamltag{keyword}{of} \hyperref[page-test+u+package+++ml-module-Type-type-variant+u+e]{\ocamlinlinecode{variant\_\allowbreak{}e}}}\label{page-test+u+package+++ml-module-Type-type-variant.E}& \\ -\end{ocamltabular}% -\\ -\label{page-test+u+package+++ml-module-Type-type-variant+u+c}\ocamlcodefragment{\ocamltag{keyword}{type} variant\_\allowbreak{}c = \{}\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{a : int;\allowbreak{}}\label{page-test+u+package+++ml-module-Type-type-variant+u+c.a}\\ -\end{ocamltabular}% -\\ -\ocamlcodefragment{\}}\\ -\label{page-test+u+package+++ml-module-Type-type-gadt}\ocamlcodefragment{\ocamltag{keyword}{type} \_\allowbreak{} gadt = }\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A} : int \hyperref[page-test+u+package+++ml-module-Type-type-gadt]{\ocamlinlinecode{gadt}}}\label{page-test+u+package+++ml-module-Type-type-gadt.A}\\ -\ocamlcodefragment{| \ocamltag{constructor}{B} : int \ocamltag{arrow}{$\rightarrow$} string \hyperref[page-test+u+package+++ml-module-Type-type-gadt]{\ocamlinlinecode{gadt}}}\label{page-test+u+package+++ml-module-Type-type-gadt.B}\\ -\ocamlcodefragment{| \ocamltag{constructor}{C} : \hyperref[page-test+u+package+++ml-module-Type-type-variant+u+c]{\ocamlinlinecode{variant\_\allowbreak{}c}} \ocamltag{arrow}{$\rightarrow$} unit \hyperref[page-test+u+package+++ml-module-Type-type-gadt]{\ocamlinlinecode{gadt}}}\label{page-test+u+package+++ml-module-Type-type-gadt.C}\\ -\end{ocamltabular}% -\\ -\label{page-test+u+package+++ml-module-Type-type-degenerate+u+gadt}\ocamlcodefragment{\ocamltag{keyword}{type} degenerate\_\allowbreak{}gadt = }\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A} : \hyperref[page-test+u+package+++ml-module-Type-type-degenerate+u+gadt]{\ocamlinlinecode{degenerate\_\allowbreak{}gadt}}}\label{page-test+u+package+++ml-module-Type-type-degenerate+u+gadt.A}\\ -\end{ocamltabular}% -\\ -\label{page-test+u+package+++ml-module-Type-type-private+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} private\_\allowbreak{}variant = \ocamltag{keyword}{private} }\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A}}\label{page-test+u+package+++ml-module-Type-type-private+u+variant.A}\\ -\end{ocamltabular}% -\\ -\label{page-test+u+package+++ml-module-Type-type-record}\ocamlcodefragment{\ocamltag{keyword}{type} record = \{}\\ -\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlinlinecode{a : int;\allowbreak{}}\label{page-test+u+package+++ml-module-Type-type-record.a}& \\ -\ocamlinlinecode{\ocamltag{keyword}{mutable} b : int;\allowbreak{}}\label{page-test+u+package+++ml-module-Type-type-record.b}& \\ -\ocamlinlinecode{c : int;\allowbreak{}}\label{page-test+u+package+++ml-module-Type-type-record.c}& foo\\ -\ocamlinlinecode{d : int;\allowbreak{}}\label{page-test+u+package+++ml-module-Type-type-record.d}& \emph{bar}\\ -\ocamlinlinecode{e : a.\allowbreak{} \ocamltag{type-var}{'a};\allowbreak{}}\label{page-test+u+package+++ml-module-Type-type-record.e}& \\ -\end{ocamltabular}% -\\ -\ocamlcodefragment{\}}\\ -\label{page-test+u+package+++ml-module-Type-type-polymorphic+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} polymorphic\_\allowbreak{}variant = [ }\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{`A}\label{page-test+u+package+++ml-module-Type-type-polymorphic+u+variant.A}\\ -\ocamlinlinecode{| }\ocamlinlinecode{`B \ocamltag{keyword}{of} int}\label{page-test+u+package+++ml-module-Type-type-polymorphic+u+variant.B}\\ -\ocamlinlinecode{| }\ocamlinlinecode{`C \ocamltag{keyword}{of} int * unit}\label{page-test+u+package+++ml-module-Type-type-polymorphic+u+variant.C}\\ -\ocamlinlinecode{| }\ocamlinlinecode{`D}\label{page-test+u+package+++ml-module-Type-type-polymorphic+u+variant.D}\\ -\end{ocamltabular}% -\\ -\ocamlcodefragment{ ]}\\ -\label{page-test+u+package+++ml-module-Type-type-polymorphic+u+variant+u+extension}\ocamlcodefragment{\ocamltag{keyword}{type} polymorphic\_\allowbreak{}variant\_\allowbreak{}extension = [ }\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{\hyperref[page-test+u+package+++ml-module-Type-type-polymorphic+u+variant]{\ocamlinlinecode{polymorphic\_\allowbreak{}variant}}}\label{page-test+u+package+++ml-module-Type-type-polymorphic+u+variant+u+extension.polymorphic+u+variant}\\ -\ocamlinlinecode{| }\ocamlinlinecode{`E}\label{page-test+u+package+++ml-module-Type-type-polymorphic+u+variant+u+extension.E}\\ -\end{ocamltabular}% -\\ -\ocamlcodefragment{ ]}\\ -\label{page-test+u+package+++ml-module-Type-type-nested+u+polymorphic+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} nested\_\allowbreak{}polymorphic\_\allowbreak{}variant = [ }\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{`A \ocamltag{keyword}{of} [ `B | `C ]}\label{page-test+u+package+++ml-module-Type-type-nested+u+polymorphic+u+variant.A}\\ -\end{ocamltabular}% -\\ -\ocamlcodefragment{ ]}\\ -\label{page-test+u+package+++ml-module-Type-type-private+u+extenion#row}\ocamlcodefragment{\ocamltag{keyword}{type} private\_\allowbreak{}extenion\#row}\\ -\label{page-test+u+package+++ml-module-Type-type-private+u+extenion}\ocamlcodefragment{\ocamltag{keyword}{and} private\_\allowbreak{}extenion = \ocamltag{keyword}{private} [> }\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{| }\ocamlinlinecode{\hyperref[page-test+u+package+++ml-module-Type-type-polymorphic+u+variant]{\ocamlinlinecode{polymorphic\_\allowbreak{}variant}}}\label{page-test+u+package+++ml-module-Type-type-private+u+extenion.polymorphic+u+variant}\\ -\end{ocamltabular}% -\\ -\ocamlcodefragment{ ]}\\ -\label{page-test+u+package+++ml-module-Type-type-object+u+}\ocamlcodefragment{\ocamltag{keyword}{type} object\_\allowbreak{} = < a : int;\allowbreak{} b : int;\allowbreak{} c : int;\allowbreak{} >}\\ -\label{page-test+u+package+++ml-module-Type-module-type-X}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Type-module-type-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{page-test+u+package+++ml-module-Type-module-type-X-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\ -\label{page-test+u+package+++ml-module-Type-module-type-X-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\ -\end{ocamlindent}% -\ocamlcodefragment{\ocamltag{keyword}{end}}\\ -\label{page-test+u+package+++ml-module-Type-type-module+u+}\ocamlcodefragment{\ocamltag{keyword}{type} module\_\allowbreak{} = (\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Type-module-type-X]{\ocamlinlinecode{X}})}\\ -\label{page-test+u+package+++ml-module-Type-type-module+u+substitution}\ocamlcodefragment{\ocamltag{keyword}{type} module\_\allowbreak{}substitution = (\ocamltag{keyword}{module} \hyperref[page-test+u+package+++ml-module-Type-module-type-X]{\ocamlinlinecode{X}} \ocamltag{keyword}{with} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Type-module-type-X-type-t]{\ocamlinlinecode{t}} = int \ocamltag{keyword}{and} \ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Type-module-type-X-type-u]{\ocamlinlinecode{u}} = unit)}\\ -\label{page-test+u+package+++ml-module-Type-type-covariant}\ocamlcodefragment{\ocamltag{keyword}{type} +'a covariant}\\ -\label{page-test+u+package+++ml-module-Type-type-contravariant}\ocamlcodefragment{\ocamltag{keyword}{type} -'a contravariant}\\ -\label{page-test+u+package+++ml-module-Type-type-bivariant}\ocamlcodefragment{\ocamltag{keyword}{type} \_\allowbreak{} bivariant = int}\\ -\label{page-test+u+package+++ml-module-Type-type-binary}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) binary}\\ -\label{page-test+u+package+++ml-module-Type-type-using+u+binary}\ocamlcodefragment{\ocamltag{keyword}{type} using\_\allowbreak{}binary = (int,\allowbreak{} int) \hyperref[page-test+u+package+++ml-module-Type-type-binary]{\ocamlinlinecode{binary}}}\\ -\label{page-test+u+package+++ml-module-Type-type-name}\ocamlcodefragment{\ocamltag{keyword}{type} 'custom name}\\ -\label{page-test+u+package+++ml-module-Type-type-constrained}\ocamlcodefragment{\ocamltag{keyword}{type} 'a constrained = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = int}\\ -\label{page-test+u+package+++ml-module-Type-type-exact+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a exact\_\allowbreak{}variant = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = [ `A | `B of int ]}\\ -\label{page-test+u+package+++ml-module-Type-type-lower+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a lower\_\allowbreak{}variant = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = [> `A | `B of int ]}\\ -\label{page-test+u+package+++ml-module-Type-type-any+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a any\_\allowbreak{}variant = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = [> ]}\\ -\label{page-test+u+package+++ml-module-Type-type-upper+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a upper\_\allowbreak{}variant = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = [< `A | `B of int ]}\\ -\label{page-test+u+package+++ml-module-Type-type-named+u+variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a named\_\allowbreak{}variant = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = [< \hyperref[page-test+u+package+++ml-module-Type-type-polymorphic+u+variant]{\ocamlinlinecode{polymorphic\_\allowbreak{}variant}} ]}\\ -\label{page-test+u+package+++ml-module-Type-type-exact+u+object}\ocamlcodefragment{\ocamltag{keyword}{type} 'a exact\_\allowbreak{}object = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = < a : int;\allowbreak{} b : int;\allowbreak{} >}\\ -\label{page-test+u+package+++ml-module-Type-type-lower+u+object}\ocamlcodefragment{\ocamltag{keyword}{type} 'a lower\_\allowbreak{}object = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = < a : int;\allowbreak{} b : int;\allowbreak{} .\allowbreak{}.\allowbreak{} >}\\ -\label{page-test+u+package+++ml-module-Type-type-poly+u+object}\ocamlcodefragment{\ocamltag{keyword}{type} 'a poly\_\allowbreak{}object = \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = < a : a.\allowbreak{} \ocamltag{type-var}{'a};\allowbreak{} >}\\ -\label{page-test+u+package+++ml-module-Type-type-double+u+constrained}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) double\_\allowbreak{}constrained = \ocamltag{type-var}{'a} * \ocamltag{type-var}{'b} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = int \ocamltag{keyword}{constraint} \ocamltag{type-var}{'b} = unit}\\ -\label{page-test+u+package+++ml-module-Type-type-as+u+}\ocamlcodefragment{\ocamltag{keyword}{type} as\_\allowbreak{} = int \ocamltag{keyword}{as} 'a * \ocamltag{type-var}{'a}}\\ -\label{page-test+u+package+++ml-module-Type-type-extensible}\ocamlcodefragment{\ocamltag{keyword}{type} extensible = .\allowbreak{}.\allowbreak{}}\\ -\label{page-test+u+package+++ml-module-Type-extension-decl-Extension}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[page-test+u+package+++ml-module-Type-type-extensible]{\ocamlinlinecode{extensible}} += }\\ -\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{Extension}}\label{page-test+u+package+++ml-module-Type-extension-Extension}& Documentation for \hyperref[page-test+u+package+++ml-module-Type-extension-Extension]{\ocamlinlinecode{\ocamlinlinecode{Extension}}[p\pageref*{page-test+u+package+++ml-module-Type-extension-Extension}]}.\\ -\ocamlcodefragment{| \ocamltag{extension}{Another\_\allowbreak{}extension}}\label{page-test+u+package+++ml-module-Type-extension-Another+u+extension}& Documentation for \hyperref[page-test+u+package+++ml-module-Type-extension-Another+u+extension]{\ocamlinlinecode{\ocamlinlinecode{Another\_\allowbreak{}extension}}[p\pageref*{page-test+u+package+++ml-module-Type-extension-Another+u+extension}]}.\\ -\end{ocamltabular}% -\\ -\label{page-test+u+package+++ml-module-Type-type-mutually}\ocamlcodefragment{\ocamltag{keyword}{type} mutually = }\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A} \ocamltag{keyword}{of} \hyperref[page-test+u+package+++ml-module-Type-type-recursive]{\ocamlinlinecode{recursive}}}\label{page-test+u+package+++ml-module-Type-type-mutually.A}\\ -\end{ocamltabular}% -\\ -\label{page-test+u+package+++ml-module-Type-type-recursive}\ocamlcodefragment{\ocamltag{keyword}{and} recursive = }\\ -\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{B} \ocamltag{keyword}{of} \hyperref[page-test+u+package+++ml-module-Type-type-mutually]{\ocamlinlinecode{mutually}}}\label{page-test+u+package+++ml-module-Type-type-recursive.B}\\ -\end{ocamltabular}% -\\ -\label{page-test+u+package+++ml-module-Type-exception-Foo}\ocamlcodefragment{\ocamltag{keyword}{exception} \ocamltag{exception}{Foo} \ocamltag{keyword}{of} int * int}\\ - - diff --git a/test/latex/expect/test_package+ml/Val.tex b/test/latex/expect/test_package+ml/Val.tex deleted file mode 100644 index 090dd72515..0000000000 --- a/test/latex/expect/test_package+ml/Val.tex +++ /dev/null @@ -1,8 +0,0 @@ -\section{Module \ocamlinlinecode{Val}}\label{page-test+u+package+++ml-module-Val}% -\label{page-test+u+package+++ml-module-Val-val-documented}\ocamlcodefragment{\ocamltag{keyword}{val} documented : unit}\begin{ocamlindent}Foo.\end{ocamlindent}% -\medbreak -\label{page-test+u+package+++ml-module-Val-val-undocumented}\ocamlcodefragment{\ocamltag{keyword}{val} undocumented : unit}\\ -\label{page-test+u+package+++ml-module-Val-val-documented+u+above}\ocamlcodefragment{\ocamltag{keyword}{val} documented\_\allowbreak{}above : unit}\begin{ocamlindent}Bar.\end{ocamlindent}% -\medbreak - - diff --git a/test/latex/expect/test_package+ml/mld.tex b/test/latex/expect/test_package+ml/mld.tex deleted file mode 100644 index 7382d14fb8..0000000000 --- a/test/latex/expect/test_package+ml/mld.tex +++ /dev/null @@ -1,31 +0,0 @@ -\section{Mld Page\label{mld-page}}\label{page-test+u+package+++ml-leaf-page-mld}% -This is an \ocamlinlinecode{.\allowbreak{}mld} file. It doesn't have an auto-generated title, like modules and other pages generated fully by odoc do. - -It will have a TOC generated from section headings. - -\subsection{Section\label{section}}% -This is a section. - -Another paragraph in section. - -\subsection{Another section\label{another-section}}% -This is another section. - -Another paragraph in section 2. - -\subsubsection{Subsection\label{subsection}}% -This is a subsection. - -Another paragraph in subsection. - -Yet another paragraph in subsection. - -\subsubsection{Another Subsection\label{another-subsection}}% -This is another subsection. - -Another paragraph in subsection 2. - -Yet another paragraph in subsection 2. - - - diff --git a/test/latex/expect/visualizer.tex b/test/latex/expect/visualizer.tex deleted file mode 100644 index 35b487a614..0000000000 --- a/test/latex/expect/visualizer.tex +++ /dev/null @@ -1,90 +0,0 @@ -% Helper files for transforming the test files into a pdf -% compile with -% TEXINPUTS=${TEXINPUTS}:test_package+ml/ xelatex visualizer.tex -% -\documentclass{book} - -\usepackage{fontspec} -\usepackage{xunicode} - -\usepackage{changepage} -\usepackage{longtable} -\usepackage{listings} -\usepackage[strings]{underscore} - -\usepackage[colorlinks=true]{hyperref} -\usepackage{color} -\usepackage{lmodern} -\usepackage[T1]{fontenc} - -\newcommand{\ocamlcodefragment}[1]{{\ttfamily\setlength{\parindent}{0cm}% -\raggedright#1}} -\newcommand{\ocamlinlinecode}[1]{{\ttfamily#1}} -\newcommand{\bold}[1]{{\bfseries#1}} -\newenvironment{ocamlexception}{\bfseries}{} -\newenvironment{ocamlextension}{\bfseries}{} - -\newenvironment{ocamlkeyword}{\bfseries}{} - -\newenvironment{ocamlconstructor}{\bfseries}{} -\newenvironment{ocamltype-var}{\itshape\ttfamily}{} - -\newcommand{\ocamlhighlight}{\bfseries\uline} -\newcommand{\ocamlerror}{\bfseries} -\newcommand{\ocamlwarning}{\bfseries} - -\newcommand{\ocamltag}[2]{\begin{ocaml#1}#2\end{ocaml#1}} - -\definecolor{lightgray}{gray}{0.97} -\definecolor{gray}{gray}{0.5} -\newcommand{\ocamlcomment}{\color{gray}\normalfont\small} -\newcommand{\ocamlstring}{\color{gray}\bfseries} -\newenvironment{ocamlindent}{\begin{adjustwidth}{2em}{0pt}}{\end{adjustwidth}} -\newenvironment{ocamltabular}[1]{\begin{tabular}{#1}}% -{\end{tabular}} - -\lstnewenvironment{ocamlcodeblock}{ - \lstset{ - backgroundcolor = \color{lightgray}, - basicstyle=\ttfamily, - showstringspaces=false, - language=caml, - escapeinside={$}{$}, - columns=fullflexible, - stringstyle=\ocamlstring, - commentstyle=\ocamlcomment, - keepspaces=true, - keywordstyle=\ocamlkeyword, - moredelim=[is][\ocamlhighlight]{<<}{>>}, - moredelim=[s][\ocamlstring]{\{|}{|\}}, - moredelim=[s][\ocamlstring]{\{delimiter|}{|delimiter\}}, - keywords={[2]{val,initializer,nonrec}}, keywordstyle={[2]\ocamlkeyword}, - belowskip=0\baselineskip, - upquote=true, - literate={'"'}{\textquotesingle "\textquotesingle}3 - {'\\"'}{\textquotesingle \textbackslash"\textquotesingle}4, - } - }{} - - \newcommand{\inputchapter}[1]{\chapter{#1} - \input{#1}} - - \begin{document} -\inputchapter{Recent} -\inputchapter{Recent_impl} -\inputchapter{Val} -\inputchapter{Markup} -\inputchapter{Section} -\inputchapter{Module} -\inputchapter{Include} -\inputchapter{Include2} -\inputchapter{Mld} -\inputchapter{Nested} -\inputchapter{External} -\inputchapter{Functor} -\inputchapter{Class} -\inputchapter{Stop} -\inputchapter{Bugs} -\inputchapter{Bugs_pre_410} -\inputchapter{Alias} -\end{document} diff --git a/test/latex/test.ml b/test/latex/test.ml deleted file mode 100644 index e0c4b137bc..0000000000 --- a/test/latex/test.ml +++ /dev/null @@ -1,238 +0,0 @@ -open Printf - -(* Utils *) - -let ( // ) = Filename.concat - -let command label = - Printf.ksprintf (fun s -> - let exit_code = Sys.command s in - if exit_code <> 0 then - Alcotest.failf "'%s' exited with %i" label exit_code) - -(* Filename.extension is only available on 4.04. *) -module Filename = struct - include Filename - - let extension filename = - let dot_index = String.rindex filename '.' in - String.sub filename dot_index (String.length filename - dot_index) -end - -(* Testing environment *) - -module Env = struct - let package = "test_package" - - let odoc = "../../src/odoc/bin/main.exe" - - let path ?(from_root = false) = function - | `scratch when from_root -> "_build/default/test/latex/_scratch" - | `scratch -> "_scratch" - | `expect when from_root -> "test/latex/expect" - | `expect -> "expect" - | `cases when from_root -> "test/cases" - | `cases -> "../cases" - - let init () = Unix.mkdir (path `scratch) 0o755 -end - -(* Test case type and helpers *) - -(* A test case is a description of an input source file with a specific set of - options to be tested. Each test case results in a unique generated output to - be compared with an actually produced one. - - All paths defined in this module are relative to the build directory. *) -module Case = struct - type t = { - name : string; - kind : [ `mli | `mld | `ml ]; - syntax : [ `ml | `re ]; - outputs : string list; - } - - let make ?(syntax = `ml) (input, outputs) = - let name = Filename.chop_extension input in - let kind = - match Filename.extension input with - | ".mli" -> `mli - | ".mld" -> `mld - | ".ml" -> `ml - | _ -> - invalid_arg (sprintf "Expected mli, mld, or ml files, got %s" input) - in - { name; kind; syntax; outputs } - - let name case = case.name - - let kind case = case.kind - - let string_of_syntax = function `re -> "re" | `ml -> "ml" - - (* The package name is enriched with test case options. *) - let package case = - let opts = [ string_of_syntax case.syntax ] in - let opts = String.concat "," (List.sort compare opts) in - Env.package ^ "+" ^ opts - - let cmi_file case = Env.path `scratch // (case.name ^ ".cmi") - - let cmti_file case = Env.path `scratch // (case.name ^ ".cmti") - - let cmo_file case = Env.path `scratch // (case.name ^ ".cmo") - - let cmt_file case = Env.path `scratch // (case.name ^ ".cmt") - - let odoc_file case = - match case.kind with - | `mli | `ml -> Env.path `scratch // (case.name ^ ".odoc") - | `mld -> Env.path `scratch // ("page-" ^ case.name ^ ".odoc") - - let source_file case = - match case.kind with - | `mli -> (Env.path `cases // case.name) ^ ".mli" - | `mld -> (Env.path `cases // case.name) ^ ".mld" - | `ml -> (Env.path `cases // case.name) ^ ".ml" - - let outputs case = List.map (fun o -> package case // o) case.outputs -end - -let generate_latex case = - match Case.kind case with - | `mli -> - command "ocamlfind c" "ocamlfind c -bin-annot -o %s -c %s" - (Case.cmi_file case) (Case.source_file case); - - command "odoc compile" "%s compile --package=%s %s" Env.odoc - (Case.package case) (Case.cmti_file case); - - command "odoc latex" "%s latex --syntax=%s --output-dir=%s %s" Env.odoc - (Case.string_of_syntax case.syntax) - (Env.path `scratch) - (Case.odoc_file case) - | `mld -> - command "odoc compile" "%s compile --package=%s -o %s %s" Env.odoc - (Case.package case) (Case.odoc_file case) (Case.source_file case); - - command "odoc latex" "%s latex --output-dir=%s %s" Env.odoc - (Env.path `scratch) - (Case.odoc_file case) - | `ml -> - command "ocamlfind c" "ocamlfind c -bin-annot -o %s -c %s" - (Case.cmo_file case) (Case.source_file case); - - command "odoc compile" "%s compile --package=%s %s" Env.odoc - (Case.package case) (Case.cmt_file case); - - command "odoc latex" "%s latex --syntax=%s --output-dir=%s %s" Env.odoc - (Case.string_of_syntax case.syntax) - (Env.path `scratch) - (Case.odoc_file case) - -let diff = - (* Alcotest will run all tests. We need to know when something fails for the - first time to stop diffing and generating promotion files. *) - let already_failed = ref false in - fun output -> - let actual_file = Env.path `scratch // output in - let expected_file = Env.path `expect // output in - let cmd = sprintf "diff -N -u -b %s %s" expected_file actual_file in - match Sys.command cmd with - | 0 -> () - | 1 when !already_failed -> - (* Don't run diff for other failing tests as only one at time is shown. *) - Alcotest.fail "generated latex files should match expected" - | 1 -> - (* If the diff command exits with 1, the two MAN files are different. - diff has already written its output to STDOUT. - - Also provide the command for overwriting the expected output with the - actual output, in case it is the actual output that is correct. - The paths are defined relative to the project's root. *) - let root_actual_file = Env.path `scratch ~from_root:true // output in - let root_expected_file = Env.path `expect ~from_root:true // output in - let write_file filename data = - let oc = open_out filename in - output_string oc data; - close_out oc - in - write_file Env.(path `scratch // "actual") root_actual_file; - write_file Env.(path `scratch // "expected") root_expected_file; - - prerr_endline "\nTo promote the actual output to expected, run:"; - Printf.eprintf "cp `cat %s` `cat %s` && make test\n\n" - Env.(path ~from_root:true `scratch // "actual") - Env.(path ~from_root:true `scratch // "expected"); - - already_failed := true; - Alcotest.fail "generated latex files should match expected" - | exit_code -> Alcotest.failf "'diff' exited with %i" exit_code - -let make_test_case ?syntax case = - let case = Case.make ?syntax case in - let run () = - (* Compile the source file and generate latex files. *) - generate_latex case; - - List.iter diff (Case.outputs case) - in - (Case.name case, `Slow, run) - -let source_files_all = - [ - ("val.mli", [ "Val.tex" ]); - ("markup.mli", [ "Markup.tex" ]); - ("section.mli", [ "Section.tex" ]); - ("module.mli", [ "Module.tex" ]); - ("interlude.mli", [ "Interlude.tex" ]); - ("include.mli", [ "Include.tex" ]); - ("include2.ml", [ "Include2.tex" ]); - ("include_sections.mli", [ "Include_sections.tex" ]); - ("mld.mld", [ "mld.tex" ]); - ( "nested.mli", - [ "Nested.tex"; "Nested.F.tex"; "Nested.z.tex"; "Nested.inherits.tex" ] ); - ("type.mli", [ "Type.tex" ]); - ("external.mli", [ "External.tex" ]); - ( "functor.mli", - [ - "Functor.tex"; - "Functor.F1.tex"; - "Functor.F2.tex"; - "Functor.F3.tex"; - "Functor.F4.tex"; - ] ); - ("class.mli", [ "Class.tex" ]); - ("stop.mli", [ "Stop.tex" ]); - ("bugs.ml", [ "Bugs.tex" ]); - ("alias.ml", [ "Alias.tex"; "Alias.X.tex" ]); - ] - -let source_files_post408 = - [ - ("recent.mli", [ "Recent.tex" ]); - ("recent_impl.ml", [ "Recent_impl.tex"; "Recent_impl.B.tex" ]); - ] - -let source_files_pre410 = [ ("bugs_pre_410.ml", [ "Bugs_pre_410.tex" ]) ] - -let source_files = - let cur = - Astring.String.cuts ~sep:"." Sys.ocaml_version - |> List.map (fun i -> try Some (int_of_string i) with _ -> None) - in - match cur with - | Some major :: Some minor :: _ -> - List.concat - [ - (if major = 4 && minor < 10 then source_files_pre410 else []); - (if major = 4 && minor > 8 then source_files_post408 else []); - source_files_all; - ] - | _ -> source_files_all - -let () = - Env.init (); - - Alcotest.run "latex" - [ ("latex_ml", List.map (make_test_case ~syntax:`ml) source_files) ] diff --git a/test/man/dune b/test/man/dune deleted file mode 100644 index 0ddf0a06f1..0000000000 --- a/test/man/dune +++ /dev/null @@ -1,13 +0,0 @@ -(executable - (name test) - (libraries alcotest)) - -(rule - (alias runtest) - (action - (run %{exe:test.exe})) - (deps - test.exe - %{workspace_root}/src/odoc/bin/main.exe - (source_tree ../cases) - (source_tree expect))) diff --git a/test/man/expect/test_package+ml/Alias.3o b/test/man/expect/test_package+ml/Alias.3o deleted file mode 100644 index d4b883d5bf..0000000000 --- a/test/man/expect/test_package+ml/Alias.3o +++ /dev/null @@ -1,16 +0,0 @@ - -.TH Alias 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Alias -.SH Synopsis -.sp -.in 2 -\fBModule Alias\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]module\fR Foo__X : \f[CB]sig\fR \.\.\. \f[CB]end\fR -.sp -\f[CB]module\fR X : \f[CB]sig\fR \.\.\. \f[CB]end\fR diff --git a/test/man/expect/test_package+ml/Alias.X.3o b/test/man/expect/test_package+ml/Alias.X.3o deleted file mode 100644 index 53b5e1bf7d..0000000000 --- a/test/man/expect/test_package+ml/Alias.X.3o +++ /dev/null @@ -1,20 +0,0 @@ - -.TH X 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Alias\.X -.SH Synopsis -.sp -.in 2 -\fBModule Alias\.X\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]type\fR t = int -.fi -.br -.ti +2 -Module Foo__X documentation\. This should appear in the documentation for the alias to this module 'X' -.nf - diff --git a/test/man/expect/test_package+ml/Bugs.3o b/test/man/expect/test_package+ml/Bugs.3o deleted file mode 100644 index d9d2b60fd2..0000000000 --- a/test/man/expect/test_package+ml/Bugs.3o +++ /dev/null @@ -1,26 +0,0 @@ - -.TH Bugs 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Bugs -.SH Synopsis -.sp -.in 2 -\fBModule Bugs\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]type\fR 'a opt = \f[CB]'a\fR option -.sp -\f[CB]val\fR foo : ?bar:\f[CB]'a\fR \f[CB]\->\fR unit \f[CB]\->\fR unit -.fi -.br -.ti +2 -Triggers an assertion failure when -.UR https://github.com/ocaml/odoc/issues/101 -https://github\.com/ocaml/odoc/issues/101 -.UE - is not fixed\. -.nf - diff --git a/test/man/expect/test_package+ml/Bugs_pre_410.3o b/test/man/expect/test_package+ml/Bugs_pre_410.3o deleted file mode 100644 index 13eb8be101..0000000000 --- a/test/man/expect/test_package+ml/Bugs_pre_410.3o +++ /dev/null @@ -1,26 +0,0 @@ - -.TH Bugs_pre_410 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Bugs_pre_410 -.SH Synopsis -.sp -.in 2 -\fBModule Bugs_pre_410\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]type\fR 'a opt' = int option -.sp -\f[CB]val\fR foo' : ?bar:\f[CB]'a\fR \f[CB]\->\fR unit \f[CB]\->\fR unit -.fi -.br -.ti +2 -Similar to Bugs, but the printed type of ~bar should be int, not 'a\. This probably requires fixing in the compiler\. See -.UR https://github.com/ocaml/odoc/pull/230#issuecomment-433226807 -https://github\.com/ocaml/odoc/pull/230#issuecomment-433226807 -.UE -\. -.nf - diff --git a/test/man/expect/test_package+ml/Class.3o b/test/man/expect/test_package+ml/Class.3o deleted file mode 100644 index 0f704875b6..0000000000 --- a/test/man/expect/test_package+ml/Class.3o +++ /dev/null @@ -1,30 +0,0 @@ - -.TH Class 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Class -.SH Synopsis -.sp -.in 2 -\fBModule Class\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]class\fR \f[CB]type\fR empty = \f[CB]object\fR \f[CB]end\fR -.sp -\f[CB]class\fR \f[CB]type\fR mutually = \f[CB]object\fR \f[CB]end\fR -.sp -\f[CB]class\fR \f[CB]type\fR recursive = \f[CB]object\fR \f[CB]end\fR -.sp -\f[CB]class\fR mutually' : mutually -.sp -\f[CB]class\fR recursive' : recursive -.sp -\f[CB]class\fR \f[CB]type\fR \f[CB]virtual\fR empty_virtual = \f[CB]object\fR \f[CB]end\fR -.sp -\f[CB]class\fR \f[CB]virtual\fR empty_virtual' : empty -.sp -\f[CB]class\fR \f[CB]type\fR 'a polymorphic = \f[CB]object\fR \f[CB]end\fR -.sp -\f[CB]class\fR 'a polymorphic' : \f[CB]'a\fR polymorphic diff --git a/test/man/expect/test_package+ml/External.3o b/test/man/expect/test_package+ml/External.3o deleted file mode 100644 index ad60ecb72b..0000000000 --- a/test/man/expect/test_package+ml/External.3o +++ /dev/null @@ -1,20 +0,0 @@ - -.TH External 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.External -.SH Synopsis -.sp -.in 2 -\fBModule External\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]val\fR foo : unit \f[CB]\->\fR unit -.fi -.br -.ti +2 -Foo bar\. -.nf - diff --git a/test/man/expect/test_package+ml/Functor.3o b/test/man/expect/test_package+ml/Functor.3o deleted file mode 100644 index c384b7bf54..0000000000 --- a/test/man/expect/test_package+ml/Functor.3o +++ /dev/null @@ -1,53 +0,0 @@ - -.TH Functor 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Functor -.SH Synopsis -.sp -.in 2 -\fBModule Functor\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR t -.br -\f[CB]end\fR -.sp -\f[CB]module\fR \f[CB]type\fR S1 = \f[CB]sig\fR -.br -.ti +2 -.sp -.ti +2 -\fB1\.1 Parameters\fR -.sp -.ti +2 -\f[CB]module\fR _ : \f[CB]sig\fR -.br -.ti +4 -\f[CB]type\fR t -.br -.ti +2 -\f[CB]end\fR -.sp -.ti +2 -\fB1\.2 Signature\fR -.sp -.ti +2 -\f[CB]type\fR t -.br -\f[CB]end\fR -.sp -\f[CB]module\fR F1 (Arg : S) : S -.sp -\f[CB]module\fR F2 (Arg : S) : S \f[CB]with\fR \f[CB]type\fR t = Arg\.t -.sp -\f[CB]module\fR F3 (Arg : S) : \f[CB]sig\fR \.\.\. \f[CB]end\fR -.sp -\f[CB]module\fR F4 (Arg : S) : S -.sp -\f[CB]module\fR F5 () : S diff --git a/test/man/expect/test_package+ml/Functor.F1.3o b/test/man/expect/test_package+ml/Functor.F1.3o deleted file mode 100644 index 0834feb5d1..0000000000 --- a/test/man/expect/test_package+ml/Functor.F1.3o +++ /dev/null @@ -1,30 +0,0 @@ - -.TH F1 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Functor\.F1 -.SH Synopsis -.sp -.in 2 -\fBModule Functor\.F1\fR -.in -.sp -.SH Documentation -.sp -.nf -.sp -.in 3 -\fB1 Parameters\fR -.in -.sp -\f[CB]module\fR Arg : \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR t -.br -\f[CB]end\fR -.sp -.in 3 -\fB2 Signature\fR -.in -.sp -\f[CB]type\fR t diff --git a/test/man/expect/test_package+ml/Functor.F2.3o b/test/man/expect/test_package+ml/Functor.F2.3o deleted file mode 100644 index f236ec8741..0000000000 --- a/test/man/expect/test_package+ml/Functor.F2.3o +++ /dev/null @@ -1,30 +0,0 @@ - -.TH F2 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Functor\.F2 -.SH Synopsis -.sp -.in 2 -\fBModule Functor\.F2\fR -.in -.sp -.SH Documentation -.sp -.nf -.sp -.in 3 -\fB1 Parameters\fR -.in -.sp -\f[CB]module\fR Arg : \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR t -.br -\f[CB]end\fR -.sp -.in 3 -\fB2 Signature\fR -.in -.sp -\f[CB]type\fR t = Arg\.t diff --git a/test/man/expect/test_package+ml/Functor.F3.3o b/test/man/expect/test_package+ml/Functor.F3.3o deleted file mode 100644 index 36ad230b97..0000000000 --- a/test/man/expect/test_package+ml/Functor.F3.3o +++ /dev/null @@ -1,30 +0,0 @@ - -.TH F3 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Functor\.F3 -.SH Synopsis -.sp -.in 2 -\fBModule Functor\.F3\fR -.in -.sp -.SH Documentation -.sp -.nf -.sp -.in 3 -\fB1 Parameters\fR -.in -.sp -\f[CB]module\fR Arg : \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR t -.br -\f[CB]end\fR -.sp -.in 3 -\fB2 Signature\fR -.in -.sp -\f[CB]type\fR t = Arg\.t diff --git a/test/man/expect/test_package+ml/Functor.F4.3o b/test/man/expect/test_package+ml/Functor.F4.3o deleted file mode 100644 index 2f754b4961..0000000000 --- a/test/man/expect/test_package+ml/Functor.F4.3o +++ /dev/null @@ -1,30 +0,0 @@ - -.TH F4 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Functor\.F4 -.SH Synopsis -.sp -.in 2 -\fBModule Functor\.F4\fR -.in -.sp -.SH Documentation -.sp -.nf -.sp -.in 3 -\fB1 Parameters\fR -.in -.sp -\f[CB]module\fR Arg : \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR t -.br -\f[CB]end\fR -.sp -.in 3 -\fB2 Signature\fR -.in -.sp -\f[CB]type\fR t diff --git a/test/man/expect/test_package+ml/Include.3o b/test/man/expect/test_package+ml/Include.3o deleted file mode 100644 index 4013eee3b9..0000000000 --- a/test/man/expect/test_package+ml/Include.3o +++ /dev/null @@ -1,71 +0,0 @@ - -.TH Include 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Include -.SH Synopsis -.sp -.in 2 -\fBModule Include\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]module\fR \f[CB]type\fR Not_inlined = \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR t -.br -\f[CB]end\fR -.sp -\f[CB]type\fR t -.sp -\f[CB]module\fR \f[CB]type\fR Inlined = \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR u -.br -\f[CB]end\fR -.sp -\f[CB]type\fR u -.sp -\f[CB]module\fR \f[CB]type\fR Not_inlined_and_closed = \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR v -.br -\f[CB]end\fR -.sp -\f[CB]include\fR Not_inlined_and_closed -.sp -\f[CB]module\fR \f[CB]type\fR Not_inlined_and_opened = \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR w -.br -\f[CB]end\fR -.sp -\f[CB]type\fR w -.sp -\f[CB]module\fR \f[CB]type\fR Inherent_Module = \f[CB]sig\fR -.br -.ti +2 -\f[CB]val\fR a : t -.br -\f[CB]end\fR -.sp -\f[CB]val\fR a : t -.sp -\f[CB]module\fR \f[CB]type\fR Dorminant_Module = \f[CB]sig\fR -.br -.ti +2 -\f[CB]val\fR a : t -.sp -.ti +2 -\f[CB]val\fR a : u -.br -\f[CB]end\fR -.sp -\f[CB]val\fR a : t -.sp -\f[CB]val\fR a : u diff --git a/test/man/expect/test_package+ml/Include2.3o b/test/man/expect/test_package+ml/Include2.3o deleted file mode 100644 index 7a146a155f..0000000000 --- a/test/man/expect/test_package+ml/Include2.3o +++ /dev/null @@ -1,41 +0,0 @@ - -.TH Include2 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Include2 -.SH Synopsis -.sp -.in 2 -\fBModule Include2\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]module\fR X : \f[CB]sig\fR \.\.\. \f[CB]end\fR -.fi -.br -.ti +2 -Comment about X that should not appear when including X below\. -.nf -.sp -.fi -Comment about X that should not appear when including X below\. -.nf -.sp -\f[CB]type\fR t = int -.sp -\f[CB]module\fR Y : \f[CB]sig\fR \.\.\. \f[CB]end\fR -.fi -.br -.ti +2 -Top-comment of Y\. -.nf -.sp -\f[CB]module\fR Y_include_synopsis : \f[CB]sig\fR \.\.\. \f[CB]end\fR -.fi -.br -.ti +2 -The include Y below should have the synopsis from Y's top-comment attached to it\. -.nf -.sp -\f[CB]module\fR Y_include_doc : \f[CB]sig\fR \.\.\. \f[CB]end\fR diff --git a/test/man/expect/test_package+ml/Include_sections.3o b/test/man/expect/test_package+ml/Include_sections.3o deleted file mode 100644 index d5c2a51b2d..0000000000 --- a/test/man/expect/test_package+ml/Include_sections.3o +++ /dev/null @@ -1,204 +0,0 @@ - -.TH Include_sections 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Include_sections -.SH Synopsis -.sp -.in 2 -\fBModule Include_sections\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]module\fR \f[CB]type\fR Something = \f[CB]sig\fR -.br -.ti +2 -\f[CB]val\fR something : unit -.sp -.ti +2 -\fB1\.1 Something 1\fR -.sp -.ti +2 -.fi -foo -.nf -.sp -.ti +2 -\f[CB]val\fR foo : unit -.sp -.ti +2 -\fB1\.1\.1 Something 2\fR -.sp -.ti +2 -\f[CB]val\fR bar : unit -.fi -.br -.ti +4 -foo bar -.nf -.sp -.ti +2 -\fB1\.2 Something 1-bis\fR -.sp -.ti +2 -.fi -Some text\. -.nf - -.br -\f[CB]end\fR -.fi -.br -.ti +2 -A module type\. -.nf -.sp -.fi -Let's include \f[CI]Something\fR once -.nf -.sp -\f[CB]val\fR something : unit -.sp -.in 3 -\fB2 Something 1\fR -.in -.sp -.fi -foo -.nf -.sp -\f[CB]val\fR foo : unit -.sp -.in 4 -\fB2\.1 Something 2\fR -.in -.sp -\f[CB]val\fR bar : unit -.fi -.br -.ti +2 -foo bar -.nf -.sp -.in 3 -\fB3 Something 1-bis\fR -.in -.sp -.fi -Some text\. -.nf -.sp -.in 3 -\fB4 Second include\fR -.in -.sp -.fi -Let's include \f[CI]Something\fR a second time: the heading level should be shift here\. -.nf -.sp -\f[CB]val\fR something : unit -.sp -.in 4 -\fB4\.1 Something 1\fR -.in -.sp -.fi -foo -.nf -.sp -\f[CB]val\fR foo : unit -.sp -.in 5 -\fB4\.1\.1 Something 2\fR -.in -.sp -\f[CB]val\fR bar : unit -.fi -.br -.ti +2 -foo bar -.nf -.sp -.in 4 -\fB4\.2 Something 1-bis\fR -.in -.sp -.fi -Some text\. -.nf -.sp -.in 4 -\fB4\.3 Third include\fR -.in -.sp -.fi -Shifted some more\. -.nf -.sp -\f[CB]val\fR something : unit -.sp -.in 5 -\fB4\.3\.1 Something 1\fR -.in -.sp -.fi -foo -.nf -.sp -\f[CB]val\fR foo : unit -.sp -.in 6 -\fBSomething 2\fR -.in -.sp -\f[CB]val\fR bar : unit -.fi -.br -.ti +2 -foo bar -.nf -.sp -.in 5 -\fB4\.3\.2 Something 1-bis\fR -.in -.sp -.fi -Some text\. -.nf -.sp -.fi -And let's include it again, but without inlining it this time: the ToC shouldn't grow\. -.nf -.sp -\f[CB]val\fR something : unit -.sp -.in 5 -\fB4\.3\.3 Something 1\fR -.in -.sp -.fi -foo -.nf -.sp -\f[CB]val\fR foo : unit -.sp -.in 6 -\fBSomething 2\fR -.in -.sp -\f[CB]val\fR bar : unit -.fi -.br -.ti +2 -foo bar -.nf -.sp -.in 5 -\fB4\.3\.4 Something 1-bis\fR -.in -.sp -.fi -Some text\. -.nf - diff --git a/test/man/expect/test_package+ml/Interlude.3o b/test/man/expect/test_package+ml/Interlude.3o deleted file mode 100644 index 2cb1d14aa7..0000000000 --- a/test/man/expect/test_package+ml/Interlude.3o +++ /dev/null @@ -1,54 +0,0 @@ - -.TH Interlude 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Interlude -.SH Synopsis -.sp -.in 2 -\fBModule Interlude\fR -.in -.sp -.fi -This is the comment associated to the module\. -.nf -.SH Documentation -.sp -.nf -.fi -Some separate stray text at the top of the module\. -.nf -.sp -\f[CB]val\fR foo : unit -.fi -.br -.ti +2 -Foo\. -.nf -.sp -.fi -Some stray text that is not associated with any signature item\. -.sp -It has multiple paragraphs\. -.nf -.sp -.fi -A separate block of stray text, adjacent to the preceding one\. -.nf -.sp -\f[CB]val\fR bar : unit -.fi -.br -.ti +2 -Bar\. -.nf -.sp -\f[CB]val\fR multiple : unit -.sp -\f[CB]val\fR signature : unit -.sp -\f[CB]val\fR items : unit -.sp -.fi -Stray text at the bottom of the module\. -.nf - diff --git a/test/man/expect/test_package+ml/Markup.3o b/test/man/expect/test_package+ml/Markup.3o deleted file mode 100644 index b1f56faa50..0000000000 --- a/test/man/expect/test_package+ml/Markup.3o +++ /dev/null @@ -1,279 +0,0 @@ - -.TH Markup 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Markup -.SH Synopsis -.sp -.in 2 -\fBModule Markup\fR -.in -.sp -.fi -Here, we test the rendering of comment markup\. -.nf -.SH Documentation -.sp -.nf -.sp -.in 3 -\fB1 Sections\fR -.in -.sp -.fi -Let's get these done first, because sections will be used to break up the rest of this test\. -.sp -Besides the section heading above, there are also -.nf -.sp -.in 4 -\fB1\.1 Subsection headings\fR -.in -.sp -.fi -and -.nf -.sp -.in 5 -\fB1\.1\.1 Sub-subsection headings\fR -.in -.sp -.fi -but odoc has banned deeper headings\. There are also title headings, but they are only allowed in mld files\. -.nf -.sp -.in 5 -\fB1\.1\.2 Anchors\fR -.in -.sp -.fi -Sections can have attached \f[CI]Anchors\fR, and it is possible to \f[CI]link\fR to them\. Links to section headers should not be set in source code style\. -.nf -.sp -.in 6 -\fBParagraph\fR -.in -.sp -.fi -Individual paragraphs can have a heading\. -.nf -.sp -.in 7 -\fBSubparagraph\fR -.in -.sp -.fi -Parts of a longer paragraph that can be considered alone can also have headings\. -.nf -.sp -.in 3 -\fB2 Styling\fR -.in -.sp -.fi -This paragraph has some styled elements: \fBbold\fR and \fIitalic\fR, \fB\fIbold italic\fB\fR, emphasis, emphasis within emphasis, \fB\fIbold italic\fB\fR, superscript, subscript\. The line spacing should be enough for superscripts and subscripts not to look odd\. -.sp -Note: \fIIn italics emphasis is rendered as normal text while emphasis in emphasis is rendered in italics\.\fR \fIIt also work the same in -.UR # -links in italics with emphasis in emphasis\. -.UE -\fR -.sp -code is a different kind of markup that doesn't allow nested markup\. -.sp -It's possible for two markup elements to appear \fBnext\fR \fIto\fR each other and have a space, and appear \fBnext\fR\fIto\fR each other with no space\. It doesn't matter \fBhow\fR \fImuch\fR space it was in the source: in this sentence, it was two space characters\. And in this one, there is \fBa\fR \fInewline\fR\. -.sp -This is also true between non-code markup and code\. -.sp -Code can appear \fBinside other markup\fR\. Its display shouldn't be affected\. -.nf -.sp -.in 3 -\fB3 Links and references\fR -.in -.sp -.fi -This is a -.UR # -link -.UE -\. It sends you to the top of this page\. Links can have markup inside them: -.UR # -\fBbold\fR -.UE -, -.UR # -\fIitalics\fR -.UE -, -.UR # -emphasis -.UE -, -.UR # -superscript -.UE -, -.UR # -subscript -.UE -, and -.UR # -code -.UE -\. Links can also be nested -.UR # -inside -.UE - markup\. Links cannot be nested inside each other\. This link has no replacement text: -.UR # -# -.UE -\. The text is filled in by odoc\. This is a shorthand link: -.UR # -# -.UE -\. The text is also filled in by odoc in this case\. -.sp -This is a reference to \f[CI]foo\fR\. References can have replacement text: \f[CI]the value foo\fR\. Except for the special lookup support, references are pretty much just like links\. The replacement text can have nested styles: \f[CI]\fBbold\f[CI]\fR, \f[CI]\fIitalic\f[CI]\fR, \f[CI]emphasis\fR, \f[CI]superscript\fR, \f[CI]subscript\fR, and \f[CI]code\fR\. It's also possible to surround a reference in a style: \fB\f[CI]foo\fB\fR\. References can't be nested inside references, and links and references can't be nested inside each other\. -.nf -.sp -.in 3 -\fB4 Preformatted text\fR -.in -.sp -.fi -This is a code block: -.sp -.EX -let foo = () -(** There are some nested comments in here, but an unpaired comment - terminator would terminate the whole doc surrounding comment\. It's - best to keep code blocks no wider than 72 characters\. *) - -let bar = - ignore foo -.EE -.sp -There are also verbatim blocks: -.sp -.EX -The main difference is these don't get syntax highlighting\. -.EE -.nf -.sp -.in 3 -\fB5 Lists\fR -.in -.sp -.fi -\(bu This is a -.br -\(bu shorthand bulleted list, -.br -\(bu and the paragraphs in each list item support styling\. -.sp -1) This is a -.br -2) shorthand numbered list\. -.sp -\(bu Shorthand list items can span multiple lines, however trying to put two paragraphs into a shorthand list item using a double line break -.sp -just creates a paragraph outside the list\. -.sp -\(bu Similarly, inserting a blank line between two list items -.sp -\(bu creates two separate lists\. -.sp -\(bu To get around this limitation, one -.sp -.ti +2 -can use explicitly-delimited lists\. -.br -\(bu This one is bulleted, -.sp -1) but there is also the numbered variant\. -.sp -\(bu \(bu lists -.br -.ti +2 -\(bu can be nested -.br -.ti +2 -\(bu and can include references -.br -.ti +2 -\(bu \f[CI]foo\fR -.nf -.sp -.in 3 -\fB6 Unicode\fR -.in -.sp -.fi -The parser supports any ASCII-compatible encoding, in particuλar UTF-8\. -.nf -.sp -.in 3 -\fB7 Raw HTML\fR -.in -.sp -.fi -Raw HTML can be as inline elements into sentences\. -.sp -.nf -.sp -.in 3 -\fB8 Modules\fR -.in -.sp -.fi -@X: -.br -@X: -.br -@Y: -.br -@Z: -.nf -.sp -.in 3 -\fB9 Tags\fR -.in -.sp -.fi -Each comment can end with zero or more tags\. Here are some examples: -.sp -@author: antron -.br -@deprecated: a long time ago -.br -@parameter foo: unused -.br -@raises Failure: always -.br -@returns: never -.br -@see -.UR # -# -.UE -: this url -.br -@see foo\.ml: this file -.br -@see Foo: this document -.br -@since: 0 -.br -@before 1\.0: it was in beta -.br -@version: -1 -.nf -.sp -\f[CB]val\fR foo : unit -.fi -.br -.ti +2 -Comments in structure items \fBsupport\fR markup, too\. -.nf - diff --git a/test/man/expect/test_package+ml/Module.3o b/test/man/expect/test_package+ml/Module.3o deleted file mode 100644 index a7da62d021..0000000000 --- a/test/man/expect/test_package+ml/Module.3o +++ /dev/null @@ -1,178 +0,0 @@ - -.TH Module 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Module -.SH Synopsis -.sp -.in 2 -\fBModule Module\fR -.in -.sp -.fi -Foo\. -.nf -.SH Documentation -.sp -.nf -\f[CB]val\fR foo : unit -.fi -.br -.ti +2 -The module needs at least one signature item, otherwise a bug causes the compiler to drop the module comment (above)\. See -.UR https://caml.inria.fr/mantis/view.php?id=7701 -https://caml\.inria\.fr/mantis/view\.php?id=7701 -.UE -\. -.nf -.sp -\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR t -.sp -.ti +2 -\f[CB]type\fR u -.sp -.ti +2 -\f[CB]type\fR 'a v -.sp -.ti +2 -\f[CB]type\fR ('a, 'b) w -.sp -.ti +2 -\f[CB]module\fR M : \f[CB]sig\fR \f[CB]end\fR -.br -\f[CB]end\fR -.sp -\f[CB]module\fR \f[CB]type\fR S1 -.sp -\f[CB]module\fR \f[CB]type\fR S2 = \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR t -.sp -.ti +2 -\f[CB]type\fR u -.sp -.ti +2 -\f[CB]type\fR 'a v -.sp -.ti +2 -\f[CB]type\fR ('a, 'b) w -.sp -.ti +2 -\f[CB]module\fR M : \f[CB]sig\fR \f[CB]end\fR -.br -\f[CB]end\fR -.sp -\f[CB]module\fR \f[CB]type\fR S3 = \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR t = int -.sp -.ti +2 -\f[CB]type\fR u = string -.sp -.ti +2 -\f[CB]type\fR 'a v -.sp -.ti +2 -\f[CB]type\fR ('a, 'b) w -.sp -.ti +2 -\f[CB]module\fR M : \f[CB]sig\fR \f[CB]end\fR -.br -\f[CB]end\fR -.sp -\f[CB]module\fR \f[CB]type\fR S4 = \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR u -.sp -.ti +2 -\f[CB]type\fR 'a v -.sp -.ti +2 -\f[CB]type\fR ('a, 'b) w -.sp -.ti +2 -\f[CB]module\fR M : \f[CB]sig\fR \f[CB]end\fR -.br -\f[CB]end\fR -.sp -\f[CB]module\fR \f[CB]type\fR S5 = \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR t -.sp -.ti +2 -\f[CB]type\fR u -.sp -.ti +2 -\f[CB]type\fR ('a, 'b) w -.sp -.ti +2 -\f[CB]module\fR M : \f[CB]sig\fR \f[CB]end\fR -.br -\f[CB]end\fR -.sp -\f[CB]type\fR ('a, 'b) result -.sp -\f[CB]module\fR \f[CB]type\fR S6 = \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR t -.sp -.ti +2 -\f[CB]type\fR u -.sp -.ti +2 -\f[CB]type\fR 'a v -.sp -.ti +2 -\f[CB]module\fR M : \f[CB]sig\fR \f[CB]end\fR -.br -\f[CB]end\fR -.sp -\f[CB]module\fR M' : \f[CB]sig\fR \.\.\. \f[CB]end\fR -.sp -\f[CB]module\fR \f[CB]type\fR S7 = \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR t -.sp -.ti +2 -\f[CB]type\fR u -.sp -.ti +2 -\f[CB]type\fR 'a v -.sp -.ti +2 -\f[CB]type\fR ('a, 'b) w -.sp -.ti +2 -\f[CB]module\fR M = M' -.br -\f[CB]end\fR -.sp -\f[CB]module\fR \f[CB]type\fR S8 = \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR t -.sp -.ti +2 -\f[CB]type\fR u -.sp -.ti +2 -\f[CB]type\fR 'a v -.sp -.ti +2 -\f[CB]type\fR ('a, 'b) w -.br -\f[CB]end\fR -.sp -\f[CB]module\fR \f[CB]type\fR S9 = \f[CB]sig\fR \f[CB]end\fR -.sp -\f[CB]module\fR Mutually : \f[CB]sig\fR \.\.\. \f[CB]end\fR -.sp -\f[CB]module\fR Recursive : \f[CB]sig\fR \.\.\. \f[CB]end\fR diff --git a/test/man/expect/test_package+ml/Nested.3o b/test/man/expect/test_package+ml/Nested.3o deleted file mode 100644 index cfff6f1403..0000000000 --- a/test/man/expect/test_package+ml/Nested.3o +++ /dev/null @@ -1,89 +0,0 @@ - -.TH Nested 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Nested -.SH Synopsis -.sp -.in 2 -\fBModule Nested\fR -.in -.sp -.fi -This comment needs to be here before #235 is fixed\. -.nf -.SH Documentation -.sp -.nf -.sp -.in 3 -\fB1 Module\fR -.in -.sp -\f[CB]module\fR X : \f[CB]sig\fR \.\.\. \f[CB]end\fR -.fi -.br -.ti +2 -This is module X\. -.nf -.sp -.in 3 -\fB2 Module type\fR -.in -.sp -\f[CB]module\fR \f[CB]type\fR Y = \f[CB]sig\fR -.br -.ti +2 -.sp -.ti +2 -\fB2\.1\.1 Type\fR -.sp -.ti +2 -\f[CB]type\fR t -.fi -.br -.ti +4 -Some type\. -.nf -.sp -.ti +2 -\fB2\.1\.2 Values\fR -.sp -.ti +2 -\f[CB]val\fR y : t -.fi -.br -.ti +4 -The value of y\. -.nf - -.br -\f[CB]end\fR -.fi -.br -.ti +2 -This is module type Y\. -.nf -.sp -.in 3 -\fB3 Functor\fR -.in -.sp -\f[CB]module\fR F (Arg1 : Y) (Arg2 : \f[CB]sig\fR \.\.\. \f[CB]end\fR) : \f[CB]sig\fR \.\.\. \f[CB]end\fR -.fi -.br -.ti +2 -This is a functor F\. -.nf -.sp -.in 3 -\fB4 Class\fR -.in -.sp -\f[CB]class\fR \f[CB]virtual\fR z : \f[CB]object\fR \.\.\. \f[CB]end\fR -.fi -.br -.ti +2 -This is class z\. -.nf -.sp -\f[CB]class\fR \f[CB]virtual\fR inherits : \f[CB]object\fR \.\.\. \f[CB]end\fR diff --git a/test/man/expect/test_package+ml/Nested.F.3o b/test/man/expect/test_package+ml/Nested.F.3o deleted file mode 100644 index 4bf19ba437..0000000000 --- a/test/man/expect/test_package+ml/Nested.F.3o +++ /dev/null @@ -1,87 +0,0 @@ - -.TH F 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Nested\.F -.SH Synopsis -.sp -.in 2 -\fBModule Nested\.F\fR -.in -.sp -.fi -This is a functor F\. -.nf -.sp -.fi -Some additional comments\. -.nf -.SH Documentation -.sp -.nf -.sp -.in 3 -\fB1 Type\fR -.in -.sp -.in 3 -\fB2 Parameters\fR -.in -.sp -\f[CB]module\fR Arg1 : \f[CB]sig\fR -.br -.ti +2 -.sp -.ti +2 -\fB2\.1\.1 Type\fR -.sp -.ti +2 -\f[CB]type\fR t -.fi -.br -.ti +4 -Some type\. -.nf -.sp -.ti +2 -\fB2\.1\.2 Values\fR -.sp -.ti +2 -\f[CB]val\fR y : t -.fi -.br -.ti +4 -The value of y\. -.nf - -.br -\f[CB]end\fR -.sp -\f[CB]module\fR Arg2 : \f[CB]sig\fR -.br -.ti +2 -.sp -.ti +2 -\fB2\.1\.3 Type\fR -.sp -.ti +2 -\f[CB]type\fR t -.fi -.br -.ti +4 -Some type\. -.nf - -.br -\f[CB]end\fR -.sp -.in 3 -\fB3 Signature\fR -.in -.sp -\f[CB]type\fR t = Arg1\.t * Arg2\.t -.fi -.br -.ti +2 -Some type\. -.nf - diff --git a/test/man/expect/test_package+ml/Nested.X.3o b/test/man/expect/test_package+ml/Nested.X.3o deleted file mode 100644 index d9f6f77f4a..0000000000 --- a/test/man/expect/test_package+ml/Nested.X.3o +++ /dev/null @@ -1,43 +0,0 @@ - -.TH X 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Nested\.X -.SH Synopsis -.sp -.in 2 -\fBModule Nested\.X\fR -.in -.sp -.fi -This is module X\. -.nf -.sp -.fi -Some additional comments\. -.nf -.SH Documentation -.sp -.nf -.sp -.in 3 -\fB1 Type\fR -.in -.sp -\f[CB]type\fR t -.fi -.br -.ti +2 -Some type\. -.nf -.sp -.in 3 -\fB2 Values\fR -.in -.sp -\f[CB]val\fR x : t -.fi -.br -.ti +2 -The value of x\. -.nf - diff --git a/test/man/expect/test_package+ml/Nested.inherits.3o b/test/man/expect/test_package+ml/Nested.inherits.3o deleted file mode 100644 index 78176e0d46..0000000000 --- a/test/man/expect/test_package+ml/Nested.inherits.3o +++ /dev/null @@ -1,14 +0,0 @@ - -.TH inherits 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Nested\.inherits -.SH Synopsis -.sp -.in 2 -\fBClass Nested\.inherits\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]inherit\fR z diff --git a/test/man/expect/test_package+ml/Nested.z.3o b/test/man/expect/test_package+ml/Nested.z.3o deleted file mode 100644 index f9cfa01601..0000000000 --- a/test/man/expect/test_package+ml/Nested.z.3o +++ /dev/null @@ -1,41 +0,0 @@ - -.TH z 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Nested\.z -.SH Synopsis -.sp -.in 2 -\fBClass Nested\.z\fR -.in -.sp -.fi -This is class z\. -.nf -.sp -.fi -Some additional comments\. -.nf -.SH Documentation -.sp -.nf -\f[CB]val\fR y : int -.fi -.br -.ti +2 -Some value\. -.nf -.sp -\f[CB]val\fR \f[CB]mutable\fR \f[CB]virtual\fR y' : int -.sp -.in 3 -\fB1 Methods\fR -.in -.sp -\f[CB]method\fR z : int -.fi -.br -.ti +2 -Some method\. -.nf -.sp -\f[CB]method\fR \f[CB]private\fR \f[CB]virtual\fR z' : int diff --git a/test/man/expect/test_package+ml/Recent.3o b/test/man/expect/test_package+ml/Recent.3o deleted file mode 100644 index bb5dd5de24..0000000000 --- a/test/man/expect/test_package+ml/Recent.3o +++ /dev/null @@ -1,145 +0,0 @@ - -.TH Recent 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Recent -.SH Synopsis -.sp -.in 2 -\fBModule Recent\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR \f[CB]end\fR -.sp -\f[CB]module\fR \f[CB]type\fR S1 = \f[CB]sig\fR -.br -.ti +2 -.sp -.ti +2 -\fB1\.1 Parameters\fR -.sp -.ti +2 -\f[CB]module\fR _ : \f[CB]sig\fR \f[CB]end\fR -.sp -.ti +2 -\fB1\.2 Signature\fR -.sp -.ti +2 - -.br -\f[CB]end\fR -.sp -\f[CB]type\fR variant = -.br -.ti +2 -| \f[CB]A\fR -.br -.ti +2 -| \f[CB]B\fR \f[CB]of\fR int -.br -.ti +2 -| \f[CB]C\fR -.br -.ti +4 -(* foo *) -.br -.ti +2 -| \f[CB]D\fR -.br -.ti +4 -(* bar *) -.br -.ti +2 -| \f[CB]E\fR \f[CB]of\fR { -.br -.ti +6 -a : int; -.br -.ti +4 -} -.br -.sp -\f[CB]type\fR _ gadt = -.br -.ti +2 -| \f[CB]A\fR : int gadt -.br -.ti +2 -| \f[CB]B\fR : int \f[CB]\->\fR string gadt -.br -.ti +4 -(* foo *) -.br -.ti +2 -| \f[CB]C\fR : { -.br -.ti +6 -a : int; -.br -.ti +4 -} \f[CB]\->\fR unit gadt -.br -.sp -\f[CB]type\fR polymorphic_variant = [ -.br -.ti +2 -| `A -.br -.ti +2 -| `B \f[CB]of\fR int -.br -.ti +2 -| `C -.br -.ti +4 -(* foo *) -.br -.ti +2 -| `D -.br -.ti +4 -(* bar *) -.br - ] -.sp -\f[CB]type\fR empty_variant = | -.sp -\f[CB]type\fR \f[CB]nonrec\fR nonrec_ = int -.sp -\f[CB]type\fR empty_conj = -.br -.ti +2 -| \f[CB]X\fR : [< `X of & \f[CB]'a\fR & int * float ] \f[CB]\->\fR empty_conj -.br -.sp -\f[CB]type\fR conj = -.br -.ti +2 -| \f[CB]X\fR : [< `X of int & [< `B of int & float ] ] \f[CB]\->\fR conj -.br -.sp -\f[CB]val\fR empty_conj : [< `X of & \f[CB]'a\fR & int * float ] -.sp -\f[CB]val\fR conj : [< `X of int & [< `B of int & float ] ] -.sp -\f[CB]module\fR Z : \f[CB]sig\fR \.\.\. \f[CB]end\fR -.sp -\f[CB]module\fR X : \f[CB]sig\fR \.\.\. \f[CB]end\fR -.sp -\f[CB]module\fR \f[CB]type\fR PolyS = \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR t = [ -.br -.ti +4 -| `A -.br -.ti +4 -| `B -.br -.ti +2 - ] -.br -\f[CB]end\fR diff --git a/test/man/expect/test_package+ml/Recent.X.3o b/test/man/expect/test_package+ml/Recent.X.3o deleted file mode 100644 index 826574ac98..0000000000 --- a/test/man/expect/test_package+ml/Recent.X.3o +++ /dev/null @@ -1,20 +0,0 @@ - -.TH X 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Recent\.X -.SH Synopsis -.sp -.in 2 -\fBModule Recent\.X\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]module\fR L := Z\.Y -.sp -\f[CB]type\fR t = int Z\.Y\.X\.t -.sp -\f[CB]type\fR u := int -.sp -\f[CB]type\fR v = u Z\.Y\.X\.t diff --git a/test/man/expect/test_package+ml/Recent_impl.3o b/test/man/expect/test_package+ml/Recent_impl.3o deleted file mode 100644 index 837c6276b6..0000000000 --- a/test/man/expect/test_package+ml/Recent_impl.3o +++ /dev/null @@ -1,50 +0,0 @@ - -.TH Recent_impl 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Recent_impl -.SH Synopsis -.sp -.in 2 -\fBModule Recent_impl\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]module\fR Foo : \f[CB]sig\fR \.\.\. \f[CB]end\fR -.sp -\f[CB]module\fR B : \f[CB]sig\fR \.\.\. \f[CB]end\fR -.sp -\f[CB]type\fR u -.sp -\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR -.br -.ti +2 -\f[CB]module\fR F : \f[CB]sig\fR -.br -.ti +4 -.sp -.ti +4 -\fB1\.1 Parameters\fR -.sp -.ti +4 -\f[CB]module\fR _ : \f[CB]sig\fR \f[CB]end\fR -.sp -.ti +4 -\fB1\.2 Signature\fR -.sp -.ti +4 -\f[CB]type\fR t -.br -.ti +2 -\f[CB]end\fR -.sp -.ti +2 -\f[CB]module\fR X : \f[CB]sig\fR \f[CB]end\fR -.sp -.ti +2 -\f[CB]val\fR f : F(X)\.t -.br -\f[CB]end\fR -.sp -\f[CB]module\fR B' = Foo\.B diff --git a/test/man/expect/test_package+ml/Section.3o b/test/man/expect/test_package+ml/Section.3o deleted file mode 100644 index 474a7299e6..0000000000 --- a/test/man/expect/test_package+ml/Section.3o +++ /dev/null @@ -1,63 +0,0 @@ - -.TH Section 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Section -.SH Synopsis -.sp -.in 2 -\fBModule Section\fR -.in -.sp -.fi -This is the module comment\. Eventually, sections won't be allowed in it\. -.nf -.SH Documentation -.sp -.nf -.sp -.in 3 -\fB1 Empty section\fR -.in -.sp -.in 3 -\fB2 Text only\fR -.in -.sp -.fi -Foo bar\. -.nf -.sp -.in 3 -\fB3 Aside only\fR -.in -.sp -.fi -Foo bar\. -.nf -.sp -.in 3 -\fB4 Value only\fR -.in -.sp -\f[CB]val\fR foo : unit -.sp -.in 3 -\fB5 Empty section\fR -.in -.sp -.in 3 -\fB6 within a comment\fR -.in -.sp -.in 4 -\fB6\.1 and one with a nested section\fR -.in -.sp -.in 3 -\fB7 This section \fBtitle\fB has markup\fR -.in -.sp -.fi -But links are impossible thanks to the parser, so we never have trouble rendering a section title in a table of contents – no link will be nested inside another link\. -.nf - diff --git a/test/man/expect/test_package+ml/Stop.3o b/test/man/expect/test_package+ml/Stop.3o deleted file mode 100644 index 48f11ad6ba..0000000000 --- a/test/man/expect/test_package+ml/Stop.3o +++ /dev/null @@ -1,36 +0,0 @@ - -.TH Stop 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Stop -.SH Synopsis -.sp -.in 2 -\fBModule Stop\fR -.in -.sp -.fi -This test cases exercises stop comments\. -.nf -.SH Documentation -.sp -.nf -\f[CB]val\fR foo : int -.fi -.br -.ti +2 -This is normal commented text\. -.nf -.sp -.fi -The next value is bar, and it should be missing from the documentation\. There is also an entire module, M, which should also be hidden\. It contains a nested stop comment, but that stop comment should not turn documentation back on in this outer module, because stop comments respect scope\. -.nf -.sp -.fi -Documentation is on again\. -.sp -Now, we have a nested module, and it has a stop comment between its two items\. We want to see that the first item is displayed, but the second is missing, and the stop comment disables documenation only in that module, and not in this outer module\. -.nf -.sp -\f[CB]module\fR N : \f[CB]sig\fR \.\.\. \f[CB]end\fR -.sp -\f[CB]val\fR lol : int diff --git a/test/man/expect/test_package+ml/Type.3o b/test/man/expect/test_package+ml/Type.3o deleted file mode 100644 index 4a1cb7770b..0000000000 --- a/test/man/expect/test_package+ml/Type.3o +++ /dev/null @@ -1,257 +0,0 @@ - -.TH Type 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Type -.SH Synopsis -.sp -.in 2 -\fBModule Type\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]type\fR abstract -.fi -.br -.ti +2 -Some documentation\. -.nf -.sp -\f[CB]type\fR alias = int -.sp -\f[CB]type\fR private_ = \f[CB]private\fR int -.sp -\f[CB]type\fR 'a constructor = \f[CB]'a\fR -.sp -\f[CB]type\fR arrow = int \f[CB]\->\fR int -.sp -\f[CB]type\fR higher_order = (int \f[CB]\->\fR int) \f[CB]\->\fR int -.sp -\f[CB]type\fR labeled = l:int \f[CB]\->\fR int -.sp -\f[CB]type\fR optional = ?l:int \f[CB]\->\fR int -.sp -\f[CB]type\fR labeled_higher_order = (l:int \f[CB]\->\fR int) \f[CB]\->\fR (?l:int \f[CB]\->\fR int) \f[CB]\->\fR int -.sp -\f[CB]type\fR pair = int * int -.sp -\f[CB]type\fR parens_dropped = int * int -.sp -\f[CB]type\fR triple = int * int * int -.sp -\f[CB]type\fR nested_pair = (int * int) * int -.sp -\f[CB]type\fR instance = int constructor -.sp -\f[CB]type\fR long = labeled_higher_order \f[CB]\->\fR [ `Bar | `Baz of triple ] \f[CB]\->\fR pair \f[CB]\->\fR labeled \f[CB]\->\fR higher_order \f[CB]\->\fR (string \f[CB]\->\fR int) \f[CB]\->\fR (int, float, char, string, char, unit) CamlinternalFormatBasics\.fmtty \f[CB]\->\fR nested_pair \f[CB]\->\fR arrow \f[CB]\->\fR string \f[CB]\->\fR nested_pair array -.sp -\f[CB]type\fR variant_e = { -.br -.ti +2 -a : int; -.br -} -.sp -\f[CB]type\fR variant = -.br -.ti +2 -| \f[CB]A\fR -.br -.ti +2 -| \f[CB]B\fR \f[CB]of\fR int -.br -.ti +2 -| \f[CB]C\fR -.br -.ti +4 -(* foo *) -.br -.ti +2 -| \f[CB]D\fR -.br -.ti +4 -(* bar *) -.br -.ti +2 -| \f[CB]E\fR \f[CB]of\fR variant_e -.br -.sp -\f[CB]type\fR variant_c = { -.br -.ti +2 -a : int; -.br -} -.sp -\f[CB]type\fR _ gadt = -.br -.ti +2 -| \f[CB]A\fR : int gadt -.br -.ti +2 -| \f[CB]B\fR : int \f[CB]\->\fR string gadt -.br -.ti +2 -| \f[CB]C\fR : variant_c \f[CB]\->\fR unit gadt -.br -.sp -\f[CB]type\fR degenerate_gadt = -.br -.ti +2 -| \f[CB]A\fR : degenerate_gadt -.br -.sp -\f[CB]type\fR private_variant = \f[CB]private\fR -.br -.ti +2 -| \f[CB]A\fR -.br -.sp -\f[CB]type\fR record = { -.br -.ti +2 -a : int; -.br -.ti +2 -\f[CB]mutable\fR b : int; -.br -.ti +2 -c : int; -.br -.ti +4 -(* foo *) -.br -.ti +2 -d : int; -.br -.ti +4 -(* bar *) -.br -.ti +2 -e : a\. \f[CB]'a\fR; -.br -} -.sp -\f[CB]type\fR polymorphic_variant = [ -.br -.ti +2 -| `A -.br -.ti +2 -| `B \f[CB]of\fR int -.br -.ti +2 -| `C \f[CB]of\fR int * unit -.br -.ti +2 -| `D -.br - ] -.sp -\f[CB]type\fR polymorphic_variant_extension = [ -.br -.ti +2 -| polymorphic_variant -.br -.ti +2 -| `E -.br - ] -.sp -\f[CB]type\fR nested_polymorphic_variant = [ -.br -.ti +2 -| `A \f[CB]of\fR [ `B | `C ] -.br - ] -.sp -\f[CB]type\fR private_extenion#row -.sp -\f[CB]and\fR private_extenion = \f[CB]private\fR [> -.br -.ti +2 -| polymorphic_variant -.br - ] -.sp -\f[CB]type\fR object_ = < a : int; b : int; c : int; > -.sp -\f[CB]module\fR \f[CB]type\fR X = \f[CB]sig\fR -.br -.ti +2 -\f[CB]type\fR t -.sp -.ti +2 -\f[CB]type\fR u -.br -\f[CB]end\fR -.sp -\f[CB]type\fR module_ = (\f[CB]module\fR X) -.sp -\f[CB]type\fR module_substitution = (\f[CB]module\fR X \f[CB]with\fR \f[CB]type\fR t = int \f[CB]and\fR \f[CB]type\fR u = unit) -.sp -\f[CB]type\fR +'a covariant -.sp -\f[CB]type\fR -'a contravariant -.sp -\f[CB]type\fR _ bivariant = int -.sp -\f[CB]type\fR ('a, 'b) binary -.sp -\f[CB]type\fR using_binary = (int, int) binary -.sp -\f[CB]type\fR 'custom name -.sp -\f[CB]type\fR 'a constrained = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = int -.sp -\f[CB]type\fR 'a exact_variant = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = [ `A | `B of int ] -.sp -\f[CB]type\fR 'a lower_variant = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = [> `A | `B of int ] -.sp -\f[CB]type\fR 'a any_variant = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = [> ] -.sp -\f[CB]type\fR 'a upper_variant = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = [< `A | `B of int ] -.sp -\f[CB]type\fR 'a named_variant = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = [< polymorphic_variant ] -.sp -\f[CB]type\fR 'a exact_object = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = < a : int; b : int; > -.sp -\f[CB]type\fR 'a lower_object = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = < a : int; b : int; \.\. > -.sp -\f[CB]type\fR 'a poly_object = \f[CB]'a\fR \f[CB]constraint\fR \f[CB]'a\fR = < a : a\. \f[CB]'a\fR; > -.sp -\f[CB]type\fR ('a, 'b) double_constrained = \f[CB]'a\fR * \f[CB]'b\fR \f[CB]constraint\fR \f[CB]'a\fR = int \f[CB]constraint\fR \f[CB]'b\fR = unit -.sp -\f[CB]type\fR as_ = int \f[CB]as\fR 'a * \f[CB]'a\fR -.sp -\f[CB]type\fR extensible = \.\. -.sp -\f[CB]type\fR extensible += -.br -.ti +2 -| \f[CB]Extension\fR -.br -.ti +4 -(* Documentation for \f[CI]Extension\fR\. *) -.br -.ti +2 -| \f[CB]Another_extension\fR -.br -.ti +4 -(* Documentation for \f[CI]Another_extension\fR\. *) -.br -.sp -\f[CB]type\fR mutually = -.br -.ti +2 -| \f[CB]A\fR \f[CB]of\fR recursive -.br -.sp -\f[CB]and\fR recursive = -.br -.ti +2 -| \f[CB]B\fR \f[CB]of\fR mutually -.br -.sp -\f[CB]exception\fR \f[CB]Foo\fR \f[CB]of\fR int * int diff --git a/test/man/expect/test_package+ml/Val.3o b/test/man/expect/test_package+ml/Val.3o deleted file mode 100644 index ed10f94e48..0000000000 --- a/test/man/expect/test_package+ml/Val.3o +++ /dev/null @@ -1,29 +0,0 @@ - -.TH Val 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.Val -.SH Synopsis -.sp -.in 2 -\fBModule Val\fR -.in -.sp -.SH Documentation -.sp -.nf -\f[CB]val\fR documented : unit -.fi -.br -.ti +2 -Foo\. -.nf -.sp -\f[CB]val\fR undocumented : unit -.sp -\f[CB]val\fR documented_above : unit -.fi -.br -.ti +2 -Bar\. -.nf - diff --git a/test/man/expect/test_package+ml/mld.3o b/test/man/expect/test_package+ml/mld.3o deleted file mode 100644 index b0b576b69d..0000000000 --- a/test/man/expect/test_package+ml/mld.3o +++ /dev/null @@ -1,63 +0,0 @@ - -.TH mld 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.mld -.SH Synopsis -.sp -.in 2 -\fBMld Page\fR -.in -.sp -.fi -This is an \.mld file\. It doesn't have an auto-generated title, like modules and other pages generated fully by odoc do\. -.sp -It will have a TOC generated from section headings\. -.nf -.SH Documentation -.sp -.nf -.sp -.in 3 -\fB1 Section\fR -.in -.sp -.fi -This is a section\. -.sp -Another paragraph in section\. -.nf -.sp -.in 3 -\fB2 Another section\fR -.in -.sp -.fi -This is another section\. -.sp -Another paragraph in section 2\. -.nf -.sp -.in 4 -\fB2\.1 Subsection\fR -.in -.sp -.fi -This is a subsection\. -.sp -Another paragraph in subsection\. -.sp -Yet another paragraph in subsection\. -.nf -.sp -.in 4 -\fB2\.2 Another Subsection\fR -.in -.sp -.fi -This is another subsection\. -.sp -Another paragraph in subsection 2\. -.sp -Yet another paragraph in subsection 2\. -.nf - diff --git a/test/man/expect/test_package+ml/mld.nroff b/test/man/expect/test_package+ml/mld.nroff deleted file mode 100644 index b0b576b69d..0000000000 --- a/test/man/expect/test_package+ml/mld.nroff +++ /dev/null @@ -1,63 +0,0 @@ - -.TH mld 3 "" "Odoc" "OCaml Library" -.SH Name -test_package+ml\.mld -.SH Synopsis -.sp -.in 2 -\fBMld Page\fR -.in -.sp -.fi -This is an \.mld file\. It doesn't have an auto-generated title, like modules and other pages generated fully by odoc do\. -.sp -It will have a TOC generated from section headings\. -.nf -.SH Documentation -.sp -.nf -.sp -.in 3 -\fB1 Section\fR -.in -.sp -.fi -This is a section\. -.sp -Another paragraph in section\. -.nf -.sp -.in 3 -\fB2 Another section\fR -.in -.sp -.fi -This is another section\. -.sp -Another paragraph in section 2\. -.nf -.sp -.in 4 -\fB2\.1 Subsection\fR -.in -.sp -.fi -This is a subsection\. -.sp -Another paragraph in subsection\. -.sp -Yet another paragraph in subsection\. -.nf -.sp -.in 4 -\fB2\.2 Another Subsection\fR -.in -.sp -.fi -This is another subsection\. -.sp -Another paragraph in subsection 2\. -.sp -Yet another paragraph in subsection 2\. -.nf - diff --git a/test/man/test.ml b/test/man/test.ml deleted file mode 100644 index e67a876dd5..0000000000 --- a/test/man/test.ml +++ /dev/null @@ -1,244 +0,0 @@ -open Printf - -(* Utils *) - -let ( // ) = Filename.concat - -let command label = - Printf.ksprintf (fun s -> - let exit_code = Sys.command s in - if exit_code <> 0 then - Alcotest.failf "'%s' exited with %i" label exit_code) - -(* Filename.extension is only available on 4.04. *) -module Filename = struct - include Filename - - let extension filename = - let dot_index = String.rindex filename '.' in - String.sub filename dot_index (String.length filename - dot_index) -end - -(* Testing environment *) - -module Env = struct - let package = "test_package" - - let odoc = "../../src/odoc/bin/main.exe" - - let path ?(from_root = false) = function - | `scratch when from_root -> "_build/default/test/man/_scratch" - | `scratch -> "_scratch" - | `expect when from_root -> "test/man/expect" - | `expect -> "expect" - | `cases when from_root -> "test/cases" - | `cases -> "../cases" - - let init () = Unix.mkdir (path `scratch) 0o755 -end - -(* Test case type and helpers *) - -(* A test case is a description of an input source file with a specific set of - options to be tested. Each test case results in a unique generated output to - be compared with an actually produced one. - - All paths defined in this module are relative to the build directory. *) -module Case = struct - type t = { - name : string; - kind : [ `mli | `mld | `ml ]; - syntax : [ `ml | `re ]; - outputs : string list; - } - - let make ?(syntax = `ml) (input, outputs) = - let name = Filename.chop_extension input in - let kind = - match Filename.extension input with - | ".mli" -> `mli - | ".mld" -> `mld - | ".ml" -> `ml - | _ -> - invalid_arg (sprintf "Expected mli, mld, or ml files, got %s" input) - in - { name; kind; syntax; outputs } - - let name case = case.name - - let kind case = case.kind - - let string_of_syntax = function `re -> "re" | `ml -> "ml" - - (* The package name is enriched with test case options. *) - let package case = - let opts = [ string_of_syntax case.syntax ] in - let opts = String.concat "," (List.sort compare opts) in - Env.package ^ "+" ^ opts - - let cmi_file case = Env.path `scratch // (case.name ^ ".cmi") - - let cmti_file case = Env.path `scratch // (case.name ^ ".cmti") - - let cmo_file case = Env.path `scratch // (case.name ^ ".cmo") - - let cmt_file case = Env.path `scratch // (case.name ^ ".cmt") - - let odoc_file case = - match case.kind with - | `mli | `ml -> Env.path `scratch // (case.name ^ ".odoc") - | `mld -> Env.path `scratch // ("page-" ^ case.name ^ ".odoc") - - let source_file case = - match case.kind with - | `mli -> (Env.path `cases // case.name) ^ ".mli" - | `mld -> (Env.path `cases // case.name) ^ ".mld" - | `ml -> (Env.path `cases // case.name) ^ ".ml" - - let outputs case = List.map (fun o -> package case // o) case.outputs -end - -let generate_man case = - match Case.kind case with - | `mli -> - command "ocamlfind c" "ocamlfind c -bin-annot -o %s -c %s" - (Case.cmi_file case) (Case.source_file case); - - command "odoc compile" "%s compile --package=%s %s" Env.odoc - (Case.package case) (Case.cmti_file case); - - command "odoc man" "%s man --syntax=%s --output-dir=%s %s" Env.odoc - (Case.string_of_syntax case.syntax) - (Env.path `scratch) - (Case.odoc_file case) - | `mld -> - command "odoc compile" "%s compile --package=%s -o %s %s" Env.odoc - (Case.package case) (Case.odoc_file case) (Case.source_file case); - - command "odoc man" "%s man --output-dir=%s %s" Env.odoc - (Env.path `scratch) - (Case.odoc_file case) - | `ml -> - command "ocamlfind c" "ocamlfind c -bin-annot -o %s -c %s" - (Case.cmo_file case) (Case.source_file case); - - command "odoc compile" "%s compile --package=%s %s" Env.odoc - (Case.package case) (Case.cmt_file case); - - command "odoc man" "%s man --syntax=%s --output-dir=%s %s" Env.odoc - (Case.string_of_syntax case.syntax) - (Env.path `scratch) - (Case.odoc_file case) - -let diff = - (* Alcotest will run all tests. We need to know when something fails for the - first time to stop diffing and generating promotion files. *) - let already_failed = ref false in - fun output -> - let actual_file = Env.path `scratch // output in - let expected_file = Env.path `expect // output in - let cmd = sprintf "diff -N -u -b %s %s" expected_file actual_file in - match Sys.command cmd with - | 0 -> () - | 1 when !already_failed -> - (* Don't run diff for other failing tests as only one at time is shown. *) - Alcotest.fail "generated MAN should match expected" - | 1 -> - (* If the diff command exits with 1, the two MAN files are different. - diff has already written its output to STDOUT. - - Also provide the command for overwriting the expected output with the - actual output, in case it is the actual output that is correct. - The paths are defined relative to the project's root. *) - let root_actual_file = Env.path `scratch ~from_root:true // output in - let root_expected_file = Env.path `expect ~from_root:true // output in - let write_file filename data = - let oc = open_out filename in - output_string oc data; - close_out oc - in - write_file Env.(path `scratch // "actual") root_actual_file; - write_file Env.(path `scratch // "expected") root_expected_file; - - prerr_endline "\nTo promote the actual output to expected, run:"; - Printf.eprintf "cp `cat %s` `cat %s` && make test\n\n" - Env.(path ~from_root:true `scratch // "actual") - Env.(path ~from_root:true `scratch // "expected"); - - already_failed := true; - Alcotest.fail "generated MAN should match expected" - | exit_code -> Alcotest.failf "'diff' exited with %i" exit_code - -let make_test_case ?syntax case = - let case = Case.make ?syntax case in - let run () = - (* Compile the source file and generate MAN. *) - generate_man case; - - List.iter diff (Case.outputs case) - in - (Case.name case, `Slow, run) - -let source_files_all = - [ - ("val.mli", [ "Val.3o" ]); - ("markup.mli", [ "Markup.3o" ]); - ("section.mli", [ "Section.3o" ]); - ("module.mli", [ "Module.3o" ]); - ("interlude.mli", [ "Interlude.3o" ]); - ("include.mli", [ "Include.3o" ]); - ("include2.ml", [ "Include2.3o" ]); - ("include_sections.mli", [ "Include_sections.3o" ]); - ("mld.mld", [ "mld.3o" ]); - ( "nested.mli", - [ - "Nested.3o"; - "Nested.F.3o"; - "Nested.X.3o"; - "Nested.z.3o"; - "Nested.inherits.3o"; - ] ); - ("type.mli", [ "Type.3o" ]); - ("external.mli", [ "External.3o" ]); - ( "functor.mli", - [ - "Functor.3o"; - "Functor.F1.3o"; - "Functor.F2.3o"; - "Functor.F3.3o"; - "Functor.F4.3o"; - ] ); - ("class.mli", [ "Class.3o" ]); - ("stop.mli", [ "Stop.3o" ]); - ("bugs.ml", [ "Bugs.3o" ]); - ("alias.ml", [ "Alias.3o"; "Alias.X.3o" ]); - ] - -let source_files_post408 = - [ - ("recent.mli", [ "Recent.3o"; "Recent.X.3o" ]); - ("recent_impl.ml", [ "Recent_impl.3o" ]); - ] - -let source_files_pre410 = [ ("bugs_pre_410.ml", [ "Bugs_pre_410.3o" ]) ] - -let source_files = - let cur = - Astring.String.cuts ~sep:"." Sys.ocaml_version - |> List.map (fun i -> try Some (int_of_string i) with _ -> None) - in - match cur with - | Some major :: Some minor :: _ -> - List.concat - [ - (if major = 4 && minor < 10 then source_files_pre410 else []); - (if major = 4 && minor > 8 then source_files_post408 else []); - source_files_all; - ] - | _ -> source_files_all - -let () = - Env.init (); - - Alcotest.run "man" - [ ("man_ml", List.map (make_test_case ~syntax:`ml) source_files) ]