diff --git a/Makefile b/Makefile
index 7a147e7800..81ca556406 100644
--- a/Makefile
+++ b/Makefile
@@ -159,3 +159,9 @@ uutf/dune-project : uutf
.PHONY : distclean
distclean :
rm -rf $(DUNIVERSE_DEPS) dune-local
+
+.PHONY : promote-html
+promote-html:
+ EXPECTED=`cat _build/default/test/html/_scratch/expected`; \
+ ACTUAL=`cat _build/default/test/html/_scratch/actual`; \
+ mkdir -p "`dirname "$$EXPECTED"`" && cp "$$ACTUAL" "$$EXPECTED"
diff --git a/src/xref2/compile.ml b/src/xref2/compile.ml
index 6644a8a84d..bd55315bef 100644
--- a/src/xref2/compile.ml
+++ b/src/xref2/compile.ml
@@ -308,11 +308,6 @@ and module_type : Env.t -> ModuleType.t -> ModuleType.t =
and include_ : Env.t -> Include.t -> Include.t =
fun env i ->
let open Include in
- let remove_top_doc_from_signature s =
- let open Signature in
- let items = match s.items with Comment (`Docs _) :: xs -> xs | xs -> xs in
- { s with items }
- in
let decl = Component.Of_Lang.(include_decl empty i.decl) in
let get_expansion () =
match
@@ -339,8 +334,7 @@ and include_ : Env.t -> Include.t -> Include.t =
in
{
shadowed = i.expansion.shadowed;
- content =
- remove_top_doc_from_signature (signature env i.parent expansion_sg);
+ content = signature env i.parent expansion_sg;
}
in
let expansion =
diff --git a/src/xref2/link.ml b/src/xref2/link.ml
index 5710ce29bb..c0575f7638 100644
--- a/src/xref2/link.ml
+++ b/src/xref2/link.ml
@@ -34,6 +34,11 @@ let synopsis_from_comment docs =
| _ -> None)
docs
+let remove_top_doc_from_signature s =
+ let open Signature in
+ let items = match s.items with Comment (`Docs _) :: xs -> xs | xs -> xs in
+ { s with items }
+
exception Loop
let rec is_forward : Paths.Path.Module.t -> bool = function
@@ -417,14 +422,12 @@ and module_ : Env.t -> Module.t -> Module.t =
Alias (`Resolved p, Some (simple_expansion env sg_id le))
| Error _ -> Alias (`Resolved p, e)
else Alias (`Resolved p, e)
- | Alias _ -> type_
- | ModuleType mty -> ModuleType mty
+ | Alias _ | ModuleType _ -> type_
in
let doc, type_ =
match m.doc with [] -> extract_doc type_ | _ -> (m.doc, type_)
in
- let result = { m with doc = comment_docs env doc; type_ } in
- result
+ { m with doc = comment_docs env doc; type_ }
and module_decl : Env.t -> Id.Signature.t -> Module.decl -> Module.decl =
fun env id decl ->
@@ -470,17 +473,15 @@ and include_ : Env.t -> Include.t -> Include.t =
let is_inline_tag element = element.Location_.value = `Tag `Inline in
List.exists is_inline_tag doc
in
- {
- i with
- decl;
- expansion =
- {
- shadowed = i.expansion.shadowed;
- content = signature env i.parent i.expansion.content;
- };
- inline = should_be_inlined;
- doc;
- }
+ let expansion =
+ let content = signature env i.parent i.expansion.content in
+ let content =
+ if should_be_inlined then content
+ else remove_top_doc_from_signature content
+ in
+ { i.expansion with content }
+ in
+ { i with decl; expansion; inline = should_be_inlined; doc }
and functor_parameter_parameter :
Env.t -> FunctorParameter.parameter -> FunctorParameter.parameter =
diff --git a/test/cases/toplevel_comments.mli b/test/cases/toplevel_comments.mli
new file mode 100644
index 0000000000..06a7244273
--- /dev/null
+++ b/test/cases/toplevel_comments.mli
@@ -0,0 +1,37 @@
+(** 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
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
new file mode 100644
index 0000000000..8cf0b71dad
--- /dev/null
+++ b/test/html/expect/test_package+ml/Toplevel_comments/Include_inline'/index.html
@@ -0,0 +1,51 @@
+
+
+