Module Ast_sugar

include module type of struct include Types end
include module type of struct include Stage_common.Types end
module Location = Simple_utils.Location
module List = Simple_utils.List
module ValueVar : sig ... end
module TypeVar : sig ... end
module ModuleVar : sig ... end
include module type of struct include Stage_common.Enums end
type z = Z.t
val compare_z : z -> z -> Ppx_deriving_runtime.int
type ligo_string = Simple_utils.Ligo_string.t
val ligo_string_to_yojson : ligo_string -> Yojson.Safe.t
val ligo_string_of_yojson : Yojson.Safe.t -> ligo_string Ppx_deriving_yojson_runtime.error_or
val compare_ligo_string : ligo_string -> ligo_string -> Ppx_deriving_runtime.int
val hash_fold_ligo_string : Ppx_hash_lib.Std.Hash.state -> ligo_string -> Ppx_hash_lib.Std.Hash.state
val hash_ligo_string : ligo_string -> Ppx_hash_lib.Std.Hash.hash_value
val z_to_yojson : Z.t -> [> `String of string ]
val z_of_yojson : [> `String of string ] -> ( Z.t, string ) Core._result
val bytes_to_yojson : Core.Bytes.t -> [> `String of string ]
type layout =
| L_comb
| L_tree
val hash_fold_layout : Ppx_hash_lib.Std.Hash.state -> layout -> Ppx_hash_lib.Std.Hash.state
val hash_layout : layout -> Ppx_hash_lib.Std.Hash.hash_value
val hash_fold_bytes : Core.Hash.state -> Core.Bytes.t -> Core.Hash.state
val hash_fold_z : Core.Hash.state -> Z.t -> Core.Hash.state
type literal =
| Literal_unit
| Literal_int of z
| Literal_nat of z
| Literal_timestamp of z
| Literal_mutez of z
| Literal_string of ligo_string
| Literal_bytes of bytes
| Literal_address of string
| Literal_signature of string
| Literal_key of string
| Literal_key_hash of string
| Literal_chain_id of string
| Literal_operation of bytes
| Literal_bls12_381_g1 of bytes
| Literal_bls12_381_g2 of bytes
| Literal_bls12_381_fr of bytes
| Literal_chest of bytes
| Literal_chest_key of bytes
val literal_to_yojson : literal -> Yojson.Safe.t
val literal_of_yojson : Yojson.Safe.t -> literal Ppx_deriving_yojson_runtime.error_or
val compare_literal : literal -> literal -> Ppx_deriving_runtime.int
val hash_fold_literal : Ppx_hash_lib.Std.Hash.state -> literal -> Ppx_hash_lib.Std.Hash.state
val hash_literal : literal -> Ppx_hash_lib.Std.Hash.hash_value
val literal_to_enum : literal -> int
type constant' =
| C_UNIT
| C_NIL
| C_SOME
| C_NONE
| C_UNOPT
| C_UNOPT_WITH_ERROR
| C_ASSERT_INFERRED
| C_UPDATE
| C_ITER
| C_LOOP_LEFT
| C_LOOP_CONTINUE
| C_LOOP_STOP
| C_FOLD
| C_FOLD_LEFT
| C_FOLD_RIGHT
| C_NEG
| C_ADD
| C_SUB
| C_MUL
| C_DIV
| C_MOD
| C_NOT
| C_AND
| C_OR
| C_XOR
| C_LSL
| C_LSR
| C_EQ
| C_NEQ
| C_LT
| C_GT
| C_LE
| C_GE
| C_CONCAT
| C_BYTES_UNPACK
| C_CONS
| C_PAIR
| C_CAR
| C_CDR
| C_TRUE
| C_FALSE
| C_LEFT
| C_RIGHT
| C_SET_EMPTY
| C_SET_LITERAL
| C_SET_ADD
| C_SET_REMOVE
| C_SET_ITER
| C_SET_FOLD
| C_SET_FOLD_DESC
| C_SET_MEM
| C_SET_UPDATE
| C_LIST_EMPTY
| C_LIST_LITERAL
| C_LIST_ITER
| C_LIST_MAP
| C_LIST_FOLD
| C_LIST_FOLD_LEFT
| C_LIST_FOLD_RIGHT
| C_MAP
| C_MAP_EMPTY
| C_MAP_LITERAL
| C_MAP_GET
| C_MAP_GET_FORCE
| C_MAP_ADD
| C_MAP_REMOVE
| C_MAP_UPDATE
| C_MAP_ITER
| C_MAP_MAP
| C_MAP_FOLD
| C_MAP_FIND
| C_MAP_FIND_OPT
| C_MAP_GET_AND_UPDATE
| C_BIG_MAP
| C_BIG_MAP_EMPTY
| C_BIG_MAP_LITERAL
| C_BIG_MAP_GET_AND_UPDATE
| C_CALL
| C_CONTRACT
| C_CONTRACT_OPT
| C_CONTRACT_WITH_ERROR
| C_CONTRACT_ENTRYPOINT
| C_CONTRACT_ENTRYPOINT_OPT
| C_ADDRESS
| C_SELF
| C_SELF_ADDRESS
| C_IMPLICIT_ACCOUNT
| C_SET_DELEGATE
| C_CREATE_CONTRACT
| C_OPEN_CHEST
| C_VIEW
| C_TEST_SIZE
| C_TEST_ORIGINATE
| C_TEST_GET_STORAGE_OF_ADDRESS
| C_TEST_GET_BALANCE
| C_TEST_SET_SOURCE
| C_TEST_SET_BAKER
| C_TEST_EXTERNAL_CALL_TO_ADDRESS
| C_TEST_EXTERNAL_CALL_TO_ADDRESS_EXN
| C_TEST_GET_NTH_BS
| C_TEST_PRINT
| C_TEST_TO_STRING
| C_TEST_UNESCAPE_STRING
| C_TEST_STATE_RESET
| C_TEST_BOOTSTRAP_CONTRACT
| C_TEST_NTH_BOOTSTRAP_CONTRACT
| C_TEST_LAST_ORIGINATIONS
| C_TEST_MUTATE_VALUE
| C_TEST_MUTATION_TEST
| C_TEST_MUTATION_TEST_ALL
| C_TEST_SAVE_MUTATION
| C_TEST_RUN
| C_TEST_COMPILE_CONTRACT
| C_TEST_DECOMPILE
| C_TEST_TO_CONTRACT
| C_TEST_TO_ENTRYPOINT
| C_TEST_COMPILE_CONTRACT_FROM_FILE
| C_TEST_TO_TYPED_ADDRESS
| C_TEST_NTH_BOOTSTRAP_TYPED_ADDRESS
| C_TEST_SET_BIG_MAP
| C_TEST_CAST_ADDRESS
| C_TEST_CREATE_CHEST
| C_TEST_CREATE_CHEST_KEY
| C_TEST_RANDOM
| C_TEST_GENERATOR_EVAL
| C_TEST_ADD_ACCOUNT
| C_TEST_NEW_ACCOUNT
| C_TEST_BAKER_ACCOUNT
| C_TEST_REGISTER_DELEGATE
| C_TEST_BAKE_UNTIL_N_CYCLE_END
| C_TEST_GET_VOTING_POWER
| C_TEST_GET_TOTAL_VOTING_POWER
| C_TEST_REGISTER_CONSTANT
| C_TEST_CONSTANT_TO_MICHELSON
| C_TEST_REGISTER_FILE_CONSTANTS
| C_TEST_PUSH_CONTEXT
| C_TEST_POP_CONTEXT
| C_TEST_DROP_CONTEXT
| C_TEST_FAILWITH
| C_TEST_READ_CONTRACT_FROM_FILE
| C_TEST_SIGN
| C_TEST_GET_ENTRYPOINT
| C_TEST_LAST_EVENTS
| C_SAPLING_VERIFY_UPDATE
| C_SAPLING_EMPTY_STATE
| C_GLOBAL_CONSTANT
| C_EMIT_EVENT
| C_POLYMORPHIC_ADD
| C_POLYMORPHIC_SUB
| C_SUB_MUTEZ
| C_OPTION_MAP
val min_constant' : int
val max_constant' : int
val constant'_to_enum : constant' -> int
val constant'_of_enum : int -> constant' option
val constant'_to_yojson : constant' -> Yojson.Safe.t
val constant'_of_yojson : Yojson.Safe.t -> constant' Ppx_deriving_yojson_runtime.error_or
val pp_constant' : Stdlib.Format.formatter -> constant' -> unit
val ppx_is_only_interpreter : constant' -> bool
val read_constant' : string -> constant' option
type deprecated = {
name : string;
const : constant';
}
type rich_constant =
| Const of constant'
type location = Location.t
type 'a location_wrap = 'a Location.wrap
type attributes = string list
type known_attributes = {
inline : bool;
no_mutation : bool;
view : bool;
public : bool;
hidden : bool;
}
val hash_fold_known_attributes : Ppx_hash_lib.Std.Hash.state -> known_attributes -> Ppx_hash_lib.Std.Hash.state
val hash_known_attributes : known_attributes -> Ppx_hash_lib.Std.Hash.hash_value
type expression_variable = ValueVar.t
val hash_fold_expression_variable : Ppx_hash_lib.Std.Hash.state -> expression_variable -> Ppx_hash_lib.Std.Hash.state
val hash_expression_variable : expression_variable -> Ppx_hash_lib.Std.Hash.hash_value
type type_variable = TypeVar.t
val hash_fold_type_variable : Ppx_hash_lib.Std.Hash.state -> type_variable -> Ppx_hash_lib.Std.Hash.state
val hash_type_variable : type_variable -> Ppx_hash_lib.Std.Hash.hash_value
type module_variable = ModuleVar.t
val hash_fold_module_variable : Ppx_hash_lib.Std.Hash.state -> module_variable -> Ppx_hash_lib.Std.Hash.state
val hash_module_variable : module_variable -> Ppx_hash_lib.Std.Hash.hash_value
type kind =
| Type
| Singleton
val kind_to_yojson : kind -> Yojson.Safe.t
val kind_of_yojson : Yojson.Safe.t -> kind Ppx_deriving_yojson_runtime.error_or
val _ : Yojson.Safe.t -> kind Ppx_deriving_yojson_runtime.error_or
val equal_kind : kind -> kind -> bool
val compare_kind : kind -> kind -> int
val hash_fold_kind : Ppx_hash_lib.Std.Hash.state -> kind -> Ppx_hash_lib.Std.Hash.state
val hash_kind : kind -> Ppx_hash_lib.Std.Hash.hash_value
type label =
| Label of string
val hash_fold_label : Ppx_hash_lib.Std.Hash.state -> label -> Ppx_hash_lib.Std.Hash.state
val hash_label : label -> Ppx_hash_lib.Std.Hash.hash_value
val label_to_yojson : label -> [> `List of [> `String of string ] list ]
val equal_label : label -> label -> bool
val compare_label : label -> label -> int
module LMap : sig ... end
type 'a label_map = 'a LMap.t
val hash_fold_label_map : 'a. ( Ppx_hash_lib.Std.Hash.state -> 'a -> Ppx_hash_lib.Std.Hash.state ) -> Ppx_hash_lib.Std.Hash.state -> 'a label_map -> Ppx_hash_lib.Std.Hash.state
val const_name : rich_constant -> constant'
type 'ty_expr row_element_mini_c = {
associated_type : 'ty_expr;
michelson_annotation : string option;
decl_pos : int;
}
val hash_fold_row_element_mini_c : 'ty_expr. ( Ppx_hash_lib.Std.Hash.state -> 'ty_expr -> Ppx_hash_lib.Std.Hash.state ) -> Ppx_hash_lib.Std.Hash.state -> 'ty_expr row_element_mini_c -> Ppx_hash_lib.Std.Hash.state
type 'ty_exp type_app = {
type_operator : type_variable;
arguments : 'ty_exp list;
}
val hash_fold_type_app : 'ty_exp. ( Ppx_hash_lib.Std.Hash.state -> 'ty_exp -> Ppx_hash_lib.Std.Hash.state ) -> Ppx_hash_lib.Std.Hash.state -> 'ty_exp type_app -> Ppx_hash_lib.Std.Hash.state
type 'ty_expr row_element = {
associated_type : 'ty_expr;
attributes : string list;
decl_pos : int;
}
type 'a module_access = {
module_path : module_variable list;
element : 'a;
}
val hash_fold_module_access : 'a. ( Ppx_hash_lib.Std.Hash.state -> 'a -> Ppx_hash_lib.Std.Hash.state ) -> Ppx_hash_lib.Std.Hash.state -> 'a module_access -> Ppx_hash_lib.Std.Hash.state
type 'ty_exp abstraction = {
ty_binder : type_variable;
kind : kind;
type_ : 'ty_exp;
}
val hash_fold_abstraction : 'ty_exp. ( Ppx_hash_lib.Std.Hash.state -> 'ty_exp -> Ppx_hash_lib.Std.Hash.state ) -> Ppx_hash_lib.Std.Hash.state -> 'ty_exp abstraction -> Ppx_hash_lib.Std.Hash.state
type 'ty_exp rows = {
fields : 'ty_exp row_element label_map;
attributes : string list;
}
type 'ty_exp arrow = {
type1 : 'ty_exp;
type2 : 'ty_exp;
}
val hash_fold_arrow : 'ty_exp. ( Ppx_hash_lib.Std.Hash.state -> 'ty_exp -> Ppx_hash_lib.Std.Hash.state ) -> Ppx_hash_lib.Std.Hash.state -> 'ty_exp arrow -> Ppx_hash_lib.Std.Hash.state
type binder_attributes = {
const_or_var : [ `Const | `Var ] option;
}
val hash_fold_binder_attributes : Ppx_hash_lib.Std.Hash.state -> binder_attributes -> Ppx_hash_lib.Std.Hash.state
val hash_binder_attributes : binder_attributes -> Ppx_hash_lib.Std.Hash.hash_value
type 'ty_exp binder = {
var : expression_variable;
ascr : 'ty_exp option;
attributes : binder_attributes;
}
val hash_fold_binder : 'ty_exp. ( Ppx_hash_lib.Std.Hash.state -> 'ty_exp -> Ppx_hash_lib.Std.Hash.state ) -> Ppx_hash_lib.Std.Hash.state -> 'ty_exp binder -> Ppx_hash_lib.Std.Hash.state
type 'exp application = {
lamb : 'exp;
args : 'exp;
}
type 'exp constant = {
cons_name : constant';
arguments : 'exp list;
}
type ('exp, 'ty_exp) lambda = {
binder : 'ty_exp binder;
output_type : 'ty_exp option;
result : 'exp;
}
type ('exp, 'ty_exp) recursive = {
fun_name : expression_variable;
fun_type : 'ty_exp;
lambda : ( 'exp, 'ty_exp ) lambda;
}
type ('exp, 'ty_exp) type_in = {
type_binder : type_variable;
rhs : 'ty_exp;
let_result : 'exp;
}
type 'exp raw_code = {
language : string;
code : 'exp;
}
type 'exp constructor = {
constructor : label;
element : 'exp;
}
type 'exp access =
| Access_tuple of z
| Access_record of string
| Access_map of 'exp
type 'exp accessor = {
record : 'exp;
path : 'exp access list;
}
type 'exp update = {
record : 'exp;
path : 'exp access list;
update : 'exp;
}
type 'exp record_accessor = {
record : 'exp;
path : label;
}
type 'exp record_update = {
record : 'exp;
path : label;
update : 'exp;
}
type 'exp type_abs = {
type_binder : type_variable;
result : 'exp;
}
type ('exp, 'ty_exp) ascription = {
anno_expr : 'exp;
type_annotation : 'ty_exp;
}
type 'exp conditional = {
condition : 'exp;
then_clause : 'exp;
else_clause : 'exp;
}
and 'exp sequence = {
expr1 : 'exp;
expr2 : 'exp;
}
and ('exp, 'ty_exp) assign = {
binder : 'ty_exp binder;
expression : 'exp;
}
and 'exp for_ = {
binder : expression_variable;
start : 'exp;
final : 'exp;
incr : 'exp;
f_body : 'exp;
}
and 'exp for_each = {
fe_binder : expression_variable * expression_variable option;
collection : 'exp;
collection_type : collect_type;
fe_body : 'exp;
}
and collect_type =
| Map
| Set
| List
| Any
and 'exp while_loop = {
cond : 'exp;
body : 'exp;
}
type 'ty_exp list_pattern =
| Cons of 'ty_exp pattern * 'ty_exp pattern
| List of 'ty_exp pattern list
and 'ty_exp pattern_repr =
| P_unit
| P_var of 'ty_exp binder
| P_list of 'ty_exp list_pattern
| P_variant of label * 'ty_exp pattern
| P_tuple of 'ty_exp pattern list
| P_record of label list * 'ty_exp pattern list
and 'ty_exp pattern = 'ty_exp pattern_repr Location.wrap
type ('exp, 'ty_exp) match_case = {
pattern : 'ty_exp pattern;
body : 'exp;
}
type ('exp, 'ty_exp) match_exp = {
matchee : 'exp;
cases : ( 'exp, 'ty_exp ) match_case list;
}
type ('ty_exp, 'attr) declaration_type' = {
type_binder : type_variable;
type_expr : 'ty_exp;
type_attr : 'attr;
}
and ('exp, 'ty_exp, 'attr) declaration_constant' = {
binder : 'ty_exp binder;
expr : 'exp;
attr : 'attr;
}
and ('exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m) declaration_module' = {
module_binder : module_variable;
module_ : ( 'exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m ) module_expr';
module_attr : 'attr_m;
}
and ('exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m) declaration_content' =
| Declaration_type of ( 'ty_exp, 'attr_t ) declaration_type'
| Declaration_constant of ( 'exp, 'ty_exp, 'attr_e ) declaration_constant'
| Declaration_module of ( 'exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m ) declaration_module'
and ('exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m) declaration' = ( 'exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m ) declaration_content' location_wrap
and ('exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m) declarations' = ( 'exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m ) declaration' list
and ('exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m) mod_in' = {
module_binder : module_variable;
rhs : ( 'exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m ) module_expr';
let_result : 'exp;
}
and module_path_' = module_variable List.Ne.t
and ('exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m) module_expr_content' =
| M_struct of ( 'exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m ) declarations'
| M_variable of module_variable
| M_module_path of module_path_'
and ('exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m) module_expr' = ( 'exp, 'ty_exp, 'attr_e, 'attr_t, 'attr_m ) module_expr_content' Location.wrap
and type_expression = {
type_content : {type_content}5;
location : Location.t;
}
and ty_expr = type_expression
and module_ = declarations
and expression = {
expression_content : {expression_content}6;
location : Location.t;
}
and expr = expression
and let_in = {
let_binder : ty_expr binder;
rhs : expression;
let_result : expression;
attributes : attributes;
mut : bool;
}
and program = declaration list
include module type of struct include Combinators end
module Option = Simple_utils.Option
type expression_content = Types.expression_content =
| E_literal of Types.literal
| E_constant of Types.expr Types.constant
| E_variable of Types.expression_variable
| E_application of Types.expr Types.application
| E_lambda of ( Types.expr, Types.ty_expr ) Types.lambda
| E_type_abstraction of Types.expr Types.type_abs
| E_recursive of ( Types.expr, Types.ty_expr ) Types.recursive
| E_let_in of Types.let_in
| E_type_in of ( Types.expr, Types.ty_expr ) Types.type_in
| E_mod_in of ( Types.expr, Types.ty_expr, Types.attributes, Types.attributes, Types.attributes ) Types.mod_in'
| E_raw_code of Types.expr Types.raw_code
| E_constructor of Types.expr Types.constructor
| E_matching of Types.matching
| E_record of Types.expression Types.label_map
| E_accessor of Types.expr Types.accessor
| E_update of Types.expr Types.update
| E_ascription of ( Types.expr, Types.ty_expr ) Types.ascription
| E_module_accessor of Types.expression_variable Types.module_access
| E_cond of Types.expr Types.conditional
| E_sequence of Types.expr Types.sequence
| E_skip
| E_tuple of Types.expression list
| E_map of (Types.expression * Types.expression) list
| E_big_map of (Types.expression * Types.expression) list
| E_list of Types.expression list
| E_set of Types.expression list
| E_assign of ( Types.expr, Types.ty_expr ) Types.assign
type nonrec e_accessor = Types.expr Types.accessor
type nonrec e_application = Types.expr Types.application
type nonrec e_ascription = ( Types.expr, Types.ty_expr ) Types.ascription
type nonrec e_assign = ( Types.expr, Types.ty_expr ) Types.assign
type nonrec e_big_map = (Types.expression * Types.expression) list
type nonrec e_cond = Types.expr Types.conditional
type nonrec e_constant = Types.expr Types.constant
type nonrec e_constructor = Types.expr Types.constructor
type nonrec e_lambda = ( Types.expr, Types.ty_expr ) Types.lambda
type nonrec e_let_in = Types.let_in
type nonrec e_list = Types.expression list
type nonrec e_literal = Types.literal
type nonrec e_map = (Types.expression * Types.expression) list
type nonrec e_matching = Types.matching
type nonrec e_module_accessor = Types.expression_variable Types.module_access
type nonrec e_raw_code = Types.expr Types.raw_code
type nonrec e_record = Types.expression Types.label_map
type nonrec e_recursive = ( Types.expr, Types.ty_expr ) Types.recursive
type nonrec e_sequence = Types.expr Types.sequence
type nonrec e_set = Types.expression list
type nonrec e_skip = unit
type nonrec e_tuple = Types.expression list
type nonrec e_type_abstraction = Types.expr Types.type_abs
type nonrec e_type_in = ( Types.expr, Types.ty_expr ) Types.type_in
type nonrec e_update = Types.expr Types.update
type nonrec e_variable = Types.expression_variable
val e_accessor : Types.expr Types.accessor -> ?loc:Types.Location.t -> unit -> Types.expression
val e_application : Types.expr Types.application -> ?loc:Types.Location.t -> unit -> Types.expression
val e_big_map : (Types.expression * Types.expression) list -> ?loc:Types.Location.t -> unit -> Types.expression
val e_constant : Types.expr Types.constant -> ?loc:Types.Location.t -> unit -> Types.expression
val e_constructor : Types.expr Types.constructor -> ?loc:Types.Location.t -> unit -> Types.expression
val e_let_in : Types.let_in -> ?loc:Types.Location.t -> unit -> Types.expression
val e_list : Types.expression list -> ?loc:Types.Location.t -> unit -> Types.expression
val e_literal : Types.literal -> ?loc:Types.Location.t -> unit -> Types.expression
val e_map : (Types.expression * Types.expression) list -> ?loc:Types.Location.t -> unit -> Types.expression
val e_matching : Types.matching -> ?loc:Types.Location.t -> unit -> Types.expression
val e_raw_code : Types.expr Types.raw_code -> ?loc:Types.Location.t -> unit -> Types.expression
val e_sequence : Types.expr Types.sequence -> ?loc:Types.Location.t -> unit -> Types.expression
val e_set : Types.expression list -> ?loc:Types.Location.t -> unit -> Types.expression
val e_skip : ?loc:Types.Location.t -> unit -> Types.expression
val e_tuple : Types.expression list -> ?loc:Types.Location.t -> unit -> Types.expression
val e_type_abstraction : Types.expr Types.type_abs -> ?loc:Types.Location.t -> unit -> Types.expression
val e_update : Types.expr Types.update -> ?loc:Types.Location.t -> unit -> Types.expression
val e_variable : Types.expression_variable -> ?loc:Types.Location.t -> unit -> Types.expression
val is_e_accessor : Types.expression -> bool
val is_e_application : Types.expression -> bool
val is_e_ascription : Types.expression -> bool
val is_e_assign : Types.expression -> bool
val is_e_big_map : Types.expression -> bool
val is_e_cond : Types.expression -> bool
val is_e_constant : Types.expression -> bool
val is_e_constructor : Types.expression -> bool
val is_e_lambda : Types.expression -> bool
val is_e_let_in : Types.expression -> bool
val is_e_list : Types.expression -> bool
val is_e_literal : Types.expression -> bool
val is_e_map : Types.expression -> bool
val is_e_matching : Types.expression -> bool
val is_e_mod_in : Types.expression -> bool
val is_e_module_accessor : Types.expression -> bool
val is_e_raw_code : Types.expression -> bool
val is_e_record : Types.expression -> bool
val is_e_recursive : Types.expression -> bool
val is_e_sequence : Types.expression -> bool
val is_e_set : Types.expression -> bool
val is_e_skip : Types.expression -> bool
val is_e_tuple : Types.expression -> bool
val is_e_type_abstraction : Types.expression -> bool
val is_e_type_in : Types.expression -> bool
val is_e_update : Types.expression -> bool
val is_e_variable : Types.expression -> bool
val get_e_accessor_exn : Types.expression -> Types.expr Types.accessor
val get_e_application_exn : Types.expression -> Types.expr Types.application
val get_e_ascription_exn : Types.expression -> ( Types.expr, Types.ty_expr ) Types.ascription
val get_e_assign_exn : Types.expression -> ( Types.expr, Types.ty_expr ) Types.assign
val get_e_big_map_exn : Types.expression -> (Types.expression * Types.expression) list
val get_e_constant_exn : Types.expression -> Types.expr Types.constant
val get_e_constructor_exn : Types.expression -> Types.expr Types.constructor
val get_e_lambda_exn : Types.expression -> ( Types.expr, Types.ty_expr ) Types.lambda
val get_e_let_in_exn : Types.expression -> Types.let_in
val get_e_list_exn : Types.expression -> Types.expression list
val get_e_literal_exn : Types.expression -> Types.literal
val get_e_map_exn : Types.expression -> (Types.expression * Types.expression) list
val get_e_matching_exn : Types.expression -> Types.matching
val get_e_raw_code_exn : Types.expression -> Types.expr Types.raw_code
val get_e_recursive_exn : Types.expression -> ( Types.expr, Types.ty_expr ) Types.recursive
val get_e_sequence_exn : Types.expression -> Types.expr Types.sequence
val get_e_set_exn : Types.expression -> Types.expression list
val get_e_skip_exn : Types.expression -> unit
val get_e_tuple_exn : Types.expression -> Types.expression list
val get_e_type_abstraction_exn : Types.expression -> Types.expr Types.type_abs
val get_e_type_in_exn : Types.expression -> ( Types.expr, Types.ty_expr ) Types.type_in
val get_e_update_exn : Types.expression -> Types.expr Types.update
val get_e_variable_exn : Types.expression -> Types.expression_variable
val get_e_accessor_opt : Types.expression -> Types.expr Types.accessor option
val get_e_application_opt : Types.expression -> Types.expr Types.application option
val get_e_ascription_opt : Types.expression -> ( Types.expr, Types.ty_expr ) Types.ascription option
val get_e_assign_opt : Types.expression -> ( Types.expr, Types.ty_expr ) Types.assign option
val get_e_big_map_opt : Types.expression -> (Types.expression * Types.expression) list option
val get_e_cond_opt : Types.expression -> Types.expr Types.conditional option
val get_e_constant_opt : Types.expression -> Types.expr Types.constant option
val get_e_constructor_opt : Types.expression -> Types.expr Types.constructor option
val get_e_lambda_opt : Types.expression -> ( Types.expr, Types.ty_expr ) Types.lambda option
val get_e_let_in_opt : Types.expression -> Types.let_in option
val get_e_list_opt : Types.expression -> Types.expression list option
val get_e_literal_opt : Types.expression -> Types.literal option
val get_e_map_opt : Types.expression -> (Types.expression * Types.expression) list option
val get_e_matching_opt : Types.expression -> Types.matching option
val get_e_module_accessor_opt : Types.expression -> Types.expression_variable Types.module_access option
val get_e_raw_code_opt : Types.expression -> Types.expr Types.raw_code option
val get_e_record_opt : Types.expression -> Types.expression Types.label_map option
val get_e_recursive_opt : Types.expression -> ( Types.expr, Types.ty_expr ) Types.recursive option
val get_e_sequence_opt : Types.expression -> Types.expr Types.sequence option
val get_e_set_opt : Types.expression -> Types.expression list option
val get_e_skip_opt : Types.expression -> unit option
val get_e_tuple_opt : Types.expression -> Types.expression list option
val get_e_type_abstraction_opt : Types.expression -> Types.expr Types.type_abs option
val get_e_type_in_opt : Types.expression -> ( Types.expr, Types.ty_expr ) Types.type_in option
val get_e_update_opt : Types.expression -> Types.expr Types.update option
val get_e_variable_opt : Types.expression -> Types.expression_variable option
val get_e_accessor : Types.expression -> Types.expr Types.accessor option
val get_e_application : Types.expression -> Types.expr Types.application option
val get_e_ascription : Types.expression -> ( Types.expr, Types.ty_expr ) Types.ascription option
val get_e_assign : Types.expression -> ( Types.expr, Types.ty_expr ) Types.assign option
val get_e_big_map : Types.expression -> (Types.expression * Types.expression) list option
val get_e_cond : Types.expression -> Types.expr Types.conditional option
val get_e_constant : Types.expression -> Types.expr Types.constant option
val get_e_constructor : Types.expression -> Types.expr Types.constructor option
val get_e_lambda : Types.expression -> ( Types.expr, Types.ty_expr ) Types.lambda option
val get_e_let_in : Types.expression -> Types.let_in option
val get_e_list : Types.expression -> Types.expression list option
val get_e_literal : Types.expression -> Types.literal option
val get_e_map : Types.expression -> (Types.expression * Types.expression) list option
val get_e_matching : Types.expression -> Types.matching option
val get_e_module_accessor : Types.expression -> Types.expression_variable Types.module_access option
val get_e_raw_code : Types.expression -> Types.expr Types.raw_code option
val get_e_recursive : Types.expression -> ( Types.expr, Types.ty_expr ) Types.recursive option
val get_e_sequence : Types.expression -> Types.expr Types.sequence option
val get_e_set : Types.expression -> Types.expression list option
val get_e_skip : Types.expression -> unit option
val get_e_tuple : Types.expression -> Types.expression list option
val get_e_type_abstraction : Types.expression -> Types.expr Types.type_abs option
val get_e_type_in : Types.expression -> ( Types.expr, Types.ty_expr ) Types.type_in option
val get_e_update : Types.expression -> Types.expr Types.update option
val get_e_variable : Types.expression -> Types.expression_variable option
val expression_content_destruct : expression_content -> e_accessor:( Types.expr Types.accessor -> 'a ) -> e_application:( Types.expr Types.application -> 'b ) -> e_ascription:( ( Types.expr, Types.ty_expr ) Types.ascription -> 'c ) -> e_assign:( ( Types.expr, Types.ty_expr ) Types.assign -> 'd ) -> e_big_map:( (Types.expression * Types.expression) list -> 'e ) -> e_cond:( Types.expr Types.conditional -> 'f ) -> e_constant:( Types.expr Types.constant -> 'g ) -> e_constructor:( Types.expr Types.constructor -> 'h ) -> e_lambda:( ( Types.expr, Types.ty_expr ) Types.lambda -> 'i ) -> e_let_in:( Types.let_in -> 'j ) -> e_list:( Types.expression list -> 'k ) -> e_literal:( Types.literal -> 'l ) -> e_map:( (Types.expression * Types.expression) list -> 'm ) -> e_matching:( Types.matching -> 'n ) -> e_mod_in: ( ( Types.expr, Types.ty_expr, Types.attributes, Types.attributes, Types.attributes ) Types.mod_in' -> 'o ) -> e_module_accessor:( Types.expression_variable Types.module_access -> 'p ) -> e_raw_code:( Types.expr Types.raw_code -> 'q ) -> e_record:( Types.expression Types.label_map -> 'r ) -> e_recursive:( ( Types.expr, Types.ty_expr ) Types.recursive -> 's ) -> e_sequence:( Types.expr Types.sequence -> 't ) -> e_set:( Types.expression list -> 'u ) -> e_skip:( unit -> 'v ) -> e_tuple:( Types.expression list -> 'w ) -> e_type_abstraction:( Types.expr Types.type_abs -> 'x ) -> e_type_in:( ( Types.expr, Types.ty_expr ) Types.type_in -> 'y ) -> e_update:( Types.expr Types.update -> 'z ) -> e_variable:( Types.expression_variable -> 'a1 ) -> 'b1
val expression_content_destruct_tpl : expression_content -> ( Types.expr Types.accessor -> 'a ) -> ( Types.expr Types.application -> 'b ) -> ( ( Types.expr, Types.ty_expr ) Types.ascription -> 'c ) -> ( ( Types.expr, Types.ty_expr ) Types.assign -> 'd ) -> ( (Types.expression * Types.expression) list -> 'e ) -> ( Types.expr Types.conditional -> 'f ) -> ( Types.expr Types.constant -> 'g ) -> ( Types.expr Types.constructor -> 'h ) -> ( ( Types.expr, Types.ty_expr ) Types.lambda -> 'i ) -> ( Types.let_in -> 'j ) -> ( Types.expression list -> 'k ) -> ( Types.literal -> 'l ) -> ( (Types.expression * Types.expression) list -> 'm ) -> ( Types.matching -> 'n ) -> ( ( Types.expr, Types.ty_expr, Types.attributes, Types.attributes, Types.attributes ) Types.mod_in' -> 'o ) -> ( Types.expression_variable Types.module_access -> 'p ) -> ( Types.expr Types.raw_code -> 'q ) -> ( Types.expression Types.label_map -> 'r ) -> ( ( Types.expr, Types.ty_expr ) Types.recursive -> 's ) -> ( Types.expr Types.sequence -> 't ) -> ( Types.expression list -> 'u ) -> ( unit -> 'v ) -> ( Types.expression list -> 'w ) -> ( Types.expr Types.type_abs -> 'x ) -> ( ( Types.expr, Types.ty_expr ) Types.type_in -> 'y ) -> ( Types.expr Types.update -> 'z ) -> ( Types.expression_variable -> 'a1 ) -> 'b1
type type_content = Types.type_content =
| T_variable of Types.type_variable
| T_sum of Types.ty_expr Types.rows
| T_record of Types.ty_expr Types.rows
| T_tuple of Types.ty_expr list
| T_arrow of Types.ty_expr Types.arrow
| T_app of Types.ty_expr Types.type_app
| T_module_accessor of Types.type_variable Types.module_access
| T_singleton of Types.literal
| T_abstraction of Types.ty_expr Types.abstraction
| T_for_all of Types.ty_expr Types.abstraction
type nonrec t_abstraction = Types.ty_expr Types.abstraction
type nonrec t_app = Types.ty_expr Types.type_app
type nonrec t_arrow = Types.ty_expr Types.arrow
type nonrec t_for_all = Types.ty_expr Types.abstraction
type nonrec t_module_accessor = Types.type_variable Types.module_access
type nonrec t_record = Types.ty_expr Types.rows
type nonrec t_singleton = Types.literal
type nonrec t_sum = Types.ty_expr Types.rows
type nonrec t_tuple = Types.ty_expr list
type nonrec t_variable = Types.type_variable
val t_singleton : Types.literal -> ?loc:Types.Location.t -> unit -> Types.type_expression
val t_tuple : Types.ty_expr list -> ?loc:Types.Location.t -> unit -> Types.type_expression
val t_variable : Types.type_variable -> ?loc:Types.Location.t -> unit -> Types.type_expression
val map_t_singleton : ( Types.literal -> Types.literal ) -> type_content -> type_content
val map_t_tuple : ( Types.ty_expr list -> Types.ty_expr list ) -> type_content -> type_content
val set_t_singleton : type_content -> Types.literal -> type_content
val set_t_tuple : type_content -> Types.ty_expr list -> type_content
val set_t_variable : type_content -> Types.type_variable -> type_content
val is_t_abstraction : Types.type_expression -> bool
val is_t_app : Types.type_expression -> bool
val is_t_arrow : Types.type_expression -> bool
val is_t_for_all : Types.type_expression -> bool
val is_t_module_accessor : Types.type_expression -> bool
val is_t_record : Types.type_expression -> bool
val is_t_singleton : Types.type_expression -> bool
val is_t_sum : Types.type_expression -> bool
val is_t_tuple : Types.type_expression -> bool
val is_t_variable : Types.type_expression -> bool
val get_t_singleton_exn : Types.type_expression -> Types.literal
val get_t_tuple_exn : Types.type_expression -> Types.ty_expr list
val get_t_variable_exn : Types.type_expression -> Types.type_variable
val get_t_abstraction_opt : Types.type_expression -> Types.ty_expr Types.abstraction option
val get_t_app_opt : Types.type_expression -> Types.ty_expr Types.type_app option
val get_t_arrow_opt : Types.type_expression -> Types.ty_expr Types.arrow option
val get_t_for_all_opt : Types.type_expression -> Types.ty_expr Types.abstraction option
val get_t_module_accessor_opt : Types.type_expression -> Types.type_variable Types.module_access option
val get_t_record_opt : Types.type_expression -> Types.ty_expr Types.rows option
val get_t_singleton_opt : Types.type_expression -> Types.literal option
val get_t_sum_opt : Types.type_expression -> Types.ty_expr Types.rows option
val get_t_tuple_opt : Types.type_expression -> Types.ty_expr list option
val get_t_variable_opt : Types.type_expression -> Types.type_variable option
val get_t_abstraction : Types.type_expression -> Types.ty_expr Types.abstraction option
val get_t_arrow : Types.type_expression -> Types.ty_expr Types.arrow option
val get_t_module_accessor : Types.type_expression -> Types.type_variable Types.module_access option
val get_t_record : Types.type_expression -> Types.ty_expr Types.rows option
val get_t_singleton : Types.type_expression -> Types.literal option
val get_t_tuple : Types.type_expression -> Types.ty_expr list option
val get_t_variable : Types.type_expression -> Types.type_variable option
val type_content_destruct : type_content -> t_abstraction:( Types.ty_expr Types.abstraction -> 'a ) -> t_app:( Types.ty_expr Types.type_app -> 'b ) -> t_arrow:( Types.ty_expr Types.arrow -> 'c ) -> t_for_all:( Types.ty_expr Types.abstraction -> 'd ) -> t_module_accessor:( Types.type_variable Types.module_access -> 'e ) -> t_record:( Types.ty_expr Types.rows -> 'f ) -> t_singleton:( Types.literal -> 'g ) -> t_sum:( Types.ty_expr Types.rows -> 'h ) -> t_tuple:( Types.ty_expr list -> 'i ) -> t_variable:( Types.type_variable -> 'j ) -> 'k
val type_content_destruct_tpl : type_content -> ( Types.ty_expr Types.abstraction -> 'a ) -> ( Types.ty_expr Types.type_app -> 'b ) -> ( Types.ty_expr Types.arrow -> 'c ) -> ( Types.ty_expr Types.abstraction -> 'd ) -> ( Types.type_variable Types.module_access -> 'e ) -> ( Types.ty_expr Types.rows -> 'f ) -> ( Types.literal -> 'g ) -> ( Types.ty_expr Types.rows -> 'h ) -> ( Types.ty_expr list -> 'i ) -> ( Types.type_variable -> 'j ) -> 'k
val tuple_to_record : 'a list -> (string * 'b) list
val t_string : ?loc:Types.Location.t -> unit -> Types.type_expression
val t_bytes : ?loc:Types.Location.t -> unit -> Types.type_expression
val t_int : ?loc:Types.Location.t -> unit -> Types.type_expression
val t_operation : ?loc:Types.Location.t -> unit -> Types.type_expression
val t_nat : ?loc:Types.Location.t -> unit -> Types.type_expression
val t_tez : ?loc:Types.Location.t -> unit -> Types.type_expression
val t_unit : ?loc:Types.Location.t -> unit -> Types.type_expression
val t_address : ?loc:Types.Location.t -> unit -> Types.type_expression
val t_signature : ?loc:Types.Location.t -> unit -> Types.type_expression
val t_key : ?loc:Types.Location.t -> unit -> Types.type_expression
val t_key_hash : ?loc:Types.Location.t -> unit -> Types.type_expression
val t_timestamp : ?loc:Types.Location.t -> unit -> Types.type_expression
val t_record_ez : ?loc:Types.Location.t -> (string * Types.ty_expr Types.row_element) list -> Types.type_expression
val t_sum_ez : ?loc:Types.Location.t -> (string * Types.ty_expr Types.row_element) list -> Types.type_expression
val t_bool : ?loc:Types.Location.t -> unit -> Types.type_expression
val e_timestamp : ?loc:Types.Location.t -> Types.z -> Types.expression
val e_address : ?loc:Types.Location.t -> string -> Types.expression
val e_mutez : ?loc:Types.Location.t -> Types.z -> Types.expression
val e_signature : ?loc:Types.Location.t -> string -> Types.expression
val e_key : ?loc:Types.Location.t -> string -> Types.expression
val e_key_hash : ?loc:Types.Location.t -> string -> Types.expression
val e_chain_id : ?loc:Types.Location.t -> string -> Types.expression
val e_unit : ?loc:Types.Location.t -> unit -> Types.expression
val e'_bytes : string -> expression_content
val e_bytes_hex : ?loc:Types.Location.t -> string -> Types.expression
val e_bytes_raw : ?loc:Types.Location.t -> bytes -> Types.expression
val e_bytes_string : ?loc:Types.Location.t -> string -> Types.expression
val e_constant : ?loc:Types.Location.t -> Types.constant' -> Types.expr list -> Types.expression
val e_application : ?loc:Types.Location.t -> Types.expr -> Types.expr -> Types.expression
val e_lambda_ez : ?loc:Types.Location.t -> Types.expression_variable -> ?ascr:Types.ty_expr -> ?const_or_var:[ `Const | `Var ] -> Types.ty_expr option -> Types.expr -> Types.expression
val e_let_in_ez : ?loc:Types.Location.t -> Types.expression_variable -> ?ascr:Types.ty_expr -> ?const_or_var:[ `Const | `Var ] -> bool -> Types.attributes -> Types.expression -> Types.expression -> Types.expression
val e_raw_code : ?loc:Types.Location.t -> string -> Types.expr -> Types.expression
val e_constructor : ?loc:Types.Location.t -> Types.label -> Types.expr -> Types.expression
val e_tuple : ?loc:Types.Location.t -> Types.expression list -> Types.expression
val e_skip : ?loc:Types.Location.t -> unit -> Types.expression
val e_bool : ?loc:Types.Location.t -> bool -> Types.expression
val make_option_typed : ?loc:Types.Location.t -> Types.expr -> Types.ty_expr option -> Types.expr
val e_typed_list : ?loc:Types.Location.t -> Types.expression list -> Types.ty_expr -> Types.expression
val get_e_accessor : expression_content -> (Types.expr * Types.expr Types.access list) option
val assert_e_accessor : expression_content -> unit option
val get_e_list : expression_content -> Types.expression list option
val get_e_tuple : expression_content -> Types.expression list option
val extract_pair : Types.expression -> (Types.expression * Types.expression) option
val extract_list : Types.expression -> Types.expression list option
val extract_record : Types.expression -> (Types.label * Types.expression) list option
val extract_map : Types.expression -> (Types.expression * Types.expression) list option
module Types : sig ... end
module PP : sig ... end
module Yojson : sig ... end
module Combinators : sig ... end
module Formatter : sig ... end