658 lines
19 KiB
OCaml
658 lines
19 KiB
OCaml
|
|
(**************************************************************************)
|
||
|
|
(* *)
|
||
|
|
(* OCaml *)
|
||
|
|
(* *)
|
||
|
|
(* Alain Frisch, LexiFi *)
|
||
|
|
(* *)
|
||
|
|
(* Copyright 2012 Institut National de Recherche en Informatique et *)
|
||
|
|
(* en Automatique. *)
|
||
|
|
(* *)
|
||
|
|
(* All rights reserved. This file is distributed under the terms of *)
|
||
|
|
(* the GNU Lesser General Public License version 2.1, with the *)
|
||
|
|
(* special exception on linking described in the file LICENSE. *)
|
||
|
|
(* *)
|
||
|
|
(**************************************************************************)
|
||
|
|
|
||
|
|
(** Copy of Ast_helper from OCaml 4.14 with docstring related stuff removed *)
|
||
|
|
|
||
|
|
open Astlib.Ast_502
|
||
|
|
open Asttypes
|
||
|
|
open Parsetree
|
||
|
|
|
||
|
|
type 'a with_loc = 'a Astlib.Location.loc
|
||
|
|
type loc = Astlib.Location.t
|
||
|
|
type lid = Astlib.Longident.t with_loc
|
||
|
|
type str = string with_loc
|
||
|
|
type str_opt = string option with_loc
|
||
|
|
type attrs = attribute list
|
||
|
|
|
||
|
|
(** {1 Default locations} *)
|
||
|
|
|
||
|
|
val default_loc : loc ref
|
||
|
|
(** Default value for all optional location arguments. *)
|
||
|
|
|
||
|
|
val with_default_loc : loc -> (unit -> 'a) -> 'a
|
||
|
|
(** Set the [default_loc] within the scope of the execution of the provided
|
||
|
|
function. *)
|
||
|
|
|
||
|
|
(** {1 Constants} *)
|
||
|
|
|
||
|
|
module Const : sig
|
||
|
|
val char : char -> constant
|
||
|
|
val string : ?quotation_delimiter:string -> ?loc:loc -> string -> constant
|
||
|
|
val integer : ?suffix:char -> string -> constant
|
||
|
|
val int : ?suffix:char -> int -> constant
|
||
|
|
val int32 : ?suffix:char -> int32 -> constant
|
||
|
|
val int64 : ?suffix:char -> int64 -> constant
|
||
|
|
val nativeint : ?suffix:char -> nativeint -> constant
|
||
|
|
val float : ?suffix:char -> string -> constant
|
||
|
|
end
|
||
|
|
|
||
|
|
(** {1 Attributes} *)
|
||
|
|
module Attr : sig
|
||
|
|
val mk : ?loc:loc -> str -> payload -> attribute
|
||
|
|
end
|
||
|
|
|
||
|
|
(** {1 Core language} *)
|
||
|
|
|
||
|
|
(** Type expressions *)
|
||
|
|
module Typ : sig
|
||
|
|
val mk : ?loc:loc -> ?attrs:attrs -> core_type_desc -> core_type
|
||
|
|
val attr : core_type -> attribute -> core_type
|
||
|
|
val any : ?loc:loc -> ?attrs:attrs -> unit -> core_type
|
||
|
|
val var : ?loc:loc -> ?attrs:attrs -> string -> core_type
|
||
|
|
|
||
|
|
val arrow :
|
||
|
|
?loc:loc -> ?attrs:attrs -> arg_label -> core_type -> core_type -> core_type
|
||
|
|
|
||
|
|
val tuple : ?loc:loc -> ?attrs:attrs -> core_type list -> core_type
|
||
|
|
val constr : ?loc:loc -> ?attrs:attrs -> lid -> core_type list -> core_type
|
||
|
|
|
||
|
|
val object_ :
|
||
|
|
?loc:loc -> ?attrs:attrs -> object_field list -> closed_flag -> core_type
|
||
|
|
|
||
|
|
val class_ : ?loc:loc -> ?attrs:attrs -> lid -> core_type list -> core_type
|
||
|
|
val alias : ?loc:loc -> ?attrs:attrs -> core_type -> str -> core_type
|
||
|
|
|
||
|
|
val variant :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
row_field list ->
|
||
|
|
closed_flag ->
|
||
|
|
label list option ->
|
||
|
|
core_type
|
||
|
|
|
||
|
|
val poly : ?loc:loc -> ?attrs:attrs -> str list -> core_type -> core_type
|
||
|
|
|
||
|
|
val package :
|
||
|
|
?loc:loc -> ?attrs:attrs -> lid -> (lid * core_type) list -> core_type
|
||
|
|
|
||
|
|
val extension : ?loc:loc -> ?attrs:attrs -> extension -> core_type
|
||
|
|
val force_poly : core_type -> core_type
|
||
|
|
|
||
|
|
val varify_constructors : str list -> core_type -> core_type
|
||
|
|
(** [varify_constructors newtypes te] is type expression [te], of which any of
|
||
|
|
nullary type constructor [tc] is replaced by type variable of the same
|
||
|
|
name, if [tc]'s name appears in [newtypes]. Raise
|
||
|
|
[Syntaxerr.Variable_in_scope] if any type variable inside [te] appears in
|
||
|
|
[newtypes].
|
||
|
|
|
||
|
|
@since 4.05 *)
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Patterns *)
|
||
|
|
module Pat : sig
|
||
|
|
val mk : ?loc:loc -> ?attrs:attrs -> pattern_desc -> pattern
|
||
|
|
val attr : pattern -> attribute -> pattern
|
||
|
|
val any : ?loc:loc -> ?attrs:attrs -> unit -> pattern
|
||
|
|
val var : ?loc:loc -> ?attrs:attrs -> str -> pattern
|
||
|
|
val alias : ?loc:loc -> ?attrs:attrs -> pattern -> str -> pattern
|
||
|
|
val constant : ?loc:loc -> ?attrs:attrs -> constant -> pattern
|
||
|
|
val interval : ?loc:loc -> ?attrs:attrs -> constant -> constant -> pattern
|
||
|
|
val tuple : ?loc:loc -> ?attrs:attrs -> pattern list -> pattern
|
||
|
|
val construct : ?loc:loc -> ?attrs:attrs -> lid -> pattern option -> pattern
|
||
|
|
val variant : ?loc:loc -> ?attrs:attrs -> label -> pattern option -> pattern
|
||
|
|
|
||
|
|
val record :
|
||
|
|
?loc:loc -> ?attrs:attrs -> (lid * pattern) list -> closed_flag -> pattern
|
||
|
|
|
||
|
|
val array : ?loc:loc -> ?attrs:attrs -> pattern list -> pattern
|
||
|
|
val or_ : ?loc:loc -> ?attrs:attrs -> pattern -> pattern -> pattern
|
||
|
|
val constraint_ : ?loc:loc -> ?attrs:attrs -> pattern -> core_type -> pattern
|
||
|
|
val type_ : ?loc:loc -> ?attrs:attrs -> lid -> pattern
|
||
|
|
val lazy_ : ?loc:loc -> ?attrs:attrs -> pattern -> pattern
|
||
|
|
val unpack : ?loc:loc -> ?attrs:attrs -> str_opt -> pattern
|
||
|
|
val open_ : ?loc:loc -> ?attrs:attrs -> lid -> pattern -> pattern
|
||
|
|
val exception_ : ?loc:loc -> ?attrs:attrs -> pattern -> pattern
|
||
|
|
val extension : ?loc:loc -> ?attrs:attrs -> extension -> pattern
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Expressions *)
|
||
|
|
module Exp : sig
|
||
|
|
val mk : ?loc:loc -> ?attrs:attrs -> expression_desc -> expression
|
||
|
|
val attr : expression -> attribute -> expression
|
||
|
|
val ident : ?loc:loc -> ?attrs:attrs -> lid -> expression
|
||
|
|
val constant : ?loc:loc -> ?attrs:attrs -> constant -> expression
|
||
|
|
|
||
|
|
val let_ :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
rec_flag ->
|
||
|
|
value_binding list ->
|
||
|
|
expression ->
|
||
|
|
expression
|
||
|
|
|
||
|
|
val fun_ :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
arg_label ->
|
||
|
|
expression option ->
|
||
|
|
pattern ->
|
||
|
|
expression ->
|
||
|
|
expression
|
||
|
|
|
||
|
|
val function_ :
|
||
|
|
?loc:loc -> ?attrs:attrs -> ?loc_location:loc -> case list -> expression
|
||
|
|
|
||
|
|
val apply :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
expression ->
|
||
|
|
(arg_label * expression) list ->
|
||
|
|
expression
|
||
|
|
|
||
|
|
val match_ : ?loc:loc -> ?attrs:attrs -> expression -> case list -> expression
|
||
|
|
val try_ : ?loc:loc -> ?attrs:attrs -> expression -> case list -> expression
|
||
|
|
val tuple : ?loc:loc -> ?attrs:attrs -> expression list -> expression
|
||
|
|
|
||
|
|
val construct :
|
||
|
|
?loc:loc -> ?attrs:attrs -> lid -> expression option -> expression
|
||
|
|
|
||
|
|
val variant :
|
||
|
|
?loc:loc -> ?attrs:attrs -> label -> expression option -> expression
|
||
|
|
|
||
|
|
val record :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
(lid * expression) list ->
|
||
|
|
expression option ->
|
||
|
|
expression
|
||
|
|
|
||
|
|
val field : ?loc:loc -> ?attrs:attrs -> expression -> lid -> expression
|
||
|
|
|
||
|
|
val setfield :
|
||
|
|
?loc:loc -> ?attrs:attrs -> expression -> lid -> expression -> expression
|
||
|
|
|
||
|
|
val array : ?loc:loc -> ?attrs:attrs -> expression list -> expression
|
||
|
|
|
||
|
|
val ifthenelse :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
expression ->
|
||
|
|
expression ->
|
||
|
|
expression option ->
|
||
|
|
expression
|
||
|
|
|
||
|
|
val sequence :
|
||
|
|
?loc:loc -> ?attrs:attrs -> expression -> expression -> expression
|
||
|
|
|
||
|
|
val while_ :
|
||
|
|
?loc:loc -> ?attrs:attrs -> expression -> expression -> expression
|
||
|
|
|
||
|
|
val for_ :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
pattern ->
|
||
|
|
expression ->
|
||
|
|
expression ->
|
||
|
|
direction_flag ->
|
||
|
|
expression ->
|
||
|
|
expression
|
||
|
|
|
||
|
|
val coerce :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
expression ->
|
||
|
|
core_type option ->
|
||
|
|
core_type ->
|
||
|
|
expression
|
||
|
|
|
||
|
|
val constraint_ :
|
||
|
|
?loc:loc -> ?attrs:attrs -> expression -> core_type -> expression
|
||
|
|
|
||
|
|
val send : ?loc:loc -> ?attrs:attrs -> expression -> str -> expression
|
||
|
|
val new_ : ?loc:loc -> ?attrs:attrs -> lid -> expression
|
||
|
|
val setinstvar : ?loc:loc -> ?attrs:attrs -> str -> expression -> expression
|
||
|
|
|
||
|
|
val override :
|
||
|
|
?loc:loc -> ?attrs:attrs -> (str * expression) list -> expression
|
||
|
|
|
||
|
|
val letmodule :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
str_opt ->
|
||
|
|
module_expr ->
|
||
|
|
expression ->
|
||
|
|
expression
|
||
|
|
|
||
|
|
val letexception :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
extension_constructor ->
|
||
|
|
expression ->
|
||
|
|
expression
|
||
|
|
|
||
|
|
val assert_ : ?loc:loc -> ?attrs:attrs -> expression -> expression
|
||
|
|
val lazy_ : ?loc:loc -> ?attrs:attrs -> expression -> expression
|
||
|
|
|
||
|
|
val poly :
|
||
|
|
?loc:loc -> ?attrs:attrs -> expression -> core_type option -> expression
|
||
|
|
|
||
|
|
val object_ : ?loc:loc -> ?attrs:attrs -> class_structure -> expression
|
||
|
|
val newtype : ?loc:loc -> ?attrs:attrs -> str -> expression -> expression
|
||
|
|
val pack : ?loc:loc -> ?attrs:attrs -> module_expr -> expression
|
||
|
|
|
||
|
|
val open_ :
|
||
|
|
?loc:loc -> ?attrs:attrs -> open_declaration -> expression -> expression
|
||
|
|
|
||
|
|
val letop :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
binding_op ->
|
||
|
|
binding_op list ->
|
||
|
|
expression ->
|
||
|
|
expression
|
||
|
|
|
||
|
|
val extension : ?loc:loc -> ?attrs:attrs -> extension -> expression
|
||
|
|
val unreachable : ?loc:loc -> ?attrs:attrs -> unit -> expression
|
||
|
|
val case : pattern -> ?guard:expression -> expression -> case
|
||
|
|
val binding_op : str -> pattern -> expression -> loc -> binding_op
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Value declarations *)
|
||
|
|
module Val : sig
|
||
|
|
val mk :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
?prim:string list ->
|
||
|
|
str ->
|
||
|
|
core_type ->
|
||
|
|
value_description
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Type declarations *)
|
||
|
|
module Type : sig
|
||
|
|
val mk :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
?params:(core_type * (variance * injectivity)) list ->
|
||
|
|
?cstrs:(core_type * core_type * loc) list ->
|
||
|
|
?kind:type_kind ->
|
||
|
|
?priv:private_flag ->
|
||
|
|
?manifest:core_type ->
|
||
|
|
str ->
|
||
|
|
type_declaration
|
||
|
|
|
||
|
|
val constructor :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
?vars:str list ->
|
||
|
|
?args:constructor_arguments ->
|
||
|
|
?res:core_type ->
|
||
|
|
str ->
|
||
|
|
constructor_declaration
|
||
|
|
|
||
|
|
val field :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
?mut:mutable_flag ->
|
||
|
|
str ->
|
||
|
|
core_type ->
|
||
|
|
label_declaration
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Type extensions *)
|
||
|
|
module Te : sig
|
||
|
|
val mk :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
?params:(core_type * (variance * injectivity)) list ->
|
||
|
|
?priv:private_flag ->
|
||
|
|
lid ->
|
||
|
|
extension_constructor list ->
|
||
|
|
type_extension
|
||
|
|
|
||
|
|
val mk_exception :
|
||
|
|
?loc:loc -> ?attrs:attrs -> extension_constructor -> type_exception
|
||
|
|
|
||
|
|
val constructor :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
str ->
|
||
|
|
extension_constructor_kind ->
|
||
|
|
extension_constructor
|
||
|
|
|
||
|
|
val decl :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
?vars:str list ->
|
||
|
|
?args:constructor_arguments ->
|
||
|
|
?res:core_type ->
|
||
|
|
str ->
|
||
|
|
extension_constructor
|
||
|
|
|
||
|
|
val rebind : ?loc:loc -> ?attrs:attrs -> str -> lid -> extension_constructor
|
||
|
|
end
|
||
|
|
|
||
|
|
(** {1 Module language} *)
|
||
|
|
|
||
|
|
(** Module type expressions *)
|
||
|
|
module Mty : sig
|
||
|
|
val mk : ?loc:loc -> ?attrs:attrs -> module_type_desc -> module_type
|
||
|
|
val attr : module_type -> attribute -> module_type
|
||
|
|
val ident : ?loc:loc -> ?attrs:attrs -> lid -> module_type
|
||
|
|
val alias : ?loc:loc -> ?attrs:attrs -> lid -> module_type
|
||
|
|
val signature : ?loc:loc -> ?attrs:attrs -> signature -> module_type
|
||
|
|
|
||
|
|
val functor_ :
|
||
|
|
?loc:loc -> ?attrs:attrs -> functor_parameter -> module_type -> module_type
|
||
|
|
|
||
|
|
val with_ :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
module_type ->
|
||
|
|
with_constraint list ->
|
||
|
|
module_type
|
||
|
|
|
||
|
|
val typeof_ : ?loc:loc -> ?attrs:attrs -> module_expr -> module_type
|
||
|
|
val extension : ?loc:loc -> ?attrs:attrs -> extension -> module_type
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Module expressions *)
|
||
|
|
module Mod : sig
|
||
|
|
val mk : ?loc:loc -> ?attrs:attrs -> module_expr_desc -> module_expr
|
||
|
|
val attr : module_expr -> attribute -> module_expr
|
||
|
|
val ident : ?loc:loc -> ?attrs:attrs -> lid -> module_expr
|
||
|
|
val structure : ?loc:loc -> ?attrs:attrs -> structure -> module_expr
|
||
|
|
|
||
|
|
val functor_ :
|
||
|
|
?loc:loc -> ?attrs:attrs -> functor_parameter -> module_expr -> module_expr
|
||
|
|
|
||
|
|
val apply :
|
||
|
|
?loc:loc -> ?attrs:attrs -> module_expr -> module_expr -> module_expr
|
||
|
|
|
||
|
|
val constraint_ :
|
||
|
|
?loc:loc -> ?attrs:attrs -> module_expr -> module_type -> module_expr
|
||
|
|
|
||
|
|
val unpack : ?loc:loc -> ?attrs:attrs -> expression -> module_expr
|
||
|
|
val extension : ?loc:loc -> ?attrs:attrs -> extension -> module_expr
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Signature items *)
|
||
|
|
module Sig : sig
|
||
|
|
val mk : ?loc:loc -> signature_item_desc -> signature_item
|
||
|
|
val value : ?loc:loc -> value_description -> signature_item
|
||
|
|
val type_ : ?loc:loc -> rec_flag -> type_declaration list -> signature_item
|
||
|
|
val type_subst : ?loc:loc -> type_declaration list -> signature_item
|
||
|
|
val type_extension : ?loc:loc -> type_extension -> signature_item
|
||
|
|
val exception_ : ?loc:loc -> type_exception -> signature_item
|
||
|
|
val module_ : ?loc:loc -> module_declaration -> signature_item
|
||
|
|
val mod_subst : ?loc:loc -> module_substitution -> signature_item
|
||
|
|
val rec_module : ?loc:loc -> module_declaration list -> signature_item
|
||
|
|
val modtype : ?loc:loc -> module_type_declaration -> signature_item
|
||
|
|
val open_ : ?loc:loc -> open_description -> signature_item
|
||
|
|
val include_ : ?loc:loc -> include_description -> signature_item
|
||
|
|
val class_ : ?loc:loc -> class_description list -> signature_item
|
||
|
|
val class_type : ?loc:loc -> class_type_declaration list -> signature_item
|
||
|
|
val extension : ?loc:loc -> ?attrs:attrs -> extension -> signature_item
|
||
|
|
val attribute : ?loc:loc -> attribute -> signature_item
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Structure items *)
|
||
|
|
module Str : sig
|
||
|
|
val mk : ?loc:loc -> structure_item_desc -> structure_item
|
||
|
|
val eval : ?loc:loc -> ?attrs:attributes -> expression -> structure_item
|
||
|
|
val value : ?loc:loc -> rec_flag -> value_binding list -> structure_item
|
||
|
|
val primitive : ?loc:loc -> value_description -> structure_item
|
||
|
|
val type_ : ?loc:loc -> rec_flag -> type_declaration list -> structure_item
|
||
|
|
val type_extension : ?loc:loc -> type_extension -> structure_item
|
||
|
|
val exception_ : ?loc:loc -> type_exception -> structure_item
|
||
|
|
val module_ : ?loc:loc -> module_binding -> structure_item
|
||
|
|
val rec_module : ?loc:loc -> module_binding list -> structure_item
|
||
|
|
val modtype : ?loc:loc -> module_type_declaration -> structure_item
|
||
|
|
val open_ : ?loc:loc -> open_declaration -> structure_item
|
||
|
|
val class_ : ?loc:loc -> class_declaration list -> structure_item
|
||
|
|
val class_type : ?loc:loc -> class_type_declaration list -> structure_item
|
||
|
|
val include_ : ?loc:loc -> include_declaration -> structure_item
|
||
|
|
val extension : ?loc:loc -> ?attrs:attrs -> extension -> structure_item
|
||
|
|
val attribute : ?loc:loc -> attribute -> structure_item
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Module declarations *)
|
||
|
|
module Md : sig
|
||
|
|
val mk :
|
||
|
|
?loc:loc -> ?attrs:attrs -> str_opt -> module_type -> module_declaration
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Module substitutions *)
|
||
|
|
module Ms : sig
|
||
|
|
val mk : ?loc:loc -> ?attrs:attrs -> str -> lid -> module_substitution
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Module type declarations *)
|
||
|
|
module Mtd : sig
|
||
|
|
val mk :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
?typ:module_type ->
|
||
|
|
str ->
|
||
|
|
module_type_declaration
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Module bindings *)
|
||
|
|
module Mb : sig
|
||
|
|
val mk : ?loc:loc -> ?attrs:attrs -> str_opt -> module_expr -> module_binding
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Opens *)
|
||
|
|
module Opn : sig
|
||
|
|
val mk :
|
||
|
|
?loc:loc -> ?attrs:attrs -> ?override:override_flag -> 'a -> 'a open_infos
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Includes *)
|
||
|
|
module Incl : sig
|
||
|
|
val mk : ?loc:loc -> ?attrs:attrs -> 'a -> 'a include_infos
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Value bindings *)
|
||
|
|
module Vb : sig
|
||
|
|
val mk :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
?value_constraint:value_constraint ->
|
||
|
|
pattern ->
|
||
|
|
expression ->
|
||
|
|
value_binding
|
||
|
|
end
|
||
|
|
|
||
|
|
(** {1 Class language} *)
|
||
|
|
|
||
|
|
(** Class type expressions *)
|
||
|
|
module Cty : sig
|
||
|
|
val mk : ?loc:loc -> ?attrs:attrs -> class_type_desc -> class_type
|
||
|
|
val attr : class_type -> attribute -> class_type
|
||
|
|
val constr : ?loc:loc -> ?attrs:attrs -> lid -> core_type list -> class_type
|
||
|
|
val signature : ?loc:loc -> ?attrs:attrs -> class_signature -> class_type
|
||
|
|
|
||
|
|
val arrow :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
arg_label ->
|
||
|
|
core_type ->
|
||
|
|
class_type ->
|
||
|
|
class_type
|
||
|
|
|
||
|
|
val extension : ?loc:loc -> ?attrs:attrs -> extension -> class_type
|
||
|
|
|
||
|
|
val open_ :
|
||
|
|
?loc:loc -> ?attrs:attrs -> open_description -> class_type -> class_type
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Class type fields *)
|
||
|
|
module Ctf : sig
|
||
|
|
val mk : ?loc:loc -> ?attrs:attrs -> class_type_field_desc -> class_type_field
|
||
|
|
val attr : class_type_field -> attribute -> class_type_field
|
||
|
|
val inherit_ : ?loc:loc -> ?attrs:attrs -> class_type -> class_type_field
|
||
|
|
|
||
|
|
val val_ :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
str ->
|
||
|
|
mutable_flag ->
|
||
|
|
virtual_flag ->
|
||
|
|
core_type ->
|
||
|
|
class_type_field
|
||
|
|
|
||
|
|
val method_ :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
str ->
|
||
|
|
private_flag ->
|
||
|
|
virtual_flag ->
|
||
|
|
core_type ->
|
||
|
|
class_type_field
|
||
|
|
|
||
|
|
val constraint_ :
|
||
|
|
?loc:loc -> ?attrs:attrs -> core_type -> core_type -> class_type_field
|
||
|
|
|
||
|
|
val extension : ?loc:loc -> ?attrs:attrs -> extension -> class_type_field
|
||
|
|
val attribute : ?loc:loc -> attribute -> class_type_field
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Class expressions *)
|
||
|
|
module Cl : sig
|
||
|
|
val mk : ?loc:loc -> ?attrs:attrs -> class_expr_desc -> class_expr
|
||
|
|
val attr : class_expr -> attribute -> class_expr
|
||
|
|
val constr : ?loc:loc -> ?attrs:attrs -> lid -> core_type list -> class_expr
|
||
|
|
val structure : ?loc:loc -> ?attrs:attrs -> class_structure -> class_expr
|
||
|
|
|
||
|
|
val fun_ :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
arg_label ->
|
||
|
|
expression option ->
|
||
|
|
pattern ->
|
||
|
|
class_expr ->
|
||
|
|
class_expr
|
||
|
|
|
||
|
|
val apply :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
class_expr ->
|
||
|
|
(arg_label * expression) list ->
|
||
|
|
class_expr
|
||
|
|
|
||
|
|
val let_ :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
rec_flag ->
|
||
|
|
value_binding list ->
|
||
|
|
class_expr ->
|
||
|
|
class_expr
|
||
|
|
|
||
|
|
val constraint_ :
|
||
|
|
?loc:loc -> ?attrs:attrs -> class_expr -> class_type -> class_expr
|
||
|
|
|
||
|
|
val extension : ?loc:loc -> ?attrs:attrs -> extension -> class_expr
|
||
|
|
|
||
|
|
val open_ :
|
||
|
|
?loc:loc -> ?attrs:attrs -> open_description -> class_expr -> class_expr
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Class fields *)
|
||
|
|
module Cf : sig
|
||
|
|
val mk : ?loc:loc -> ?attrs:attrs -> class_field_desc -> class_field
|
||
|
|
val attr : class_field -> attribute -> class_field
|
||
|
|
|
||
|
|
val inherit_ :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
override_flag ->
|
||
|
|
class_expr ->
|
||
|
|
str option ->
|
||
|
|
class_field
|
||
|
|
|
||
|
|
val val_ :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
str ->
|
||
|
|
mutable_flag ->
|
||
|
|
class_field_kind ->
|
||
|
|
class_field
|
||
|
|
|
||
|
|
val method_ :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
str ->
|
||
|
|
private_flag ->
|
||
|
|
class_field_kind ->
|
||
|
|
class_field
|
||
|
|
|
||
|
|
val constraint_ :
|
||
|
|
?loc:loc -> ?attrs:attrs -> core_type -> core_type -> class_field
|
||
|
|
|
||
|
|
val initializer_ : ?loc:loc -> ?attrs:attrs -> expression -> class_field
|
||
|
|
val extension : ?loc:loc -> ?attrs:attrs -> extension -> class_field
|
||
|
|
val attribute : ?loc:loc -> attribute -> class_field
|
||
|
|
val virtual_ : core_type -> class_field_kind
|
||
|
|
val concrete : override_flag -> expression -> class_field_kind
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Classes *)
|
||
|
|
module Ci : sig
|
||
|
|
val mk :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
?virt:virtual_flag ->
|
||
|
|
?params:(core_type * (variance * injectivity)) list ->
|
||
|
|
str ->
|
||
|
|
'a ->
|
||
|
|
'a class_infos
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Class signatures *)
|
||
|
|
module Csig : sig
|
||
|
|
val mk : core_type -> class_type_field list -> class_signature
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Class structures *)
|
||
|
|
module Cstr : sig
|
||
|
|
val mk : pattern -> class_field list -> class_structure
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Row fields *)
|
||
|
|
module Rf : sig
|
||
|
|
val mk : ?loc:loc -> ?attrs:attrs -> row_field_desc -> row_field
|
||
|
|
|
||
|
|
val tag :
|
||
|
|
?loc:loc ->
|
||
|
|
?attrs:attrs ->
|
||
|
|
label with_loc ->
|
||
|
|
bool ->
|
||
|
|
core_type list ->
|
||
|
|
row_field
|
||
|
|
|
||
|
|
val inherit_ : ?loc:loc -> core_type -> row_field
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Object fields *)
|
||
|
|
module Of : sig
|
||
|
|
val mk : ?loc:loc -> ?attrs:attrs -> object_field_desc -> object_field
|
||
|
|
|
||
|
|
val tag :
|
||
|
|
?loc:loc -> ?attrs:attrs -> label with_loc -> core_type -> object_field
|
||
|
|
|
||
|
|
val inherit_ : ?loc:loc -> core_type -> object_field
|
||
|
|
end
|