Module Ocaml_parsing.Longident
Long identifiers, used in parsetree.
Warning: this module is unstable and part of compiler-libs.
To print a longident, see Pprintast.longident, using Format.asprintf to convert to a string.
type t = | Lident of string| Ldot of Ocaml_parsing.Longident.t * string| Lapply of Ocaml_parsing.Longident.t * Ocaml_parsing.Longident.t
val flatten : Ocaml_parsing.Longident.t -> string listval unflatten : string list -> Ocaml_parsing.Longident.t optionFor a non-empty list l, unflatten l is Some lid where lid is the long identifier created by concatenating the elements of l with Ldot. unflatten [] is None.
val head : Ocaml_parsing.Longident.t -> stringhead lid returns the leftmost part of lid, e.g., given String.Map.empty, returns String.
val last : Ocaml_parsing.Longident.t -> stringval parse : string -> Ocaml_parsing.Longident.tThis function is broken on identifiers that are not just "Word.Word.word"; for example, it returns incorrect results on infix operators and extended module paths.
If you want to generate long identifiers that are a list of dot-separated identifiers, the function unflatten is safer and faster. unflatten is available since OCaml 4.06.0.
If you want to parse any identifier correctly, use the long-identifiers functions from the Parse module, in particular Parse.longident. They are available since OCaml 4.11, and also provide proper input-location support.
val keep_suffix : Ocaml_parsing.Longident.t -> Ocaml_parsing.Longident.t * boolif li', b = keep_suffix li then:
- the prefix of
li'is a module path b = falseiffli' = li. Corollary:b = trueifliis a label access (i.e.li = X.Y.z.Foo.Bar...)