jon.recoil.org

Module Ocaml_typing.Path

type t =
  1. | Pident of Ocaml_typing.Ident.t
    (*

    Examples: x, List, int

    *)
  2. | Pdot of Ocaml_typing.Path.t * string
    (*

    Examples: List.map, Float.Array

    *)
  3. | Papply of Ocaml_typing.Path.t * Ocaml_typing.Path.t
    (*

    Examples: Set.Make(Int), Map.Make(Set.Make(Int))

    *)
  4. | Pextra_ty of Ocaml_typing.Path.t * Ocaml_typing.Path.extra_ty
    (*

    Pextra_ty (p, extra) are additional paths of types introduced by specific OCaml constructs. See below.

    *)
and extra_ty =
  1. | Pcstr_ty of string
    (*

    Pextra_ty (p, Pcstr_ty c) is the type of the inline record for constructor c inside type p.

    For example, in

      type 'a t = Nil | Cons of {hd : 'a; tl : 'a t}

    The inline record type {hd : 'a; tl : 'a t} cannot be named by the user in the surface syntax, but internally it has the path Pextra_ty (Pident `t`, Pcstr_ty "Cons").

    *)
  2. | Pext_ty
    (*

    Pextra_ty (p, Pext_ty) is the type of the inline record for the extension constructor p.

    For example, in

      type exn += Error of {loc : loc; msg : string}

    The inline record type {loc : loc; msg : string} cannot be named by the user in the surface syntax, but internally it has the path Pextra_ty (Pident `Error`, Pext_ty).

    *)
  3. | Punboxed_ty
    (*

    Pextra_ty (p, Punboxed_ty) is the type of the unboxed version of p.

    Example: float#, or t# given type t = { i : int ; s : string }.

    *)
val unboxed_version : Ocaml_typing.Path.t -> Ocaml_typing.Path.t
val is_unboxed_version : Ocaml_typing.Path.t -> bool
val find_free_opt : Ocaml_typing.Ident.t list -> Ocaml_typing.Path.t -> Ocaml_typing.Ident.t option
val exists_free : Ocaml_typing.Ident.t list -> Ocaml_typing.Path.t -> bool
val scope : Ocaml_typing.Path.t -> int
val flatten : Ocaml_typing.Path.t -> [ `Contains_apply | `Ok of Ocaml_typing.Ident.t * string list ]
val name : ?paren:(string -> bool) -> Ocaml_typing.Path.t -> string
val last : Ocaml_typing.Path.t -> string
val is_constructor_typath : Ocaml_typing.Path.t -> bool