package ppx_core

  1. Overview
  2. Docs

Ppx_core is our stdlib for the ppx code so we just include Base here

include module type of struct include Base end
module Applicative = Base.Applicative
module Applicative_intf = Base.Applicative_intf
module Array = Base.Array
module Avltree = Base.Avltree
module Backtrace = Base.Backtrace
module Binary_searchable = Base.Binary_searchable
module Binary_searchable_intf = Base.Binary_searchable_intf
module Blit = Base.Blit
module Blit_intf = Base.Blit_intf
module Bool = Base.Bool
module Buffer = Base.Buffer
module Bytes = Base.Bytes
module Char = Base.Char
module Commutative_group = Base.Commutative_group
module Comparable = Base.Comparable
module Comparable_intf = Base.Comparable_intf
module Comparator = Base.Comparator
module Comparisons = Base.Comparisons
module Container = Base.Container
module Container_intf = Base.Container_intf
module Either = Base.Either
module Either_intf = Base.Either_intf
module Equal = Base.Equal
module Error = Base.Error
module Exn = Base.Exn
module Field = Base.Field
module Float = Base.Float
module Floatable = Base.Floatable
module Fn = Base.Fn
module Hash = Base.Hash
module Hash_intf = Base.Hash_intf
module Hash_set = Base.Hash_set
module Hash_set_intf = Base.Hash_set_intf
module Hasher = Base.Hasher
module Hashtbl = Base.Hashtbl
module Hashtbl_intf = Base.Hashtbl_intf
module Heap_block = Base.Heap_block
module Identifiable = Base.Identifiable
module Indexed_container = Base.Indexed_container
module Info = Base.Info
module Info_intf = Base.Info_intf
module Int = Base.Int
module Int32 = Base.Int32
module Int63 = Base.Int63
module Int64 = Base.Int64
module Int_intf = Base.Int_intf
module Intable = Base.Intable
module Invariant = Base.Invariant
module Lazy = Base.Lazy
module List = Base.List
module Map = Base.Map
module Map_intf = Base.Map_intf
module Maybe_bound = Base.Maybe_bound
module Monad = Base.Monad
module Nativeint = Base.Nativeint
module Obj_array = Base.Obj_array
module Option = Base.Option
module Or_error = Base.Or_error
module Ordered_collection_common = Base.Ordered_collection_common
module Ordering = Base.Ordering
module Poly = Base.Poly
module Polymorphic_compare = Base.Polymorphic_compare
module Popcount = Base.Popcount
module Pretty_printer = Base.Pretty_printer
module Printf = Base.Printf
module Linked_queue = Base.Linked_queue
module Queue_intf = Base.Queue_intf
module Random = Base.Random
module Ref = Base.Ref
module Result = Base.Result
module Sequence = Base.Sequence
module Set = Base.Set
module Set_intf = Base.Set_intf
module Sexpable = Base.Sexpable
module Sign = Base.Sign
module Source_code_position = Base.Source_code_position
module Staged = Base.Staged
module String = Base.String
module Stringable = Base.Stringable
module String_dict = Base.String_dict
module Sys = Base.Sys
module T = Base.T
module Type_equal = Base.Type_equal
module Unit = Base.Unit
module Uchar = Base.Uchar
module Validate = Base.Validate
module Variant = Base.Variant
module With_return = Base.With_return
module Word_size = Base.Word_size
module type T = Base.T
module type T1 = Base.T1
module type T2 = Base.T2
module type T3 = Base.T3
module Sexp = Base.Sexp
module Export = Base.Export
include module type of struct include Export end
type 'a array = 'a Base.Array.t
val compare_array : 'a. ('a -> 'a -> int) -> 'a array -> 'a array -> int
val array_of_sexp : 'a. (Base.Sexp.t -> 'a) -> Base.Sexp.t -> 'a array
val sexp_of_array : 'a. ('a -> Base.Sexp.t) -> 'a array -> Base.Sexp.t
type bool = Base.Bool.t
val compare_bool : bool -> bool -> int
val hash_fold_bool : Base.Hash.state -> bool -> Base.Hash.state
val hash_bool : bool -> Base.Hash.hash_value
val bool_of_sexp : Base.Sexp.t -> bool
val sexp_of_bool : bool -> Base.Sexp.t
type char = Base.Char.t
val compare_char : char -> char -> int
val hash_fold_char : Base.Hash.state -> char -> Base.Hash.state
val hash_char : char -> Base.Hash.hash_value
val char_of_sexp : Base.Sexp.t -> char
val sexp_of_char : char -> Base.Sexp.t
type exn = Base.Exn.t
val sexp_of_exn : exn -> Base.Sexp.t
type float = Base.Float.t
val compare_float : float -> float -> int
val hash_fold_float : Base.Hash.state -> float -> Base.Hash.state
val hash_float : float -> Base.Hash.hash_value
val float_of_sexp : Base.Sexp.t -> float
val sexp_of_float : float -> Base.Sexp.t
type int = Base.Int.t
val compare_int : int -> int -> int
val hash_fold_int : Base.Hash.state -> int -> Base.Hash.state
val hash_int : int -> Base.Hash.hash_value
val int_of_sexp : Base.Sexp.t -> int
val sexp_of_int : int -> Base.Sexp.t
type int32 = Base.Int32.t
val compare_int32 : int32 -> int32 -> int
val hash_fold_int32 : Base.Hash.state -> int32 -> Base.Hash.state
val hash_int32 : int32 -> Base.Hash.hash_value
val int32_of_sexp : Base.Sexp.t -> int32
val sexp_of_int32 : int32 -> Base.Sexp.t
type int64 = Base.Int64.t
val compare_int64 : int64 -> int64 -> int
val hash_fold_int64 : Base.Hash.state -> int64 -> Base.Hash.state
val hash_int64 : int64 -> Base.Hash.hash_value
val int64_of_sexp : Base.Sexp.t -> int64
val sexp_of_int64 : int64 -> Base.Sexp.t
type 'a list = 'a Base.List.t
val compare_list : 'a. ('a -> 'a -> int) -> 'a list -> 'a list -> int
val hash_fold_list : 'a. (Base.Hash.state -> 'a -> Base.Hash.state) -> Base.Hash.state -> 'a list -> Base.Hash.state
val list_of_sexp : 'a. (Base.Sexp.t -> 'a) -> Base.Sexp.t -> 'a list
val sexp_of_list : 'a. ('a -> Base.Sexp.t) -> 'a list -> Base.Sexp.t
type nativeint = Base.Nativeint.t
val compare_nativeint : nativeint -> nativeint -> int
val hash_fold_nativeint : Base.Hash.state -> nativeint -> Base.Hash.state
val hash_nativeint : nativeint -> Base.Hash.hash_value
val nativeint_of_sexp : Base.Sexp.t -> nativeint
val sexp_of_nativeint : nativeint -> Base.Sexp.t
type 'a option = 'a Base.Option.t
val compare_option : 'a. ('a -> 'a -> int) -> 'a option -> 'a option -> int
val hash_fold_option : 'a. (Base.Hash.state -> 'a -> Base.Hash.state) -> Base.Hash.state -> 'a option -> Base.Hash.state
val option_of_sexp : 'a. (Base.Sexp.t -> 'a) -> Base.Sexp.t -> 'a option
val sexp_of_option : 'a. ('a -> Base.Sexp.t) -> 'a option -> Base.Sexp.t
type 'a ref = 'a Base.Ref.t
val compare_ref : 'a. ('a -> 'a -> int) -> 'a ref -> 'a ref -> int
val ref_of_sexp : 'a. (Base.Sexp.t -> 'a) -> Base.Sexp.t -> 'a ref
val sexp_of_ref : 'a. ('a -> Base.Sexp.t) -> 'a ref -> Base.Sexp.t
type string = Base.String.t
val compare_string : string -> string -> int
val hash_fold_string : Base.Hash.state -> string -> Base.Hash.state
val hash_string : string -> Base.Hash.hash_value
val string_of_sexp : Base.Sexp.t -> string
val sexp_of_string : string -> Base.Sexp.t
type bytes = Base.Bytes.t
val compare_bytes : bytes -> bytes -> int
val bytes_of_sexp : Base.Sexp.t -> bytes
val sexp_of_bytes : bytes -> Base.Sexp.t
type unit = Base.Unit.t
val compare_unit : unit -> unit -> int
val hash_fold_unit : Base.Hash.state -> unit -> Base.Hash.state
val hash_unit : unit -> Base.Hash.hash_value
val unit_of_sexp : Base.Sexp.t -> unit
val sexp_of_unit : unit -> Base.Sexp.t
type nonrec ('a, 'b, 'c) format = ('a, 'b, 'c) Pervasives.format

