package ppxlib
- Value description
- Value binding
- Type extension
- Type exception
- Type declaration
- Toplevel directive
- Structure item
- Signature item
- Row field
- Position
- Pattern
- Object field
- Module type declaration
- Module type
- Module substitution
- Module expr
- Module declaration
- Module binding
- Location
- Letop
- Label declaration
- Extension constructor
- Expression
- Directive argument
- Core type
- Constructor declaration
- Class type field
- Class type
- Class structure
- Class signature
- Class field
- Class expr
- Case
- Binding op
- Attribute
- 'a open infos
- 'a include infos
- 'a class infos
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
sha256=d9d959fc9f84260487e45684dc741898a92fc5506b61a7f5cac65d21832db925
    
    
  sha512=e428b1e3b89261c7efdaa18016264d1afbf067cb9b0d41124b04796c2487ac7ca8ee9a24a60d56f20d1774cb44aaa9ecf1512f17455812ba8d62d4ef93616ee7
    
    
  doc/ppxlib/Ppxlib/Ast_builder/Default/index.html
Module Ast_builder.DefaultSource
Helpers taking a ~loc argument. This module is meant to be opened or aliased.
Value description
val value_description : 
  loc:Location.t ->
  name:string Astlib.Location.loc ->
  type_:Astlib.Ast_500.Parsetree.core_type ->
  prim:string list ->
  Astlib.Ast_500.Parsetree.value_descriptionvalue_description constructs an Ast.value_description
Example OCaml
Values of type value_description represents:
Value binding
val value_binding : 
  loc:Location.t ->
  pat:Astlib.Ast_500.Parsetree.pattern ->
  expr:Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.value_bindingvalue_binding constructs an Ast.value_binding
Type extension
val type_extension : 
  loc:Location.t ->
  path:Astlib.Longident.t Astlib.Location.loc ->
  params:
    (Astlib.Ast_500.Parsetree.core_type
     * (Astlib.Ast_500.Asttypes.variance * Astlib.Ast_500.Asttypes.injectivity))
      list ->
  constructors:Astlib.Ast_500.Parsetree.extension_constructor list ->
  private_:Astlib.Ast_500.Asttypes.private_flag ->
  Astlib.Ast_500.Parsetree.type_extensiontype_extension constructs an Ast.type_extension
Example OCaml
Definition of new extensions constructors for the extensive sum type t (type t += ...).
Type exception
val type_exception : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.extension_constructor ->
  Astlib.Ast_500.Parsetree.type_exceptiontype_exception constructs an Ast.type_exception
Example OCaml
Definition of a new exception (exception E).
Type declaration
val type_declaration : 
  loc:Location.t ->
  name:string Astlib.Location.loc ->
  params:
    (Astlib.Ast_500.Parsetree.core_type
     * (Astlib.Ast_500.Asttypes.variance * Astlib.Ast_500.Asttypes.injectivity))
      list ->
  cstrs:
    (Astlib.Ast_500.Parsetree.core_type
     * Astlib.Ast_500.Parsetree.core_type
     * Astlib.Location.t)
      list ->
  kind:Astlib.Ast_500.Parsetree.type_kind ->
  private_:Astlib.Ast_500.Asttypes.private_flag ->
  manifest:Astlib.Ast_500.Parsetree.core_type option ->
  Astlib.Ast_500.Parsetree.type_declarationtype_declaration constructs an Ast.type_declaration
Example OCaml
Here are type declarations and their representation, for various ptype_kind and ptype_manifest values:
- type twhen- type_kindis- Ptype_abstract, and- manifestis- None,
- type t = T0when- type_kindis- Ptype_abstract, and- manifestis- Some T0,
- type t = C of T | ...when- type_kindis- Ptype_variant, and- manifestis- None,
- type t = T0 = C of T | ...when- type_kindis- Ptype_variant, and- manifestis- Some T0,
- type t = {l: T; ...}when- type_kindis- Ptype_record, and- manifestis- None,
- type t = T0 = {l : T; ...}when- type_kindis- Ptype_record, and- manifestis- Some T0,
- type t = ..when- type_kindis- Ptype_open, and- manifestis- None.
Toplevel directive
val toplevel_directive : 
  loc:Location.t ->
  name:string Astlib.Location.loc ->
  arg:Astlib.Ast_500.Parsetree.directive_argument option ->
  Astlib.Ast_500.Parsetree.toplevel_directivetoplevel_directive constructs an Ast.toplevel_directive
