Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/loader/odoc_loader.ml
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ let read_cmti ~make_root ~parent ~filename () =
in
let content = Odoc_model.Lang.Compilation_unit.Module items in
{Odoc_model.Lang.Compilation_unit.id; root; doc; digest; imports; source;
interface; hidden; content; expansion = None}
interface; hidden; content; expansion = None; linked = false}
end
| _ -> not_an_interface filename

Expand Down Expand Up @@ -138,7 +138,7 @@ let read_cmt ~make_root ~parent ~filename () =
let source = None in
let content = Odoc_model.Lang.Compilation_unit.Pack items in
{Odoc_model.Lang.Compilation_unit.id; root; doc; digest; imports;
source; interface; hidden; content; expansion = None}
source; interface; hidden; content; expansion = None; linked = false}

| Implementation impl ->
let name = cmt_info.cmt_modname in
Expand Down Expand Up @@ -173,7 +173,7 @@ let read_cmt ~make_root ~parent ~filename () =
in
let content = Odoc_model.Lang.Compilation_unit.Module items in
{Odoc_model.Lang.Compilation_unit.id; root; doc; digest; imports;
source; interface; hidden; content; expansion = None}
source; interface; hidden; content; expansion = None; linked = false}

| _ -> not_an_implementation filename

Expand Down Expand Up @@ -203,7 +203,7 @@ let read_cmi ~make_root ~parent ~filename () =
let source = None in
let content = Odoc_model.Lang.Compilation_unit.Module items in
{Odoc_model.Lang.Compilation_unit.id; root; doc; digest; imports;
source; interface; hidden; content; expansion = None}
source; interface; hidden; content; expansion = None; linked = false}

| _ -> corrupted filename

Expand Down
2 changes: 2 additions & 0 deletions src/model/lang.ml
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,7 @@ module rec Compilation_unit : sig
hidden : bool;
content : content;
expansion : Signature.t option;
linked : bool; (** Whether this unit has been linked. *)
}
end =
Compilation_unit
Expand All @@ -452,6 +453,7 @@ module rec Page : sig
content : Comment.docs;
children : Reference.t list;
digest : Digest.t;
linked : bool;
}
end =
Page
Expand Down
5 changes: 4 additions & 1 deletion src/odoc/compile.ml
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,10 @@ let mld ~parent_spec ~output ~children ~warn_error input =
}
in
let resolve content =
let page = Odoc_model.Lang.Page.{ name; root; children; content; digest } in
let page =
Odoc_model.Lang.Page.
{ name; root; children; content; digest; linked = false }
in
Page.save output page;
Ok ()
in
Expand Down
3 changes: 2 additions & 1 deletion src/odoc/html_fragment.ml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ let from_mld ~xref_base_uri ~env ~output ~warn_error input =
let to_html content =
(* This is a mess. *)
let page =
Odoc_model.Lang.Page.{ name = id; root; content; children = []; digest }
Odoc_model.Lang.Page.
{ name = id; root; content; children = []; digest; linked = false }
in
let resolve_env = Env.build env (`Page page) in
Odoc_xref2.Link.resolve_page resolve_env page
Expand Down
11 changes: 8 additions & 3 deletions src/xref2/link.ml
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ let rec unit (resolver : Env.resolver) t =
| Pack _ as p -> (p, env)
in
let doc = comment_docs env t.doc in
{ t with content; doc; imports }
{ t with content; doc; imports; linked = true }

and value_ env parent t =
let open Value in
Expand Down Expand Up @@ -844,7 +844,9 @@ let build_resolver :
fun ?equal:_ ?hash:_ lookup_unit resolve_unit lookup_page resolve_page ->
{ Env.lookup_unit; resolve_unit; lookup_page; resolve_page }
*)
let link x y = Lookup_failures.catch_failures (fun () -> unit x y)
let link x y =
Lookup_failures.catch_failures (fun () ->
if y.Lang.Compilation_unit.linked then y else unit x y)

let page env page =
let env = Env.set_resolver Env.empty env in
Expand All @@ -863,6 +865,9 @@ let page env page =
Page.content =
List.map (with_location comment_block_element env) page.Page.content;
children;
linked = true;
}

let resolve_page env p = Lookup_failures.catch_failures (fun () -> page env p)
let resolve_page env p =
Lookup_failures.catch_failures (fun () ->
if p.Lang.Page.linked then p else page env p)
1 change: 1 addition & 0 deletions test/xref2/lib/common.cppo.ml
Original file line number Diff line number Diff line change
Expand Up @@ -604,6 +604,7 @@ let my_compilation_unit id docs s =
; hidden = false
; content = Module s
; expansion = None
; linked = false
}

let mkenv () =
Expand Down