Format stuff

type nonrec ('a, 'b, 'c, 'd) format4 = ('a, 'b, 'c, 'd) Pervasives.format4
type nonrec ('a, 'b, 'c, 'd, 'e, 'f) format6 = ('a, 'b, 'c, 'd, 'e, 'f) Pervasives.format6

Sexp

Exporting the ad-hoc types that are recognized by ppx_sexp_* converters. sexp_array, sexp_list, and sexp_option allow a record field to be absent when converting from a sexp, and if absent, the field will take a default value of the appropriate type:

        sexp_array   [||]
        sexp_bool    false
        sexp_list    []
        sexp_option  None

sexp_opaque causes the conversion to sexp to produce the atom <opaque>.

For more documentation, see sexplib/README.md.

type 'a sexp_array = 'a array
type 'a sexp_list = 'a list
type 'a sexp_opaque = 'a
type 'a sexp_option = 'a option

List operators

include module type of struct include Base.List.Infix end
val (@) : 'a Base.List.t -> 'a Base.List.t -> 'a Base.List.t

Int operators and comparisons

include module type of struct include Base.Int.O end

A sub-module designed to be opened to make working with ints more convenient.

A sub-module designed to be opened to make working with ints more convenient.

include Base.Int_intf.Operators_unbounded with type t := Base.Int.t
val (~-) : Base.Int.t -> Base.Int.t
include Base.Comparisons.Infix with type t := Base.Int.t
val abs : Base.Int.t -> Base.Int.t
val neg : Base.Int.t -> Base.Int.t
val zero : Base.Int.t
val (//) : Base.Int.t -> Base.Int.t -> float
val (land) : Base.Int.t -> Base.Int.t -> Base.Int.t
val (lor) : Base.Int.t -> Base.Int.t -> Base.Int.t
val (lxor) : Base.Int.t -> Base.Int.t -> Base.Int.t
val lnot : Base.Int.t -> Base.Int.t
val (lsl) : Base.Int.t -> int -> Base.Int.t
val (asr) : Base.Int.t -> int -> Base.Int.t
val (lsr) : Base.Int.t -> int -> Base.Int.t
val (<) : int -> int -> bool
val (<=) : int -> int -> bool
val (<>) : int -> int -> bool
val (=) : int -> int -> bool
val (>) : int -> int -> bool
val (>=) : int -> int -> bool
val ascending : int -> int -> int
val descending : int -> int -> int
val compare : int -> int -> int
val equal : int -> int -> bool
val max : int -> int -> int
val min : int -> int -> int

Float operators

include module type of struct include Base.Float.O_dot end

Similar to O, except that operators are suffixed with a dot, allowing one to have both int and float operators in scope simultaneously.

Similar to O, except that operators are suffixed with a dot, allowing one to have both int and float operators in scope simultaneously.

val (~-.) : Base.Float.t -> Base.Float.t
val (|>) : 'a -> ('a -> 'b) -> 'b

Reverse application operator. x |> g |> f is equivalent to f (g (x)).

val (@@) : ('a -> 'b) -> 'a -> 'b

Application operator. g @@ f @@ x is equivalent to g (f (x)).

val (&&) : bool -> bool -> bool

Boolean operations

val (||) : bool -> bool -> bool
val not : bool -> bool
val ignore : _ -> unit

Common string operations

val (!) : 'a ref -> 'a

Reference operations

val ref : 'a -> 'a ref
val (:=) : 'a ref -> 'a -> unit
val fst : ('a * 'b) -> 'a

Pair operations

val snd : ('a * 'b) -> 'b
val failwith : string -> 'a

Exceptions stuff

val invalid_arg : string -> 'a
val raise : exn -> 'a
val raise_s : Base.Sexp.t -> 'a
val phys_equal : 'a -> 'a -> bool

Misc

val force : 'a Base.Lazy.t -> 'a
module Continue_or_stop = Base.Continue_or_stop

Continue_or_stop.t is used by the f argument to fold_until in order to indicate whether folding should continue, or stop early.

module Finished_or_stopped_early = Base.Finished_or_stopped_early

Finished_or_stopped_early.t is returned by fold_until to indicate whether f requested the fold stop, or if the fold completed.

module Not_exposed_properly = Base.Not_exposed_properly
include module type of struct include Stdio end
module In_channel = Stdio.In_channel
module Out_channel = Stdio.Out_channel
val stdin : In_channel.t
val stdout : Out_channel.t
val stderr : Out_channel.t
val printf : ('a, Out_channel.t, unit) Pervasives.format -> 'a
val eprintf : ('a, Out_channel.t, unit) Pervasives.format -> 'a
val print_endline : string -> unit
val prerr_endline : string -> unit

Make sure code using Ppx_core doesn't refer to compiler-libs without being explicit about it

include module type of struct include Ocaml_shadow end with module Ast_helper := Ocaml_shadow.Ast_helper with module Asttypes := Ocaml_shadow.Asttypes with module Docstrings := Ocaml_shadow.Docstrings with module Identifiable := Ocaml_shadow.Identifiable with module Lexer := Ocaml_shadow.Lexer with module Location := Ocaml_shadow.Location with module Longident := Ocaml_shadow.Longident with module Parse := Ocaml_shadow.Parse with module Parser := Ocaml_shadow.Parser with module Parsetree := Ocaml_shadow.Parsetree with module Pprintast := Ocaml_shadow.Pprintast with module Syntaxerr := Ocaml_shadow.Syntaxerr
module Do_not_use_directly = Ocaml_shadow.Do_not_use_directly
module Afl_instrument = Ocaml_shadow.Afl_instrument
module Alias_analysis = Ocaml_shadow.Alias_analysis
module Allocated_const = Ocaml_shadow.Allocated_const
module Annot = Ocaml_shadow.Annot
module Arch = Ocaml_shadow.Arch
module Arg_helper = Ocaml_shadow.Arg_helper
module Asmgen = Ocaml_shadow.Asmgen
module Asmlibrarian = Ocaml_shadow.Asmlibrarian
module Asmpackager = Ocaml_shadow.Asmpackager
module Ast_invariants = Ocaml_shadow.Ast_invariants
module Ast_iterator = Ocaml_shadow.Ast_iterator
module Ast_mapper = Ocaml_shadow.Ast_mapper
module Attr_helper = Ocaml_shadow.Attr_helper
module Augment_specialised_args = Ocaml_shadow.Augment_specialised_args
module Backend_intf = Ocaml_shadow.Backend_intf
module Branch_relaxation = Ocaml_shadow.Branch_relaxation
module Branch_relaxation_intf = Ocaml_shadow.Branch_relaxation_intf
module Btype = Ocaml_shadow.Btype
module Build_export_info = Ocaml_shadow.Build_export_info
module Builtin_attributes = Ocaml_shadow.Builtin_attributes
module Bytegen = Ocaml_shadow.Bytegen
module Bytelibrarian = Ocaml_shadow.Bytelibrarian
module Bytepackager = Ocaml_shadow.Bytepackager
module Bytesections = Ocaml_shadow.Bytesections
module CSE = Ocaml_shadow.CSE
module CSEgen = Ocaml_shadow.CSEgen
module Ccomp = Ocaml_shadow.Ccomp
module Clambda = Ocaml_shadow.Clambda
module Clflags = Ocaml_shadow.Clflags
module Closure = Ocaml_shadow.Closure
module Closure_conversion = Ocaml_shadow.Closure_conversion
module Closure_conversion_aux = Ocaml_shadow.Closure_conversion_aux
module Closure_element = Ocaml_shadow.Closure_element
module Closure_id = Ocaml_shadow.Closure_id
module Closure_offsets = Ocaml_shadow.Closure_offsets
module Cmi_format = Ocaml_shadow.Cmi_format
module Cmm = Ocaml_shadow.Cmm
module Cmmgen = Ocaml_shadow.Cmmgen
module Cmo_format = Ocaml_shadow.Cmo_format
module Cmt_format = Ocaml_shadow.Cmt_format
module Cmx_format = Ocaml_shadow.Cmx_format
module Coloring = Ocaml_shadow.Coloring
module Comballoc = Ocaml_shadow.Comballoc
module Compenv = Ocaml_shadow.Compenv
module Compilation_unit = Ocaml_shadow.Compilation_unit
module Compile = Ocaml_shadow.Compile
module Compilenv = Ocaml_shadow.Compilenv
module Compmisc = Ocaml_shadow.Compmisc
module Compplugin = Ocaml_shadow.Compplugin
module Config = Ocaml_shadow.Config
module Consistbl = Ocaml_shadow.Consistbl
module Ctype = Ocaml_shadow.Ctype
module Datarepr = Ocaml_shadow.Datarepr
module Deadcode = Ocaml_shadow.Deadcode
module Debuginfo = Ocaml_shadow.Debuginfo
module Depend = Ocaml_shadow.Depend
module Dll = Ocaml_shadow.Dll
module Effect_analysis = Ocaml_shadow.Effect_analysis
module Emit = Ocaml_shadow.Emit
module Emitaux = Ocaml_shadow.Emitaux
module Emitcode = Ocaml_shadow.Emitcode
module Env = Ocaml_shadow.Env
module Envaux = Ocaml_shadow.Envaux
module Errors = Ocaml_shadow.Errors
module Export_id = Ocaml_shadow.Export_id
module Export_info = Ocaml_shadow.Export_info
module Export_info_for_pack = Ocaml_shadow.Export_info_for_pack
module Expunge = Ocaml_shadow.Expunge
module Extract_projections = Ocaml_shadow.Extract_projections
module Find_recursive_functions = Ocaml_shadow.Find_recursive_functions
module Flambda = Ocaml_shadow.Flambda
module Flambda_invariants = Ocaml_shadow.Flambda_invariants
module Flambda_iterators = Ocaml_shadow.Flambda_iterators
module Flambda_to_clambda = Ocaml_shadow.Flambda_to_clambda
module Flambda_utils = Ocaml_shadow.Flambda_utils
module Freshening = Ocaml_shadow.Freshening
module Genprintval = Ocaml_shadow.Genprintval
module Id_types = Ocaml_shadow.Id_types
module Ident = Ocaml_shadow.Ident
module Import_approx = Ocaml_shadow.Import_approx
module Includeclass = Ocaml_shadow.Includeclass
module Includecore = Ocaml_shadow.Includecore
module Includemod = Ocaml_shadow.Includemod
module Inconstant_idents = Ocaml_shadow.Inconstant_idents
module Initialize_symbol_to_let_symbol = Ocaml_shadow.Initialize_symbol_to_let_symbol
module Inline_and_simplify = Ocaml_shadow.Inline_and_simplify
module Inline_and_simplify_aux = Ocaml_shadow.Inline_and_simplify_aux
module Inlining_cost = Ocaml_shadow.Inlining_cost
module Inlining_decision = Ocaml_shadow.Inlining_decision
module Inlining_decision_intf = Ocaml_shadow.Inlining_decision_intf
module Inlining_stats = Ocaml_shadow.Inlining_stats
module Inlining_stats_types = Ocaml_shadow.Inlining_stats_types
module Inlining_transforms = Ocaml_shadow.Inlining_transforms
module Instruct = Ocaml_shadow.Instruct
module Interf = Ocaml_shadow.Interf
module Invariant_params = Ocaml_shadow.Invariant_params
module Lambda = Ocaml_shadow.Lambda
module Lift_code = Ocaml_shadow.Lift_code
module Lift_constants = Ocaml_shadow.Lift_constants
module Lift_let_to_initialize_symbol = Ocaml_shadow.Lift_let_to_initialize_symbol
module Linearize = Ocaml_shadow.Linearize
module Linkage_name = Ocaml_shadow.Linkage_name
module Liveness = Ocaml_shadow.Liveness
module Mach = Ocaml_shadow.Mach
module Main = Ocaml_shadow.Main
module Main_args = Ocaml_shadow.Main_args
module Matching = Ocaml_shadow.Matching
module Meta = Ocaml_shadow.Meta
module Middle_end = Ocaml_shadow.Middle_end
module Misc = Ocaml_shadow.Misc
module Mtype = Ocaml_shadow.Mtype
module Mutable_variable = Ocaml_shadow.Mutable_variable
module Numbers = Ocaml_shadow.Numbers
module Opcodes = Ocaml_shadow.Opcodes
module Oprint = Ocaml_shadow.Oprint
module Optcompile = Ocaml_shadow.Optcompile
module Opterrors = Ocaml_shadow.Opterrors
module Optmain = Ocaml_shadow.Optmain
module Outcometree = Ocaml_shadow.Outcometree
module Parmatch = Ocaml_shadow.Parmatch
module Pass_wrapper = Ocaml_shadow.Pass_wrapper
module Path = Ocaml_shadow.Path
module Pparse = Ocaml_shadow.Pparse
module Predef = Ocaml_shadow.Predef
module Primitive = Ocaml_shadow.Primitive
module Printast = Ocaml_shadow.Printast
module Printclambda = Ocaml_shadow.Printclambda
module Printcmm = Ocaml_shadow.Printcmm
module Printinstr = Ocaml_shadow.Printinstr
module Printlambda = Ocaml_shadow.Printlambda
module Printlinear = Ocaml_shadow.Printlinear
module Printmach = Ocaml_shadow.Printmach
module Printtyp = Ocaml_shadow.Printtyp
module Printtyped = Ocaml_shadow.Printtyped
module Proc = Ocaml_shadow.Proc
module Projection = Ocaml_shadow.Projection
module Ref_to_variables = Ocaml_shadow.Ref_to_variables
module Reg = Ocaml_shadow.Reg
module Reload = Ocaml_shadow.Reload
module Reloadgen = Ocaml_shadow.Reloadgen
module Remove_free_vars_equal_to_args = Ocaml_shadow.Remove_free_vars_equal_to_args
module Remove_unused_arguments = Ocaml_shadow.Remove_unused_arguments
module Remove_unused_closure_vars = Ocaml_shadow.Remove_unused_closure_vars
module Remove_unused_program_constructs = Ocaml_shadow.Remove_unused_program_constructs
module Runtimedef = Ocaml_shadow.Runtimedef
module Schedgen = Ocaml_shadow.Schedgen
module Scheduling = Ocaml_shadow.Scheduling
module Selectgen = Ocaml_shadow.Selectgen
module Selection = Ocaml_shadow.Selection
module Semantics_of_primitives = Ocaml_shadow.Semantics_of_primitives
module Set_of_closures_id = Ocaml_shadow.Set_of_closures_id
module Set_of_closures_origin = Ocaml_shadow.Set_of_closures_origin
module Share_constants = Ocaml_shadow.Share_constants
module Simple_value_approx = Ocaml_shadow.Simple_value_approx
module Simplif = Ocaml_shadow.Simplif
module Simplify_boxed_integer_ops = Ocaml_shadow.Simplify_boxed_integer_ops
module Simplify_boxed_integer_ops_intf = Ocaml_shadow.Simplify_boxed_integer_ops_intf
module Simplify_common = Ocaml_shadow.Simplify_common
module Simplify_primitives = Ocaml_shadow.Simplify_primitives
module Spacetime_profiling = Ocaml_shadow.Spacetime_profiling
module Spill = Ocaml_shadow.Spill
module Split = Ocaml_shadow.Split
module Static_exception = Ocaml_shadow.Static_exception
module Strmatch = Ocaml_shadow.Strmatch
module Strongly_connected_components = Ocaml_shadow.Strongly_connected_components
module Stypes = Ocaml_shadow.Stypes
module Subst = Ocaml_shadow.Subst
module Switch = Ocaml_shadow.Switch
module Symbol = Ocaml_shadow.Symbol
module Symtable = Ocaml_shadow.Symtable
module Tag = Ocaml_shadow.Tag
module Targetint = Ocaml_shadow.Targetint
module Tast_mapper = Ocaml_shadow.Tast_mapper
module Tbl = Ocaml_shadow.Tbl
module Terminfo = Ocaml_shadow.Terminfo
module Timings = Ocaml_shadow.Timings
module Topdirs = Ocaml_shadow.Topdirs
module Toploop = Ocaml_shadow.Toploop
module Topmain = Ocaml_shadow.Topmain
module Topstart = Ocaml_shadow.Topstart
module Trace = Ocaml_shadow.Trace
module Translattribute = Ocaml_shadow.Translattribute
module Translclass = Ocaml_shadow.Translclass
module Translcore = Ocaml_shadow.Translcore
module Translmod = Ocaml_shadow.Translmod
module Translobj = Ocaml_shadow.Translobj
module Typeclass = Ocaml_shadow.Typeclass
module Typecore = Ocaml_shadow.Typecore
module Typedecl = Ocaml_shadow.Typedecl
module Typedtree = Ocaml_shadow.Typedtree
module TypedtreeIter = Ocaml_shadow.TypedtreeIter
module TypedtreeMap = Ocaml_shadow.TypedtreeMap
module Typemod = Ocaml_shadow.Typemod
module Typeopt = Ocaml_shadow.Typeopt
module Types = Ocaml_shadow.Types
module Typetexp = Ocaml_shadow.Typetexp
module Un_anf = Ocaml_shadow.Un_anf
module Unbox_closures = Ocaml_shadow.Unbox_closures
module Unbox_free_vars_of_closures = Ocaml_shadow.Unbox_free_vars_of_closures
module Unbox_specialised_args = Ocaml_shadow.Unbox_specialised_args
module Untypeast = Ocaml_shadow.Untypeast
module Var_within_closure = Ocaml_shadow.Var_within_closure
module Variable = Ocaml_shadow.Variable
module Warnings = Ocaml_shadow.Warnings
module X86_ast = Ocaml_shadow.X86_ast
module X86_dsl = Ocaml_shadow.X86_dsl
module X86_gas = Ocaml_shadow.X86_gas
module X86_masm = Ocaml_shadow.X86_masm
module X86_proc = Ocaml_shadow.X86_proc
module Std : sig ... end
module Light : sig ... end

You should open this module if you intend to use Ppx_core with a standard library that is not Base.

include module type of struct include Light end

You should open this module if you intend to use Ppx_core with a standard library that is not Base.

Includes the overrides from Ppx_ast, as well as all the Ast definitions since we need them in every single ppx

include module type of struct include Ppx_ast end
module Ast = Light.Ast
module Ast_helper = Light.Ast_helper
module Ast_magic = Light.Ast_magic
module Asttypes = Light.Asttypes
module Docstrings = Light.Docstrings
module Extra_warnings = Light.Extra_warnings
module Lexer = Light.Lexer
module Parse = Light.Parse
module Parser = Light.Parser
module Parsetree = Light.Parsetree
module Pprintast = Light.Pprintast
module Select_ast = Light.Select_ast
module Selected_ast = Light.Selected_ast
module Syntaxerr = Light.Syntaxerr
include module type of struct include Ast end
type position = Lexing.position = {
  1. pos_fname : string;
  2. pos_lnum : int;
  3. pos_bol : int;
  4. pos_cnum : int;
}
and location = Location.t = {
  1. loc_start : position;
  2. loc_end : position;
  3. loc_ghost : bool;
}
and 'a loc = 'a Location.loc = {
  1. txt : 'a;
  2. loc : location;
}
and longident = Ocaml_common.Longident.t =
  1. | Lident of string
  2. | Ldot of longident * string
  3. | Lapply of longident * longident
and longident_loc = longident loc
and rec_flag = Migrate_parsetree.Ast_404.Asttypes.rec_flag =
  1. | Nonrecursive
  2. | Recursive
and direction_flag = Migrate_parsetree.Ast_404.Asttypes.direction_flag =
  1. | Upto
  2. | Downto
and private_flag = Migrate_parsetree.Ast_404.Asttypes.private_flag =
  1. | Private
  2. | Public
and mutable_flag = Migrate_parsetree.Ast_404.Asttypes.mutable_flag =
  1. | Immutable
  2. | Mutable
and virtual_flag = Migrate_parsetree.Ast_404.Asttypes.virtual_flag =
  1. | Virtual
  2. | Concrete
and override_flag = Migrate_parsetree.Ast_404.Asttypes.override_flag =
  1. | Override
  2. | Fresh
and closed_flag = Migrate_parsetree.Ast_404.Asttypes.closed_flag =
  1. | Closed
  2. | Open
and label = string
and arg_label = Migrate_parsetree.Ast_404.Asttypes.arg_label =
  1. | Nolabel
  2. | Labelled of string
  3. | Optional of string
and variance = Migrate_parsetree.Ast_404.Asttypes.variance =
  1. | Covariant
  2. | Contravariant
  3. | Invariant

Abstract syntax tree produced by parsing

and constant = Migrate_parsetree.Ast_404.Parsetree.constant =
  1. | Pconst_integer of string * char option
  2. | Pconst_char of char
  3. | Pconst_string of string * string option
  4. | Pconst_float of string * char option

Extension points

and attribute = string loc * payload
and extension = string loc * payload
and attributes = attribute list
and payload = Migrate_parsetree.Ast_404.Parsetree.payload =
  1. | PStr of structure
  2. | PSig of signature
  3. | PTyp of core_type
  4. | PPat of pattern * expression option

Core language

and core_type = Migrate_parsetree.Ast_404.Parsetree.core_type = {
  1. ptyp_desc : core_type_desc;
  2. ptyp_loc : location;
  3. ptyp_attributes : attributes;
}
and core_type_desc = Migrate_parsetree.Ast_404.Parsetree.core_type_desc =
  1. | Ptyp_any
  2. | Ptyp_var of string
  3. | Ptyp_arrow of arg_label * core_type * core_type
  4. | Ptyp_tuple of core_type list
  5. | Ptyp_constr of longident_loc * core_type list
  6. | Ptyp_object of (string * attributes * core_type) list * closed_flag
  7. | Ptyp_class of longident_loc * core_type list
  8. | Ptyp_alias of core_type * string
  9. | Ptyp_variant of row_field list * closed_flag * label list option
  10. | Ptyp_poly of string list * core_type
  11. | Ptyp_package of package_type
  12. | Ptyp_extension of extension
and package_type = longident_loc * (longident_loc * core_type) list
and row_field = Migrate_parsetree.Ast_404.Parsetree.row_field =
  1. | Rtag of label * attributes * bool * core_type list
  2. | Rinherit of core_type
and pattern = Migrate_parsetree.Ast_404.Parsetree.pattern = {
  1. ppat_desc : pattern_desc;
  2. ppat_loc : location;
  3. ppat_attributes : attributes;
}
and pattern_desc = Migrate_parsetree.Ast_404.Parsetree.pattern_desc =
  1. | Ppat_any
  2. | Ppat_var of string loc
  3. | Ppat_alias of pattern * string loc
  4. | Ppat_constant of constant
  5. | Ppat_interval of constant * constant
  6. | Ppat_tuple of pattern list
  7. | Ppat_construct of longident_loc * pattern option
  8. | Ppat_variant of label * pattern option
  9. | Ppat_record of (longident_loc * pattern) list * closed_flag
  10. | Ppat_array of pattern list
  11. | Ppat_or of pattern * pattern
  12. | Ppat_constraint of pattern * core_type
  13. | Ppat_type of longident_loc
  14. | Ppat_lazy of pattern
  15. | Ppat_unpack of string loc
  16. | Ppat_exception of pattern
  17. | Ppat_extension of extension
  18. | Ppat_open of longident loc * pattern
and expression = Migrate_parsetree.Ast_404.Parsetree.expression = {
  1. pexp_desc : expression_desc;
  2. pexp_loc : location;
  3. pexp_attributes : attributes;
}
and expression_desc = Migrate_parsetree.Ast_404.Parsetree.expression_desc =
  1. | Pexp_ident of longident_loc
  2. | Pexp_constant of constant
  3. | Pexp_let of rec_flag * value_binding list * expression
  4. | Pexp_function of case list
  5. | Pexp_fun of arg_label * expression option * pattern * expression
  6. | Pexp_apply of expression * (arg_label * expression) list
  7. | Pexp_match of expression * case list
  8. | Pexp_try of expression * case list
  9. | Pexp_tuple of expression list
  10. | Pexp_construct of longident_loc * expression option
  11. | Pexp_variant of label * expression option
  12. | Pexp_record of (longident_loc * expression) list * expression option
  13. | Pexp_field of expression * longident_loc
  14. | Pexp_setfield of expression * longident_loc * expression
  15. | Pexp_array of expression list
  16. | Pexp_ifthenelse of expression * expression * expression option
  17. | Pexp_sequence of expression * expression
  18. | Pexp_while of expression * expression
  19. | Pexp_for of pattern * expression * expression * direction_flag * expression
  20. | Pexp_constraint of expression * core_type
  21. | Pexp_coerce of expression * core_type option * core_type
  22. | Pexp_send of expression * string
  23. | Pexp_new of longident_loc
  24. | Pexp_setinstvar of string loc * expression
  25. | Pexp_override of (string loc * expression) list
  26. | Pexp_letmodule of string loc * module_expr * expression
  27. | Pexp_letexception of extension_constructor * expression
  28. | Pexp_assert of expression
  29. | Pexp_lazy of expression
  30. | Pexp_poly of expression * core_type option
  31. | Pexp_object of class_structure
  32. | Pexp_newtype of string * expression
  33. | Pexp_pack of module_expr
  34. | Pexp_open of override_flag * longident_loc * expression
  35. | Pexp_extension of extension
  36. | Pexp_unreachable
and case = Migrate_parsetree.Ast_404.Parsetree.case = {
  1. pc_lhs : pattern;
  2. pc_guard : expression option;
  3. pc_rhs : expression;
}
and value_description = Migrate_parsetree.Ast_404.Parsetree.value_description = {
  1. pval_name : string loc;
  2. pval_type : core_type;
  3. pval_prim : string list;
  4. pval_attributes : attributes;
  5. pval_loc : location;
}
and type_declaration = Migrate_parsetree.Ast_404.Parsetree.type_declaration = {
  1. ptype_name : string loc;
  2. ptype_params : (core_type * variance) list;
  3. ptype_cstrs : (core_type * core_type * location) list;
  4. ptype_kind : type_kind;
  5. ptype_private : private_flag;
  6. ptype_manifest : core_type option;
  7. ptype_attributes : attributes;
  8. ptype_loc : location;
}
and type_kind = Migrate_parsetree.Ast_404.Parsetree.type_kind =
  1. | Ptype_abstract
  2. | Ptype_variant of constructor_declaration list
  3. | Ptype_record of label_declaration list
  4. | Ptype_open
and label_declaration = Migrate_parsetree.Ast_404.Parsetree.label_declaration = {
  1. pld_name : string loc;
  2. pld_mutable : mutable_flag;
  3. pld_type : core_type;
  4. pld_loc : location;
  5. pld_attributes : attributes;
}
and constructor_declaration = Migrate_parsetree.Ast_404.Parsetree.constructor_declaration = {
  1. pcd_name : string loc;
  2. pcd_args : constructor_arguments;
  3. pcd_res : core_type option;
  4. pcd_loc : location;
  5. pcd_attributes : attributes;
}
and constructor_arguments = Migrate_parsetree.Ast_404.Parsetree.constructor_arguments =
  1. | Pcstr_tuple of core_type list
  2. | Pcstr_record of label_declaration list
and type_extension = Migrate_parsetree.Ast_404.Parsetree.type_extension = {
  1. ptyext_path : longident_loc;
  2. ptyext_params : (core_type * variance) list;
  3. ptyext_constructors : extension_constructor list;
  4. ptyext_private : private_flag;
  5. ptyext_attributes : attributes;
}
and extension_constructor = Migrate_parsetree.Ast_404.Parsetree.extension_constructor = {
  1. pext_name : string loc;
  2. pext_kind : extension_constructor_kind;
  3. pext_loc : location;
  4. pext_attributes : attributes;
}
and extension_constructor_kind = Migrate_parsetree.Ast_404.Parsetree.extension_constructor_kind =
  1. | Pext_decl of constructor_arguments * core_type option
  2. | Pext_rebind of longident_loc

Class language

and class_type = Migrate_parsetree.Ast_404.Parsetree.class_type = {
  1. pcty_desc : class_type_desc;
  2. pcty_loc : location;
  3. pcty_attributes : attributes;
}
and class_type_desc = Migrate_parsetree.Ast_404.Parsetree.class_type_desc =
  1. | Pcty_constr of longident_loc * core_type list
  2. | Pcty_signature of class_signature
  3. | Pcty_arrow of arg_label * core_type * class_type
  4. | Pcty_extension of extension
and class_signature = Migrate_parsetree.Ast_404.Parsetree.class_signature = {
  1. pcsig_self : core_type;
  2. pcsig_fields : class_type_field list;
}
and class_type_field = Migrate_parsetree.Ast_404.Parsetree.class_type_field = {
  1. pctf_desc : class_type_field_desc;
  2. pctf_loc : location;
  3. pctf_attributes : attributes;
}
and class_type_field_desc = Migrate_parsetree.Ast_404.Parsetree.class_type_field_desc =
  1. | Pctf_inherit of class_type
  2. | Pctf_val of string * mutable_flag * virtual_flag * core_type
  3. | Pctf_method of string * private_flag * virtual_flag * core_type
  4. | Pctf_constraint of core_type * core_type
  5. | Pctf_attribute of attribute
  6. | Pctf_extension of extension
and 'a class_infos = 'a Migrate_parsetree.Ast_404.Parsetree.class_infos = {
  1. pci_virt : virtual_flag;
  2. pci_params : (core_type * variance) list;
  3. pci_name : string loc;
  4. pci_expr : 'a;
  5. pci_loc : location;
  6. pci_attributes : attributes;
}
and class_description = class_type class_infos
and class_type_declaration = class_type class_infos
and class_expr = Migrate_parsetree.Ast_404.Parsetree.class_expr = {
  1. pcl_desc : class_expr_desc;
  2. pcl_loc : location;
  3. pcl_attributes : attributes;
}
and class_expr_desc = Migrate_parsetree.Ast_404.Parsetree.class_expr_desc =
  1. | Pcl_constr of longident_loc * core_type list
  2. | Pcl_structure of class_structure
  3. | Pcl_fun of arg_label * expression option * pattern * class_expr
  4. | Pcl_apply of class_expr * (arg_label * expression) list
  5. | Pcl_let of rec_flag * value_binding list * class_expr
  6. | Pcl_constraint of class_expr * class_type
  7. | Pcl_extension of extension
and class_structure = Migrate_parsetree.Ast_404.Parsetree.class_structure = {
  1. pcstr_self : pattern;
  2. pcstr_fields : class_field list;
}
and class_field = Migrate_parsetree.Ast_404.Parsetree.class_field = {
  1. pcf_desc : class_field_desc;
  2. pcf_loc : location;
  3. pcf_attributes : attributes;
}
and class_field_desc = Migrate_parsetree.Ast_404.Parsetree.class_field_desc =
  1. | Pcf_inherit of override_flag * class_expr * string option
  2. | Pcf_val of string loc * mutable_flag * class_field_kind
  3. | Pcf_method of string loc * private_flag * class_field_kind
  4. | Pcf_constraint of core_type * core_type
  5. | Pcf_initializer of expression
  6. | Pcf_attribute of attribute
  7. | Pcf_extension of extension
and class_field_kind = Migrate_parsetree.Ast_404.Parsetree.class_field_kind =
  1. | Cfk_virtual of core_type
  2. | Cfk_concrete of override_flag * expression
and class_declaration = class_expr class_infos

Module language

and module_type = Migrate_parsetree.Ast_404.Parsetree.module_type = {
  1. pmty_desc : module_type_desc;
  2. pmty_loc : location;
  3. pmty_attributes : attributes;
}
and module_type_desc = Migrate_parsetree.Ast_404.Parsetree.module_type_desc =
  1. | Pmty_ident of longident_loc
  2. | Pmty_signature of signature
  3. | Pmty_functor of string loc * module_type option * module_type
  4. | Pmty_with of module_type * with_constraint list
  5. | Pmty_typeof of module_expr
  6. | Pmty_extension of extension
  7. | Pmty_alias of longident_loc
and signature = signature_item list
and signature_item_desc = Migrate_parsetree.Ast_404.Parsetree.signature_item_desc =
  1. | Psig_value of value_description
  2. | Psig_type of rec_flag * type_declaration list
  3. | Psig_typext of type_extension
  4. | Psig_exception of extension_constructor
  5. | Psig_module of module_declaration
  6. | Psig_recmodule of module_declaration list
  7. | Psig_modtype of module_type_declaration
  8. | Psig_open of open_description
  9. | Psig_include of include_description
  10. | Psig_class of class_description list
  11. | Psig_class_type of class_type_declaration list
  12. | Psig_attribute of attribute
  13. | Psig_extension of extension * attributes
and module_declaration = Migrate_parsetree.Ast_404.Parsetree.module_declaration = {
  1. pmd_name : string loc;
  2. pmd_type : module_type;
  3. pmd_attributes : attributes;
  4. pmd_loc : location;
}
and module_type_declaration = Migrate_parsetree.Ast_404.Parsetree.module_type_declaration = {
  1. pmtd_name : string loc;
  2. pmtd_type : module_type option;
  3. pmtd_attributes : attributes;
  4. pmtd_loc : location;
}
and open_description = Migrate_parsetree.Ast_404.Parsetree.open_description = {
  1. popen_lid : longident_loc;
  2. popen_override : override_flag;
  3. popen_loc : location;
  4. popen_attributes : attributes;
}
and 'a include_infos = 'a Migrate_parsetree.Ast_404.Parsetree.include_infos = {
  1. pincl_mod : 'a;
  2. pincl_loc : location;
  3. pincl_attributes : attributes;
}
and include_description = module_type include_infos
and include_declaration = module_expr include_infos
and with_constraint = Migrate_parsetree.Ast_404.Parsetree.with_constraint =
  1. | Pwith_type of longident_loc * type_declaration
  2. | Pwith_module of longident_loc * longident_loc
  3. | Pwith_typesubst of type_declaration
  4. | Pwith_modsubst of string loc * longident_loc
and module_expr = Migrate_parsetree.Ast_404.Parsetree.module_expr = {
  1. pmod_desc : module_expr_desc;
  2. pmod_loc : location;
  3. pmod_attributes : attributes;
}
and module_expr_desc = Migrate_parsetree.Ast_404.Parsetree.module_expr_desc =
  1. | Pmod_ident of longident_loc
  2. | Pmod_structure of structure
  3. | Pmod_functor of string loc * module_type option * module_expr
  4. | Pmod_apply of module_expr * module_expr
  5. | Pmod_constraint of module_expr * module_type
  6. | Pmod_unpack of expression
  7. | Pmod_extension of extension
and structure = structure_item list
and structure_item_desc = Migrate_parsetree.Ast_404.Parsetree.structure_item_desc =
  1. | Pstr_eval of expression * attributes
  2. | Pstr_value of rec_flag * value_binding list
  3. | Pstr_primitive of value_description
  4. | Pstr_type of rec_flag * type_declaration list
  5. | Pstr_typext of type_extension
  6. | Pstr_exception of extension_constructor
  7. | Pstr_module of module_binding
  8. | Pstr_recmodule of module_binding list
  9. | Pstr_modtype of module_type_declaration
  10. | Pstr_open of open_description
  11. | Pstr_class of class_declaration list
  12. | Pstr_class_type of class_type_declaration list
  13. | Pstr_include of include_declaration
  14. | Pstr_attribute of attribute
  15. | Pstr_extension of extension * attributes
and value_binding = Migrate_parsetree.Ast_404.Parsetree.value_binding = {
  1. pvb_pat : pattern;
  2. pvb_expr : expression;
  3. pvb_attributes : attributes;
  4. pvb_loc : location;
}
and module_binding = Migrate_parsetree.Ast_404.Parsetree.module_binding = {
  1. pmb_name : string loc;
  2. pmb_expr : module_expr;
  3. pmb_attributes : attributes;
  4. pmb_loc : location;
}

Toplevel

and toplevel_phrase = Migrate_parsetree.Ast_404.Parsetree.toplevel_phrase =
  1. | Ptop_def of structure
  2. | Ptop_dir of string * directive_argument
and directive_argument = Migrate_parsetree.Ast_404.Parsetree.directive_argument =
  1. | Pdir_none
  2. | Pdir_string of string
  3. | Pdir_int of string * char option
  4. | Pdir_ident of longident
  5. | Pdir_bool of bool
class virtual map : object ... end
class virtual iter : object ... end
class virtual +'b fold : object ... end
class virtual +'b fold_map : object ... end
class virtual +'b map_with_context : object ... end
class virtual +'b lift : object ... end
include module type of struct include Std end
  • deprecated [since 2017-01] Use Ppx_core or Ppx_core.Light instead
module Ast_builder : sig ... end

Helpers for build OCaml AST fragments

module Ast_pattern : sig ... end

First class AST patterns

module Ast_traverse : sig ... end

AST traversal classes

module Attribute : sig ... end

Attribute hygiene

module Caller_id : sig ... end
module Context_free : sig ... end

Context free rewriting

module Extension : sig ... end
module File_path : sig ... end

Return the path used as root in a file

module Loc : sig ... end

Located items

module Merlin_helpers : sig ... end

Some helpers to annotate the AST so merlin can decide which branches to look at and which branches to ignore.

module Reserved_namespaces = Light.Reserved_namespaces
module Spellcheck : sig ... end
val lident : Base.String.t -> Longident.t
val gen_symbol : ?prefix:Base.String.t -> Base.Unit.t -> Base.String.t

gen_symbol ?prefix () generates a fresh variable name with prefix.

  • parameter prefix

    default = "_x"

val assert_no_attributes : (string Location.loc * Migrate_parsetree.Ast_404.Parsetree.payload) list -> Base.Unit.t
val assert_no_attributes_in : Ast_traverse.iter

get_tparam_id tp

  • returns

    the string identifier associated with tp if it is a type parameter.

(new type_is_recursive rec_flag tds)#go () returns whether rec_flag, tds is really a recursive type. We disregard recursive occurrences appearing in arrow types. You can override the search for certain type expressions by inheriting from this class.

really_recursive rec_flag tds = (new type_is_recursive rec_flag tds)#go ()

convert multi-arg function applications into a cascade of 1-arg applications

Encode a warning message into an 'ocaml.ppwarning' attribute which can be inserted in a generated Parsetree. The compiler will be responsible for reporting the warning.

We don't include these in Std as these are likely to break external code

module Location : sig ... end

Overrides the Location module of OCaml

module Longident : sig ... end

Overrides the Longident module of OCaml

The API of these modules won't change when we upgrade the AST defined by ppx_ast.

module Ast_builder_403 = Light.Ast_builder_403
module Ast_pattern_403 = Light.Ast_pattern_403
val (^^) : ('a, 'b, 'c, 'd, 'e, 'f) Caml.format6 -> ('f, 'b, 'c, 'e, 'g, 'h) Caml.format6 -> ('a, 'b, 'c, 'd, 'g, 'h) Caml.format6
OCaml

Innovation. Community. Security.