This commit is contained in:
swrup 2025-11-11 02:07:51 +01:00
parent aa2ff7b2f0
commit 2f3113f55d
11742 changed files with 1223940 additions and 0 deletions

View file

@ -0,0 +1,657 @@
(**************************************************************************)
(* *)
(* 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