Structure item
val pstr_extension : 
  loc:Location.t ->
  (string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
  Astlib.Ast_500.Parsetree.attribute list ->
  Astlib.Ast_500.Parsetree.structure_itemval pstr_attribute : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.attribute ->
  Astlib.Ast_500.Parsetree.structure_itemval pstr_class_type : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.class_type Astlib.Ast_500.Parsetree.class_infos list ->
  Astlib.Ast_500.Parsetree.structure_itempstr_class_type constructs an Ast.structure_item_desc.Pstr_class_type
Example OCaml
class type ct1 = ... and ... and ctn = ...
val pstr_class : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.class_expr Astlib.Ast_500.Parsetree.class_infos list ->
  Astlib.Ast_500.Parsetree.structure_itempstr_class constructs an Ast.structure_item_desc.Pstr_class
Example OCaml
class c1 = ... and ... and cn = ...
val pstr_modtype : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.module_type_declaration ->
  Astlib.Ast_500.Parsetree.structure_itemval pstr_recmodule : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.module_binding list ->
  Astlib.Ast_500.Parsetree.structure_itempstr_recmodule constructs an Ast.structure_item_desc.Pstr_recmodule
Example OCaml
module rec X1 = ME1 and ... and Xn = MEn
val pstr_module : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.module_binding ->
  Astlib.Ast_500.Parsetree.structure_itemval pstr_exception : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.type_exception ->
  Astlib.Ast_500.Parsetree.structure_itempstr_exception constructs an Ast.structure_item_desc.Pstr_exception
Example OCaml
- exception C of T
- exception C = M.X
val pstr_typext : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.type_extension ->
  Astlib.Ast_500.Parsetree.structure_itemval pstr_type : 
  loc:Location.t ->
  Astlib.Ast_500.Asttypes.rec_flag ->
  Astlib.Ast_500.Parsetree.type_declaration list ->
  Astlib.Ast_500.Parsetree.structure_itempstr_type constructs an Ast.structure_item_desc.Pstr_type
Example OCaml
type t1 = ... and ... and tn = ...
val pstr_primitive : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.value_description ->
  Astlib.Ast_500.Parsetree.structure_itempstr_primitive constructs an Ast.structure_item_desc.Pstr_primitive
Example OCaml
- val x: T
- external x: T = "s1" ... "sn"
val pstr_value : 
  loc:Location.t ->
  Astlib.Ast_500.Asttypes.rec_flag ->
  Astlib.Ast_500.Parsetree.value_binding list ->
  Astlib.Ast_500.Parsetree.structure_itempstr_value constructs an Ast.structure_item_desc.Pstr_value
Example OCaml
Pstr_value(rec, [(P1, E1 ; ... ; (Pn, En))]) represents:
- let P1 = E1 and ... and Pn = ENwhen- recis- Nonrecursive,
- let rec P1 = E1 and ... and Pn = ENwhen- recis- Recursive.
val pstr_eval : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.attribute list ->
  Astlib.Ast_500.Parsetree.structure_itemSignature item
val psig_extension : 
  loc:Location.t ->
  (string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
  Astlib.Ast_500.Parsetree.attribute list ->
  Astlib.Ast_500.Parsetree.signature_itemval psig_attribute : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.attribute ->
  Astlib.Ast_500.Parsetree.signature_itemval psig_class_type : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.class_type Astlib.Ast_500.Parsetree.class_infos list ->
  Astlib.Ast_500.Parsetree.signature_itempsig_class_type constructs an Ast.signature_item_desc.Psig_class_type
Example OCaml
class type ct1 = ... and ... and ctn = ...
val psig_class : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.class_type Astlib.Ast_500.Parsetree.class_infos list ->
  Astlib.Ast_500.Parsetree.signature_itempsig_class constructs an Ast.signature_item_desc.Psig_class
Example OCaml
class c1 : ... and ... and cn : ...
val psig_modtypesubst : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.module_type_declaration ->
  Astlib.Ast_500.Parsetree.signature_itempsig_modtypesubst constructs an Ast.signature_item_desc.Psig_modtypesubst
Example OCaml
module type S :=  ...
val psig_modtype : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.module_type_declaration ->
  Astlib.Ast_500.Parsetree.signature_itempsig_modtype constructs an Ast.signature_item_desc.Psig_modtype
Example OCaml
module type S = MT and module type S
val psig_recmodule : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.module_declaration list ->
  Astlib.Ast_500.Parsetree.signature_itempsig_recmodule constructs an Ast.signature_item_desc.Psig_recmodule
Example OCaml
module rec X1 : MT1 and ... and Xn : MTn
val psig_modsubst : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.module_substitution ->
  Astlib.Ast_500.Parsetree.signature_itemval psig_module : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.module_declaration ->
  Astlib.Ast_500.Parsetree.signature_itempsig_module constructs an Ast.signature_item_desc.Psig_module
Example OCaml
module X = M and module X : MT
val psig_exception : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.type_exception ->
  Astlib.Ast_500.Parsetree.signature_itemval psig_typext : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.type_extension ->
  Astlib.Ast_500.Parsetree.signature_itemval psig_typesubst : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.type_declaration list ->
  Astlib.Ast_500.Parsetree.signature_itempsig_typesubst constructs an Ast.signature_item_desc.Psig_typesubst
Example OCaml
type t1 := ... and ... and tn := ...
val psig_type : 
  loc:Location.t ->
  Astlib.Ast_500.Asttypes.rec_flag ->
  Astlib.Ast_500.Parsetree.type_declaration list ->
  Astlib.Ast_500.Parsetree.signature_itempsig_type constructs an Ast.signature_item_desc.Psig_type
Example OCaml
type t1 = ... and ... and tn  = ...
val psig_value : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.value_description ->
  Astlib.Ast_500.Parsetree.signature_itempsig_value constructs an Ast.signature_item_desc.Psig_value
Example OCaml
- val x: T
- external x: T = "s1" ... "sn"
Row field
val rinherit : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.core_type ->
  Astlib.Ast_500.Parsetree.row_fieldval rtag : 
  loc:Location.t ->
  string Astlib.Location.loc ->
  bool ->
  Astlib.Ast_500.Parsetree.core_type list ->
  Astlib.Ast_500.Parsetree.row_fieldrtag constructs an Ast.row_field_desc.Rtag
Example OCaml
Rtag(`A, b, l) represents:
- `Awhen- bis- trueand- lis- [],
- `A of Twhen- bis- falseand- lis- [T],
- `A of T1 & .. & Tnwhen- bis- falseand- lis- [T1;...Tn],
- `A of & T1 & .. & Tnwhen- bis- trueand- lis- [T1;...Tn].
- The boolfield is true if the tag contains a constant (empty) constructor.
- &occurs when several types are used for the same constructor (see 4.2 in the manual)
Position
position constructs an Ast.position
Pattern
val ppat_open : 
  loc:Location.t ->
  Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.pattern ->
  Astlib.Ast_500.Parsetree.patternval ppat_extension : 
  loc:Location.t ->
  (string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
  Astlib.Ast_500.Parsetree.patternval ppat_exception : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.pattern ->
  Astlib.Ast_500.Parsetree.patternval ppat_unpack : 
  loc:Location.t ->
  string option Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.patternppat_unpack constructs an Ast.pattern_desc.Ppat_unpack
Example OCaml
Ppat_unpack(s) represents:
- (module P)when- sis- Some "P"
- (module _)when- sis- None
Note: (module P : S) is represented as Ppat_constraint(Ppat_unpack(Some "P"), Ptyp_package S)
val ppat_lazy : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.pattern ->
  Astlib.Ast_500.Parsetree.patternval ppat_type : 
  loc:Location.t ->
  Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.patternval ppat_constraint : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.pattern ->
  Astlib.Ast_500.Parsetree.core_type ->
  Astlib.Ast_500.Parsetree.patternval ppat_or : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.pattern ->
  Astlib.Ast_500.Parsetree.pattern ->
  Astlib.Ast_500.Parsetree.patternval ppat_array : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.pattern list ->
  Astlib.Ast_500.Parsetree.patternval ppat_record : 
  loc:Location.t ->
  (Astlib.Longident.t Astlib.Location.loc * Astlib.Ast_500.Parsetree.pattern)
    list ->
  Astlib.Ast_500.Asttypes.closed_flag ->
  Astlib.Ast_500.Parsetree.patternppat_record constructs an Ast.pattern_desc.Ppat_record
Example OCaml
Ppat_record([(l1, P1) ; ... ; (ln, Pn)], flag) represents:
Invariant: n > 0
val ppat_variant : 
  loc:Location.t ->
  string ->
  Astlib.Ast_500.Parsetree.pattern option ->
  Astlib.Ast_500.Parsetree.patternppat_variant constructs an Ast.pattern_desc.Ppat_variant
Example OCaml
Ppat_variant(`A, pat) represents:
- `Awhen- patis- None,
- `A Pwhen- patis- Some P
val ppat_tuple : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.pattern list ->
  Astlib.Ast_500.Parsetree.patternppat_tuple constructs an Ast.pattern_desc.Ppat_tuple
Example OCaml
Patterns (P1, ..., Pn).
Invariant: n >= 2
val ppat_interval : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.constant ->
  Astlib.Ast_500.Parsetree.constant ->
  Astlib.Ast_500.Parsetree.patternppat_interval constructs an Ast.pattern_desc.Ppat_interval
Example OCaml
Patterns such as 'a'..'z'.
Other forms of interval are recognized by the parser but rejected by the type-checker.
val ppat_constant : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.constant ->
  Astlib.Ast_500.Parsetree.patternppat_constant constructs an Ast.pattern_desc.Ppat_constant
Example OCaml
Patterns such as 1, 'a', "true", 1.0, 1l, 1L, 1n
val ppat_alias : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.pattern ->
  string Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.patternval ppat_var : 
  loc:Location.t ->
  string Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.patternObject field
val oinherit : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.core_type ->
  Astlib.Ast_500.Parsetree.object_fieldoinherit constructs an Ast.object_field_desc.Oinherit
val otag : 
  loc:Location.t ->
  string Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.core_type ->
  Astlib.Ast_500.Parsetree.object_fieldotag constructs an Ast.object_field_desc.Otag
Module type declaration
val module_type_declaration : 
  loc:Location.t ->
  name:string Astlib.Location.loc ->
  type_:Astlib.Ast_500.Parsetree.module_type option ->
  Astlib.Ast_500.Parsetree.module_type_declarationmodule_type_declaration constructs an Ast.module_type_declaration
Example OCaml
Values of type module_type_declaration represents:
- S = MT,
- Sfor abstract module type declaration, when- pmtd_typeis- None.
Module type
val pmty_alias : 
  loc:Location.t ->
  Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.module_typeval pmty_extension : 
  loc:Location.t ->
  (string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
  Astlib.Ast_500.Parsetree.module_typeval pmty_typeof : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.module_expr ->
  Astlib.Ast_500.Parsetree.module_typeval pmty_with : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.module_type ->
  Astlib.Ast_500.Parsetree.with_constraint list ->
  Astlib.Ast_500.Parsetree.module_typeval pmty_functor : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.functor_parameter ->
  Astlib.Ast_500.Parsetree.module_type ->
  Astlib.Ast_500.Parsetree.module_typeval pmty_signature : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.signature_item list ->
  Astlib.Ast_500.Parsetree.module_typeval pmty_ident : 
  loc:Location.t ->
  Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.module_typeModule substitution
val module_substitution : 
  loc:Location.t ->
  name:string Astlib.Location.loc ->
  manifest:Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.module_substitutionmodule_substitution constructs an Ast.module_substitution
Example OCaml
Values of type module_substitution represents S := M
Module expr
val pmod_extension : 
  loc:Location.t ->
  (string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
  Astlib.Ast_500.Parsetree.module_exprval pmod_unpack : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.module_exprval pmod_constraint : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.module_expr ->
  Astlib.Ast_500.Parsetree.module_type ->
  Astlib.Ast_500.Parsetree.module_exprval pmod_apply : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.module_expr ->
  Astlib.Ast_500.Parsetree.module_expr ->
  Astlib.Ast_500.Parsetree.module_exprval pmod_functor : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.functor_parameter ->
  Astlib.Ast_500.Parsetree.module_expr ->
  Astlib.Ast_500.Parsetree.module_exprval pmod_structure : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.structure_item list ->
  Astlib.Ast_500.Parsetree.module_exprval pmod_ident : 
  loc:Location.t ->
  Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.module_exprModule declaration
val module_declaration : 
  loc:Location.t ->
  name:string option Astlib.Location.loc ->
  type_:Astlib.Ast_500.Parsetree.module_type ->
  Astlib.Ast_500.Parsetree.module_declarationmodule_declaration constructs an Ast.module_declaration
Example OCaml
Values of type module_declaration represents S : MT
Module binding
val module_binding : 
  loc:Location.t ->
  name:string option Astlib.Location.loc ->
  expr:Astlib.Ast_500.Parsetree.module_expr ->
  Astlib.Ast_500.Parsetree.module_bindingmodule_binding constructs an Ast.module_binding
Example OCaml
Values of type module_binding represents module X = ME
Location
val location : 
  start:Lexing.position ->
  end_:Lexing.position ->
  ghost:bool ->
  Astlib.Location.tlocation constructs an Ast.location
Letop
val letop : 
  let_:Astlib.Ast_500.Parsetree.binding_op ->
  ands:Astlib.Ast_500.Parsetree.binding_op list ->
  body:Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.letopletop constructs an Ast.letop
Label declaration
val label_declaration : 
  loc:Location.t ->
  name:string Astlib.Location.loc ->
  mutable_:Astlib.Ast_500.Asttypes.mutable_flag ->
  type_:Astlib.Ast_500.Parsetree.core_type ->
  Astlib.Ast_500.Parsetree.label_declarationlabel_declaration constructs an Ast.label_declaration
Example OCaml
- { ...; l: T; ... }when- pld_mutableis- Immutable,
- { ...; mutable l: T; ... }when- pld_mutableis- Mutable.
Note: T can be a Ptyp_poly.
Extension constructor
val extension_constructor : 
  loc:Location.t ->
  name:string Astlib.Location.loc ->
  kind:Astlib.Ast_500.Parsetree.extension_constructor_kind ->
  Astlib.Ast_500.Parsetree.extension_constructorextension_constructor constructs an Ast.extension_constructor
Expression
val pexp_extension : 
  loc:Location.t ->
  (string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
  Astlib.Ast_500.Parsetree.expressionval pexp_letop : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.letop ->
  Astlib.Ast_500.Parsetree.expressionpexp_letop constructs an Ast.expression_desc.Pexp_letop
Example OCaml
- let* P = E0 in E1
- let* P0 = E00 and* P1 = E01 in E1
val pexp_open : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.module_expr Astlib.Ast_500.Parsetree.open_infos ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionpexp_open constructs an Ast.expression_desc.Pexp_open
Example OCaml
- M.(E)
- let open M in E
- let open! M in E
val pexp_pack : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.module_expr ->
  Astlib.Ast_500.Parsetree.expressionpexp_pack constructs an Ast.expression_desc.Pexp_pack
Example OCaml
(module ME).
(module ME : S) is represented as Pexp_constraint(Pexp_pack ME, Ptyp_package S)
val pexp_newtype : 
  loc:Location.t ->
  string Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionval pexp_object : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.class_structure ->
  Astlib.Ast_500.Parsetree.expressionval pexp_poly : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.core_type option ->
  Astlib.Ast_500.Parsetree.expressionpexp_poly constructs an Ast.expression_desc.Pexp_poly
Example OCaml
Used for method bodies.
Can only be used as the expression under Cfk_concrete for methods (not values).
val pexp_lazy : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionval pexp_assert : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionpexp_assert constructs an Ast.expression_desc.Pexp_assert
Example OCaml
assert E.
Note: assert false is treated in a special way by the type-checker.
val pexp_letexception : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.extension_constructor ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionpexp_letexception constructs an Ast.expression_desc.Pexp_letexception
Example OCaml
let exception C in E
val pexp_letmodule : 
  loc:Location.t ->
  string option Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.module_expr ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionval pexp_override : 
  loc:Location.t ->
  (string Astlib.Location.loc * Astlib.Ast_500.Parsetree.expression) list ->
  Astlib.Ast_500.Parsetree.expressionpexp_override constructs an Ast.expression_desc.Pexp_override
Example OCaml
{< x1 = E1; ...; xn = En >}
val pexp_setinstvar : 
  loc:Location.t ->
  string Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionval pexp_new : 
  loc:Location.t ->
  Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.expressionval pexp_send : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  string Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.expressionval pexp_coerce : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.core_type option ->
  Astlib.Ast_500.Parsetree.core_type ->
  Astlib.Ast_500.Parsetree.expressionpexp_coerce constructs an Ast.expression_desc.Pexp_coerce
Example OCaml
Pexp_coerce(E, from, T) represents
- (E :> T)when- fromis- None,
- (E : T0 :> T)when- fromis- Some T0.
val pexp_constraint : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.core_type ->
  Astlib.Ast_500.Parsetree.expressionval pexp_for : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.pattern ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Asttypes.direction_flag ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionpexp_for constructs an Ast.expression_desc.Pexp_for
Example OCaml
Pexp_for(i, E1, E2, direction, E3) represents:
val pexp_while : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionval pexp_sequence : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionval pexp_ifthenelse : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expression option ->
  Astlib.Ast_500.Parsetree.expressionval pexp_array : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression list ->
  Astlib.Ast_500.Parsetree.expressionval pexp_setfield : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionval pexp_field : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.expressionval pexp_record : 
  loc:Location.t ->
  (Astlib.Longident.t Astlib.Location.loc * Astlib.Ast_500.Parsetree.expression)
    list ->
  Astlib.Ast_500.Parsetree.expression option ->
  Astlib.Ast_500.Parsetree.expressionpexp_record constructs an Ast.expression_desc.Pexp_record
Example OCaml
Pexp_record([(l1,P1) ; ... ; (ln,Pn)], exp0) represents
- { l1=P1; ...; ln=Pn }when- exp0is- None
- { E0 with l1=P1; ...; ln=Pn }when- exp0is- Some E0
Invariant: n > 0
val pexp_variant : 
  loc:Location.t ->
  string ->
  Astlib.Ast_500.Parsetree.expression option ->
  Astlib.Ast_500.Parsetree.expressionpexp_variant constructs an Ast.expression_desc.Pexp_variant
Example OCaml
Pexp_variant(`A, exp) represents
- `Awhen- expis- None
- `A Ewhen- expis- Some E
val pexp_construct : 
  loc:Location.t ->
  Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.expression option ->
  Astlib.Ast_500.Parsetree.expressionpexp_construct constructs an Ast.expression_desc.Pexp_construct
Example OCaml
Pexp_construct(C, exp) represents:
- Cwhen- expis- None,
- C Ewhen- expis- Some E,
- C (E1, ..., En)when- expis- Some (Pexp_tuple[E1;...;En])
val pexp_tuple : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression list ->
  Astlib.Ast_500.Parsetree.expressionpexp_tuple constructs an Ast.expression_desc.Pexp_tuple
Example OCaml
Expressions (E1, ..., En)
Invariant: n >= 2
val pexp_try : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.case list ->
  Astlib.Ast_500.Parsetree.expressionpexp_try constructs an Ast.expression_desc.Pexp_try
Example OCaml
try E0 with P1 -> E1 | ... | Pn -> En
val pexp_match : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.case list ->
  Astlib.Ast_500.Parsetree.expressionpexp_match constructs an Ast.expression_desc.Pexp_match
Example OCaml
match E0 with P1 -> E1 | ... | Pn -> En
val pexp_apply : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  (Astlib.Ast_500.Asttypes.arg_label * Astlib.Ast_500.Parsetree.expression)
    list ->
  Astlib.Ast_500.Parsetree.expressionpexp_apply constructs an Ast.expression_desc.Pexp_apply
Example OCaml
Pexp_apply(E0, [(l1, E1) ; ... ; (ln, En)]) represents E0 ~l1:E1 ... ~ln:En
li can be Nolabel (non labeled argument), Labelled (labelled arguments) or Optional (optional argument).
Invariant: n > 0
val pexp_fun : 
  loc:Location.t ->
  Astlib.Ast_500.Asttypes.arg_label ->
  Astlib.Ast_500.Parsetree.expression option ->
  Astlib.Ast_500.Parsetree.pattern ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionpexp_fun constructs an Ast.expression_desc.Pexp_fun
Example OCaml
Pexp_fun(lbl, exp0, P, E1) represents:
- fun P -> E1when- lblis- Nolabeland- exp0is- None
- fun ~l:P -> E1when- lblis- Labelled land- exp0is- None
- fun ?l:P -> E1when- lblis- Optional land- exp0is- None
- fun ?l:(P = E0) -> E1when- lblis- Optional land- exp0is- Some E0
Notes:
val pexp_function : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.case list ->
  Astlib.Ast_500.Parsetree.expressionpexp_function constructs an Ast.expression_desc.Pexp_function
Example OCaml
function P1 -> E1 | ... | Pn -> En
val pexp_let : 
  loc:Location.t ->
  Astlib.Ast_500.Asttypes.rec_flag ->
  Astlib.Ast_500.Parsetree.value_binding list ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionpexp_let constructs an Ast.expression_desc.Pexp_let
Example OCaml
Pexp_let(flag, [(P1,E1) ; ... ; (Pn,En)], E) represents:
- let P1 = E1 and ... and Pn = EN in Ewhen- flagis- Nonrecursive,
- let rec P1 = E1 and ... and Pn = EN in Ewhen- flagis- Recursive.
val pexp_constant : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.constant ->
  Astlib.Ast_500.Parsetree.expressionpexp_constant constructs an Ast.expression_desc.Pexp_constant
Example OCaml
Expressions constant such as 1, 'a', "true", 1.0, 1l, 1L, 1n
val pexp_ident : 
  loc:Location.t ->
  Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.expressionDirective argument
pdir_bool constructs an Ast.directive_argument_desc.Pdir_bool
val pdir_ident : 
  loc:Location.t ->
  Astlib.Longident.t ->
  Astlib.Ast_500.Parsetree.directive_argumentpdir_ident constructs an Ast.directive_argument_desc.Pdir_ident
val pdir_int : 
  loc:Location.t ->
  string ->
  char option ->
  Astlib.Ast_500.Parsetree.directive_argumentpdir_int constructs an Ast.directive_argument_desc.Pdir_int
pdir_string constructs an Ast.directive_argument_desc.Pdir_string
Core type
val ptyp_extension : 
  loc:Location.t ->
  (string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
  Astlib.Ast_500.Parsetree.core_typeval ptyp_package : 
  loc:Location.t ->
  (Astlib.Longident.t Astlib.Location.loc
   * (Astlib.Longident.t Astlib.Location.loc
      * Astlib.Ast_500.Parsetree.core_type)
       list) ->
  Astlib.Ast_500.Parsetree.core_typeval ptyp_poly : 
  loc:Location.t ->
  string Astlib.Location.loc list ->
  Astlib.Ast_500.Parsetree.core_type ->
  Astlib.Ast_500.Parsetree.core_typeptyp_poly constructs an Ast.core_type_desc.Ptyp_poly
Example OCaml
'a1 ... 'an. T
Can only appear in the following context:
- As the core_typeof aPpat_constraintnode corresponding to a constraint on a let-binding:
  let x : 'a1 ... 'an. T = e ...- Under Cfk_virtualfor methods (not values).
- As the core_typeof aPctf_methodnode.
- As the pld_typefield of alabel_declaration.
- As a core_typeof aPtyp_objectnode.
- As the pval_typefield of avalue_description.
val ptyp_variant : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.row_field list ->
  Astlib.Ast_500.Asttypes.closed_flag ->
  string list option ->
  Astlib.Ast_500.Parsetree.core_typeptyp_variant constructs an Ast.core_type_desc.Ptyp_variant
Example OCaml
Ptyp_variant([`A;`B], flag, labels) represents:
val ptyp_alias : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.core_type ->
  string ->
  Astlib.Ast_500.Parsetree.core_typeval ptyp_class : 
  loc:Location.t ->
  Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.core_type list ->
  Astlib.Ast_500.Parsetree.core_typeptyp_class constructs an Ast.core_type_desc.Ptyp_class
Example OCaml
Ptyp_class(tconstr, l) represents:
- #tconstrwhen- l=[],
- T #tconstrwhen- l=[T],
- (T1, ..., Tn) #tconstrwhen- l=[T1 ; ... ; Tn].
val ptyp_object : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.object_field list ->
  Astlib.Ast_500.Asttypes.closed_flag ->
  Astlib.Ast_500.Parsetree.core_typeptyp_object constructs an Ast.core_type_desc.Ptyp_object
Example OCaml
Ptyp_object([ l1:T1; ...; ln:Tn ], flag) represents:
val ptyp_constr : 
  loc:Location.t ->
  Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.core_type list ->
  Astlib.Ast_500.Parsetree.core_typeptyp_constr constructs an Ast.core_type_desc.Ptyp_constr
Example OCaml
Ptyp_constr(lident, l) represents:
- tconstrwhen- l=[],
- T tconstrwhen- l=[T],
- (T1, ..., Tn) tconstrwhen- l=[T1 ; ... ; Tn].
val ptyp_tuple : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.core_type list ->
  Astlib.Ast_500.Parsetree.core_typeptyp_tuple constructs an Ast.core_type_desc.Ptyp_tuple
Example OCaml
Ptyp_tuple([T1 ; ... ; Tn]) represents a product type T1 * ... * Tn.
Invariant: n >= 2.
val ptyp_arrow : 
  loc:Location.t ->
  Astlib.Ast_500.Asttypes.arg_label ->
  Astlib.Ast_500.Parsetree.core_type ->
  Astlib.Ast_500.Parsetree.core_type ->
  Astlib.Ast_500.Parsetree.core_typeptyp_arrow constructs an Ast.core_type_desc.Ptyp_arrow
Example OCaml
Ptyp_arrow(lbl, T1, T2) represents:
Constructor declaration
Class type field
val pctf_extension : 
  loc:Location.t ->
  (string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
  Astlib.Ast_500.Parsetree.class_type_fieldval pctf_attribute : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.attribute ->
  Astlib.Ast_500.Parsetree.class_type_fieldval pctf_constraint : 
  loc:Location.t ->
  (Astlib.Ast_500.Parsetree.core_type * Astlib.Ast_500.Parsetree.core_type) ->
  Astlib.Ast_500.Parsetree.class_type_fieldpctf_constraint constructs an Ast.class_type_field_desc.Pctf_constraint
Example OCaml
constraint T1 = T2
val pctf_method : 
  loc:Location.t ->
  (string Astlib.Location.loc
   * Astlib.Ast_500.Asttypes.private_flag
   * Astlib.Ast_500.Asttypes.virtual_flag
   * Astlib.Ast_500.Parsetree.core_type) ->
  Astlib.Ast_500.Parsetree.class_type_fieldpctf_method constructs an Ast.class_type_field_desc.Pctf_method
Example OCaml
method x: T
Note: T can be a Ptyp_poly.
val pctf_inherit : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.class_type ->
  Astlib.Ast_500.Parsetree.class_type_fieldClass type
val pcty_extension : 
  loc:Location.t ->
  (string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
  Astlib.Ast_500.Parsetree.class_typeval pcty_arrow : 
  loc:Location.t ->
  Astlib.Ast_500.Asttypes.arg_label ->
  Astlib.Ast_500.Parsetree.core_type ->
  Astlib.Ast_500.Parsetree.class_type ->
  Astlib.Ast_500.Parsetree.class_typepcty_arrow constructs an Ast.class_type_desc.Pcty_arrow
Example OCaml
Pcty_arrow(lbl, T, CT) represents:
- T -> CTwhen- lblis- Nolabel,
- ~l:T -> CTwhen- lblis- Labelled l,
- ?l:T -> CTwhen- lblis- Optional l.
val pcty_signature : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.class_signature ->
  Astlib.Ast_500.Parsetree.class_typeval pcty_constr : 
  loc:Location.t ->
  Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.core_type list ->
  Astlib.Ast_500.Parsetree.class_typeClass structure
val class_structure : 
  self:Astlib.Ast_500.Parsetree.pattern ->
  fields:Astlib.Ast_500.Parsetree.class_field list ->
  Astlib.Ast_500.Parsetree.class_structureclass_structure constructs an Ast.class_structure
Example OCaml
Values of type class_structure represents:
- object(selfpat) ... end
- object ... endwhen- pcstr_selfis- Ppat_any
Class signature
val class_signature : 
  self:Astlib.Ast_500.Parsetree.core_type ->
  fields:Astlib.Ast_500.Parsetree.class_type_field list ->
  Astlib.Ast_500.Parsetree.class_signatureclass_signature constructs an Ast.class_signature
Example OCaml
Values of type class_signature represents:
- object('selfpat) ... end
- object ... endwhen- pcsig_selfis- Ptyp_any
Class field
val pcf_extension : 
  loc:Location.t ->
  (string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
  Astlib.Ast_500.Parsetree.class_fieldval pcf_attribute : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.attribute ->
  Astlib.Ast_500.Parsetree.class_fieldval pcf_initializer : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.class_fieldval pcf_constraint : 
  loc:Location.t ->
  (Astlib.Ast_500.Parsetree.core_type * Astlib.Ast_500.Parsetree.core_type) ->
  Astlib.Ast_500.Parsetree.class_fieldval pcf_method : 
  loc:Location.t ->
  (string Astlib.Location.loc
   * Astlib.Ast_500.Asttypes.private_flag
   * Astlib.Ast_500.Parsetree.class_field_kind) ->
  Astlib.Ast_500.Parsetree.class_fieldpcf_method constructs an Ast.class_field_desc.Pcf_method
Example OCaml
val pcf_val : 
  loc:Location.t ->
  (string Astlib.Location.loc
   * Astlib.Ast_500.Asttypes.mutable_flag
   * Astlib.Ast_500.Parsetree.class_field_kind) ->
  Astlib.Ast_500.Parsetree.class_fieldpcf_val constructs an Ast.class_field_desc.Pcf_val
Example OCaml
Pcf_val(x,flag, kind) represents:
- val x = Ewhen- flagis- Immutableand- kindis- Cfk_concrete(Fresh, E)
- val virtual x: Twhen- flagis- Immutableand- kindis- Cfk_virtual(T)
- val mutable x = Ewhen- flagis- Mutableand- kindis- Cfk_concrete(Fresh, E)
- val mutable virtual x: Twhen- flagis- Mutableand- kindis- Cfk_virtual(T)
val pcf_inherit : 
  loc:Location.t ->
  Astlib.Ast_500.Asttypes.override_flag ->
  Astlib.Ast_500.Parsetree.class_expr ->
  string Astlib.Location.loc option ->
  Astlib.Ast_500.Parsetree.class_fieldpcf_inherit constructs an Ast.class_field_desc.Pcf_inherit
Example OCaml
Pcf_inherit(flag, CE, s) represents:
Class expr
val pcl_extension : 
  loc:Location.t ->
  (string Astlib.Location.loc * Astlib.Ast_500.Parsetree.payload) ->
  Astlib.Ast_500.Parsetree.class_exprval pcl_constraint : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.class_expr ->
  Astlib.Ast_500.Parsetree.class_type ->
  Astlib.Ast_500.Parsetree.class_exprval pcl_let : 
  loc:Location.t ->
  Astlib.Ast_500.Asttypes.rec_flag ->
  Astlib.Ast_500.Parsetree.value_binding list ->
  Astlib.Ast_500.Parsetree.class_expr ->
  Astlib.Ast_500.Parsetree.class_exprpcl_let constructs an Ast.class_expr_desc.Pcl_let
Example OCaml
Pcl_let(rec, [(P1, E1); ... ; (Pn, En)], CE) represents:
- let P1 = E1 and ... and Pn = EN in CEwhen- recis- Nonrecursive,
- let rec P1 = E1 and ... and Pn = EN in CEwhen- recis- Recursive.
val pcl_apply : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.class_expr ->
  (Astlib.Ast_500.Asttypes.arg_label * Astlib.Ast_500.Parsetree.expression)
    list ->
  Astlib.Ast_500.Parsetree.class_exprpcl_apply constructs an Ast.class_expr_desc.Pcl_apply
Example OCaml
Pcl_apply(CE, [(l1,E1) ; ... ; (ln,En)]) represents CE ~l1:E1 ... ~ln:En. li can be empty (non labeled argument) or start with ? (optional argument).
Invariant: n > 0
val pcl_fun : 
  loc:Location.t ->
  Astlib.Ast_500.Asttypes.arg_label ->
  Astlib.Ast_500.Parsetree.expression option ->
  Astlib.Ast_500.Parsetree.pattern ->
  Astlib.Ast_500.Parsetree.class_expr ->
  Astlib.Ast_500.Parsetree.class_exprpcl_fun constructs an Ast.class_expr_desc.Pcl_fun
Example OCaml
Pcl_fun(lbl, exp0, P, CE) represents:
- fun P -> CEwhen- lblis- Nolabeland- exp0is- None,
- fun ~l:P -> CEwhen- lblis- Labelled land- exp0is- None,
- fun ?l:P -> CEwhen- lblis- Optional land- exp0is- None,
- fun ?l:(P = E0) -> CEwhen- lblis- Optional land- exp0is- Some E0.
val pcl_structure : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.class_structure ->
  Astlib.Ast_500.Parsetree.class_exprval pcl_constr : 
  loc:Location.t ->
  Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.core_type list ->
  Astlib.Ast_500.Parsetree.class_exprCase
val case : 
  lhs:Astlib.Ast_500.Parsetree.pattern ->
  guard:Astlib.Ast_500.Parsetree.expression option ->
  rhs:Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.caseBinding op
val binding_op : 
  loc:Location.t ->
  op:string Astlib.Location.loc ->
  pat:Astlib.Ast_500.Parsetree.pattern ->
  exp:Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.binding_opbinding_op constructs an Ast.binding_op
Attribute
val attribute : 
  loc:Location.t ->
  name:string Astlib.Location.loc ->
  payload:Astlib.Ast_500.Parsetree.payload ->
  Astlib.Ast_500.Parsetree.attributeattribute constructs an Ast.attribute
Example OCaml
Attributes such as [@id ARG] and [@@id ARG].
Metadata containers passed around within the AST. The compiler ignores unknown attributes.
'a open infos
val open_infos : 
  loc:Location.t ->
  expr:'a ->
  override:Astlib.Ast_500.Asttypes.override_flag ->
  'a Astlib.Ast_500.Parsetree.open_infosopen_infos constructs an Ast.'aopen_infos
Example OCaml
Values of type 'a open_infos represents:
- open! Xwhen- popen_overrideis- Override(silences the "used identifier shadowing" warning)
- open Xwhen- popen_overrideis- Fresh
'a include infos
include_infos constructs an Ast.'ainclude_infos
'a class infos
val class_infos : 
  loc:Location.t ->
  virt:Astlib.Ast_500.Asttypes.virtual_flag ->
  params:
    (Astlib.Ast_500.Parsetree.core_type
     * (Astlib.Ast_500.Asttypes.variance * Astlib.Ast_500.Asttypes.injectivity))
      list ->
  name:string Astlib.Location.loc ->
  expr:'a ->
  'a Astlib.Ast_500.Parsetree.class_infosclass_infos constructs an Ast.'aclass_infos
Example OCaml
Values of type class_expr class_infos represents:
- class c = ...
- class ['a1,...,'an] c = ...
- class virtual c = ...
They are also used for "class type" declaration.
This module contains updated versions of node constructors that were kept stable when the node changed. For every function in this module, there's an equally-named function outside this module. The function outside this module will stay stable, whereas the function inside this module will adapt potential upcoming new compiler features. Only use a function in this module, if the equally-named one outside this module is missing a feature you need.
val ppat_construct : 
  loc:Astlib.Location.t ->
  Astlib.Longident.t Astlib.Location.loc ->
  Astlib.Ast_500.Parsetree.pattern option ->
  Astlib.Ast_500.Parsetree.patternval constructor_declaration : 
  loc:Astlib.Location.t ->
  name:string Astlib.Location.loc ->
  args:Astlib.Ast_500.Parsetree.constructor_arguments ->
  res:Astlib.Ast_500.Parsetree.core_type option ->
  Astlib.Ast_500.Parsetree.constructor_declarationevar id produces a Pexp_ident _ expression, it parses its input so you can pass any dot-separated identifier, for instance: evar ~loc "Foo.bar".
val eapply : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expression list ->
  Astlib.Ast_500.Parsetree.expressionSame as pexp_apply but without labels
val eabstract : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.pattern list ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionval esequence : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression list ->
  Astlib.Ast_500.Parsetree.expressionval ppat_tuple_opt : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.pattern list ->
  Astlib.Ast_500.Parsetree.pattern optionval pexp_tuple_opt : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression list ->
  Astlib.Ast_500.Parsetree.expression optionval pconstruct : 
  Astlib.Ast_500.Parsetree.constructor_declaration ->
  Astlib.Ast_500.Parsetree.pattern option ->
  Astlib.Ast_500.Parsetree.patternval econstruct : 
  Astlib.Ast_500.Parsetree.constructor_declaration ->
  Astlib.Ast_500.Parsetree.expression option ->
  Astlib.Ast_500.Parsetree.expressionval elist_tail : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression list ->
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionelist_tail ~loc [expr1; expr2; expr3] expr_tail produces the expression expr1::expr2::expr3::expr_tail.
val elist : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.expression list ->
  Astlib.Ast_500.Parsetree.expressionelist ~loc [expr1; expr2; expr3] produces the list litteral expression [expr1; expr2; expr3].
val plist_tail : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.pattern list ->
  Astlib.Ast_500.Parsetree.pattern ->
  Astlib.Ast_500.Parsetree.patternplist_tail ~loc [pat1; pat2; pat3] pat_tail produces the pattern pat1::pat2::pat3::pat_tail.
val plist : 
  loc:Location.t ->
  Astlib.Ast_500.Parsetree.pattern list ->
  Astlib.Ast_500.Parsetree.patternplist ~loc [pat1; pat2; pat3] produces the list pattern [pat1; pat2; pat3].
val pstr_value_list : 
  loc:Location.t ->
  Ppxlib_ast.Asttypes.rec_flag ->
  Astlib.Ast_500.Parsetree.value_binding list ->
  Astlib.Ast_500.Parsetree.structure_item listpstr_value_list ~loc rf vbs = pstr_value ~loc rf vbs if vbs <> [], [] otherwise.
val nonrec_type_declaration : 
  loc:Location.t ->
  name:string Loc.t ->
  params:
    (Astlib.Ast_500.Parsetree.core_type * Ppxlib_ast.Asttypes.variance) list ->
  cstrs:
    (Astlib.Ast_500.Parsetree.core_type
     * Astlib.Ast_500.Parsetree.core_type
     * Location.t)
      list ->
  kind:Astlib.Ast_500.Parsetree.type_kind ->
  private_:Ppxlib_ast.Asttypes.private_flag ->
  manifest:Astlib.Ast_500.Parsetree.core_type option ->
  Astlib.Ast_500.Parsetree.type_declarationval unapplied_type_constr_conv : 
  loc:Location.t ->
  Longident.t Loc.t ->
  f:(string -> string) ->
  Astlib.Ast_500.Parsetree.expressionunapplied_type_constr_conv is the standard way to map identifiers to conversion fonctions, for preprocessor that creates values that follow the structure of types. More precisely, path_conv path (sprintf "sexp_of_%s") is:
- sexp_of_t if path is "t"
- A.B.sexp_of_foo if path is "A.B.foo"
- A.B.sexp_of_f__foo (module A1) (module A2) if path is "A.B.F(A1)(A2).foo" type_constr_convalso applies it to a list of expression, which both prevents the compiler from allocating useless closures, and almost always what is needed, since type constructors are always applied.
val type_constr_conv : 
  loc:Location.t ->
  Longident.t Loc.t ->
  f:(string -> string) ->
  Astlib.Ast_500.Parsetree.expression list ->
  Astlib.Ast_500.Parsetree.expressionval eta_reduce : 
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expression optionTries to simplify fun v1 v2 .. -> f v1 v2 .. into f. Only works when f is a path, not an arbitrary expression as that would change the meaning of the code. This can be used either for cleaning up the generated code, or to reduce allocation if f is a local variable (the compiler won't optimize the allocation of the closure).
Eta-reduction can change the types/behavior in some corner cases that are unlikely to show up in generated code:
- if fhas optional arguments, eta-expandingfcan drop them
- because labels commute, it can change the type of an expression: $ let f ~x y = x + y let f2 = fun x -> add x;; val f : x:int -> int -> int = <fun> val f2 : int -> x:int -> int = <fun> In fact, if fdoes side effects before receiving all its arguments, and if the eta-expansion is partially applied, eta-reducing could change behavior.
eta_reduce_if_possible_and_nonrec is meant for the case where the resulting expression is going to be bound in a potentially recursive let-binding, where we have to keep the eta-expansion when rec_flag is Recursive to avoid a compile error.
val eta_reduce_if_possible : 
  Astlib.Ast_500.Parsetree.expression ->
  Astlib.Ast_500.Parsetree.expressionval eta_reduce_if_possible_and_nonrec : 
  Astlib.Ast_500.Parsetree.expression ->
  rec_flag:Astlib.Ast_500.Asttypes.rec_flag ->
  Astlib.Ast_500.Parsetree.expression- Value description
- Value binding
- Type extension
- Type exception
- Type declaration
- Toplevel directive
- Structure item
- Signature item
- Row field
- Position
- Pattern
- Object field
- Module type declaration
- Module type
- Module substitution
- Module expr
- Module declaration
- Module binding
- Location
- Letop
- Label declaration
- Extension constructor
- Expression
- Directive argument
- Core type
- Constructor declaration
- Class type field
- Class type
- Class structure
- Class signature
- Class field
- Class expr
- Case
- Binding op
- Attribute
- 'a open infos
- 'a include infos
- 'a class infos