type loc = Stdlib.Lexing.position * Stdlib.Lexing.positionA location in the source code.
Exception raised by functions of the atd library and indicating errors.
type annot = annot_section listAn annotation, consisting of a sequence of sections. Annot provides utilities for handling annotations.
and annot_section = string * (loc * annot_field list)represents a single annotation within edgy brackets. <"foo" bar baz="123" path.to
.thing="abc"> in ATD syntax translates to:
("foo", (loc1, [ ("bar", (loc2, None));
("baz", (loc3, Some "123"));
("path.to.thing", (loc4, Some "abc")) ] ))and annot_field = string * (loc * string option)An annotation field, i.e. a key with an optional value within an annotation.
type full_module = module_head * module_bodyContents of an ATD file.
and module_body = module_item listThe body of an ATD file is a list of type definitions. Type definitions are implicitely mutually recursive. They can be sorted based on dependencies using Atd.Util.tsort.
and module_item = | Type of type_def | There is currently only one kind of module items, that is single type definitions. |
and type_def = loc * (string * type_param * annot) * type_exprA type definition.
and type_expr = | Sum of loc * variant list * annot | |
| Record of loc * field list * annot | |
| Tuple of loc * cell list * annot | |
| List of loc * type_expr * annot | |
| Option of loc * type_expr * annot | |
| Nullable of loc * type_expr * annot | |
| Shared of loc * type_expr * annot | |
| Wrap of loc * type_expr * annot | |
| Name of loc * type_inst * annot | |
| Tvar of loc * string | A type expression is one of the following:
|
and variant = | Variant of loc * string * annot * type_expr option | |
| Inherit of loc * type_expr | A single variant or an |
Tuple cell. Note that annotations placed before the type expression are supported and represented here, such as the third cell in (float * float * <ocaml default="0.0"> float).
and field_kind = and field = [ | `Field of loc * (string * field_kind * annot) * type_expr |
| `Inherit of loc * type_expr |
]A single record field or an inherit statement. `Inherit statements can be expanded into fields using Atd_inherit or at loading time using the inherit_fields option offered by the Atd.Util functions.
Replace the location of the given expression. This is a shallow substitution. Sub-expressions are not affected.
val string_of_loc : loc -> stringConvert a location into a human-readable string such as File "foo.atd", line 123, characters 40-45.
val error_at : loc -> string -> 'aerror_at loc s raises Atd_error s' where s' is the location followed by s.
val dummy_loc : locDummy value for predefined constructs that are not associated with a useful source location. Should not show up in error messages.
Return the annotations associated with a type expression. Note that there can be annotations in a variety of places, not just after type expressions.
Replacement of the annotations associated with a type expression. This is a shallow transformation. Sub-expressions are not affected.
val map_all_annot : (annot -> annot) -> full_module -> full_moduleReplacement of all annotations occurring in an ATD module.
Iteration and accumulation over each type_expr node within a given type_expr.
val extract_type_names : ?ignorable:string list -> type_expr -> string listExtract all the type names occurring in a type expression under `Name, without duplicates.
- parameter ignorable
specifies a list of type names to exclude from the result
val is_parametrized : type_expr -> boolTest whether a type expression contains type variables (`Tvar).
val is_required : field_kind -> bool