package MlFront_Core

  1. Overview
  2. Docs

Source file ProxyModuleId.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
type t = {
  library_id : LibraryId.t;
  namespace_front : string list;
  namespace_tail : string;
}

let of_standard_module_id
    ({ library_id; namespace_front; namespace_tail; definition = _ } :
      StandardModuleId.t) : t =
  { library_id; namespace_front; namespace_tail }

let show_dot { library_id; namespace_front; namespace_tail } =
  Printf.sprintf "%s.%s%s"
    (LibraryId.full_name library_id)
    (String.concat "." (namespace_front @ [ namespace_tail ]))
    ModuleParsing.proxy_suffix

let standard_module_id : t -> StandardModuleId.t = function
  | { library_id; namespace_front; namespace_tail } ->
      StandardModuleId.create_explicit ~library_id ~namespace_front
        ~namespace_tail

let cast_as_special_module_id : t -> SpecialModuleId.t = function
  | { library_id; namespace_front; namespace_tail } ->
      SpecialModuleId.create_proxy_of_standard_module_id ~library_id
        ~namespace_front ~namespace_tail

let downcast_special_module_id : SpecialModuleId.t -> t option = function
  | { library_id; typ = ProxyModule { namespace_front; namespace_tail } } ->
      Some { library_id; namespace_front; namespace_tail }
  | _ -> None